* frame.c, frame.h (frame_char_to_pixel_position)
(frame_set_mouse_position): Now static, and made private in frame.c rather than public in frame.h.
This commit is contained in:
parent
4d05fe986c
commit
6b5d3a5172
3 changed files with 42 additions and 32 deletions
|
@ -1,3 +1,9 @@
|
|||
2014-05-29 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* frame.c, frame.h (frame_char_to_pixel_position)
|
||||
(frame_set_mouse_position): Now static, and made private in
|
||||
frame.c rather than public in frame.h.
|
||||
|
||||
2014-05-28 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Refactor mouse positioning stuff to avoid code duplication.
|
||||
|
|
36
src/frame.c
36
src/frame.c
|
@ -1593,6 +1593,42 @@ and nil for X and Y. */)
|
|||
return Fcons (lispy_dummy, Fcons (x, y));
|
||||
}
|
||||
|
||||
#ifdef HAVE_WINDOW_SYSTEM
|
||||
|
||||
/* On frame F, convert character coordinates X and Y to pixel
|
||||
coordinates *PIX_X and *PIX_Y. */
|
||||
|
||||
static void
|
||||
frame_char_to_pixel_position (struct frame *f, int x, int y,
|
||||
int *pix_x, int *pix_y)
|
||||
{
|
||||
*pix_x = FRAME_COL_TO_PIXEL_X (f, x) + FRAME_COLUMN_WIDTH (f) / 2;
|
||||
*pix_y = FRAME_LINE_TO_PIXEL_Y (f, y) + FRAME_LINE_HEIGHT (f) / 2;
|
||||
|
||||
if (*pix_x < 0)
|
||||
*pix_x = 0;
|
||||
if (*pix_x > FRAME_PIXEL_WIDTH (f))
|
||||
*pix_x = FRAME_PIXEL_WIDTH (f);
|
||||
|
||||
if (*pix_y < 0)
|
||||
*pix_y = 0;
|
||||
if (*pix_y > FRAME_PIXEL_HEIGHT (f))
|
||||
*pix_y = FRAME_PIXEL_HEIGHT (f);
|
||||
}
|
||||
|
||||
/* On frame F, reposition mouse pointer to character coordinates X and Y. */
|
||||
|
||||
static void
|
||||
frame_set_mouse_position (struct frame *f, int x, int y)
|
||||
{
|
||||
int pix_x, pix_y;
|
||||
|
||||
frame_char_to_pixel_position (f, x, y, &pix_x, &pix_y);
|
||||
frame_set_mouse_pixel_position (f, pix_x, pix_y);
|
||||
}
|
||||
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
|
||||
DEFUN ("set-mouse-position", Fset_mouse_position, Sset_mouse_position, 3, 3, 0,
|
||||
doc: /* Move the mouse pointer to the center of character cell (X,Y) in FRAME.
|
||||
Coordinates are relative to the frame, not a window,
|
||||
|
|
32
src/frame.h
32
src/frame.h
|
@ -1353,38 +1353,6 @@ x_set_bitmap_icon (struct frame *f)
|
|||
}
|
||||
|
||||
#endif /* !HAVE_NS */
|
||||
|
||||
/* Convert character coordinates X and Y to pixel
|
||||
coordinates PIX_X and PIX_Y on frame F. */
|
||||
|
||||
INLINE void
|
||||
frame_char_to_pixel_position (struct frame *f, int x, int y, int *pix_x, int *pix_y)
|
||||
{
|
||||
*pix_x = FRAME_COL_TO_PIXEL_X (f, x) + FRAME_COLUMN_WIDTH (f) / 2;
|
||||
*pix_y = FRAME_LINE_TO_PIXEL_Y (f, y) + FRAME_LINE_HEIGHT (f) / 2;
|
||||
|
||||
if (*pix_x < 0)
|
||||
*pix_x = 0;
|
||||
if (*pix_x > FRAME_PIXEL_WIDTH (f))
|
||||
*pix_x = FRAME_PIXEL_WIDTH (f);
|
||||
|
||||
if (*pix_y < 0)
|
||||
*pix_y = 0;
|
||||
if (*pix_y > FRAME_PIXEL_HEIGHT (f))
|
||||
*pix_y = FRAME_PIXEL_HEIGHT (f);
|
||||
}
|
||||
|
||||
/* Reposition mouse pointer to character coordinates X and Y on frame F. */
|
||||
|
||||
INLINE
|
||||
void frame_set_mouse_position (struct frame *f, int x, int y)
|
||||
{
|
||||
int pix_x, pix_y;
|
||||
|
||||
frame_char_to_pixel_position (f, x, y, &pix_x, &pix_y);
|
||||
frame_set_mouse_pixel_position (f, pix_x, pix_y);
|
||||
}
|
||||
|
||||
#endif /* HAVE_WINDOW_SYSTEM */
|
||||
|
||||
INLINE void
|
||||
|
|
Loading…
Add table
Reference in a new issue