Revert "Simplify absolute (x, y) computation on ttys"

This reverts commit 5e132835ad.
This commit is contained in:
Gerd Möllmann 2025-01-25 09:39:56 +01:00
parent 65036323fc
commit 13fdcd730f
3 changed files with 15 additions and 13 deletions

View file

@ -3958,7 +3958,7 @@ void combine_updates (Lisp_Object root_frames);
void combine_updates_for_frame (struct frame *f, bool inhibit_id_p);
void tty_raise_lower_frame (struct frame *f, bool raise);
int max_child_z_order (struct frame *parent);
void root_xy (struct frame *f, int x, int y, int *rx, int *ry);
void frame_pos_abs (struct frame *f, int *x, int *y);
bool is_frame_ancestor (struct frame *f1, struct frame *f2);
INLINE_HEADER_END

View file

@ -3313,18 +3313,16 @@ rect_intersect (struct rect *r, struct rect r1, struct rect r2)
return true;
}
/* Translate (X, Y) relative to frame F to absolute coordinates
in (*X, *Y). */
/* Return the absolute position of frame F in *X and *Y. */
void
root_xy (struct frame *f, int x, int y, int *rx, int *ry)
frame_pos_abs (struct frame *f, int *x, int *y)
{
*rx = x;
*ry = y;
*x = *y = 0;
for (; f; f = FRAME_PARENT_FRAME (f))
{
*rx += f->left_pos;
*ry += f->top_pos;
*x += f->left_pos;
*y += f->top_pos;
}
}
@ -3335,7 +3333,7 @@ static struct rect
frame_rect_abs (struct frame *f)
{
int x, y;
root_xy (f, 0, 0, &x, &y);
frame_pos_abs (f, &x, &y);
return (struct rect) { x, y, f->total_cols, f->total_lines };
}
@ -3877,7 +3875,10 @@ abs_cursor_pos (struct frame *f, int *x, int *y)
wx += max (0, w->left_margin_cols);
root_xy (f, wx, wy, x, y);
int fx, fy;
frame_pos_abs (f, &fx, &fy);
*x = fx + wx;
*y = fy + wy;
return true;
}

View file

@ -2996,9 +2996,10 @@ mouse_get_xy (int *x, int *y)
struct frame *sf = SELECTED_FRAME ();
if (f == sf || is_frame_ancestor (sf, f))
{
int mx = XFIXNUM (XCAR (XCDR (mouse)));
int my = XFIXNUM (XCDR (XCDR (mouse)));
root_xy (f, mx, my, x, y);
int fx, fy;
frame_pos_abs (f, &fx, &fy);
*x = fx + XFIXNUM (XCAR (XCDR (mouse)));
*y = fy + XFIXNUM (XCDR (XCDR (mouse)));
}
}