Fix and document components of mouse event position.

src/keyboard.c (make_lispy_position): Put a meaningful value in yret
 when the click is on the header or mode line.
 doc/lispref/commands.texi (Click Events): Document the values of X, Y and
 COL, ROW in the event's position, when the click is on the header or
 mode line, on the fringes, or in the margins.
This commit is contained in:
Eli Zaretskii 2010-11-26 20:15:09 +02:00
parent f5462bae4e
commit 8547874a7c
4 changed files with 28 additions and 7 deletions

View file

@ -1,3 +1,9 @@
2010-11-26 Eli Zaretskii <eliz@gnu.org>
* commands.texi (Click Events): Document the values of X, Y and
COL, ROW in the event's position, when the click is on the header
or mode line, on the fringes, or in the margins.
2010-11-17 Eli Zaretskii <eliz@gnu.org>
* customize.texi (Composite Types): Lower-case index entry.

View file

@ -1285,8 +1285,12 @@ input stream. @xref{Key Sequence Input}.
@item @var{x}, @var{y}
These are the pixel coordinates of the click, relative to
the top left corner of @var{window}, which is @code{(0 . 0)}.
For the mode or header line, @var{y} does not have meaningful data.
For the vertical line, @var{x} does not have meaningful data.
For a click on text, these are relative to the top left corner of
the window's text area. For the mode or header line, they are
relative to the top left window edge. For fringes, margins, and the
vertical border, @var{x} does not have meaningful data. For fringes
and margins, @var{y} is relative to the bottom edge of the header
line.
@item @var{timestamp}
This is the time at which the event occurred, in milliseconds.
@ -1316,7 +1320,12 @@ the window.
@item @var{col}, @var{row}
These are the actual coordinates of the glyph under the @var{x},
@var{y} position, possibly padded with default character width
glyphs if @var{x} is beyond the last glyph on the line.
glyphs if @var{x} is beyond the last glyph on the line. For clicks on
the header or mode line, these are measured from the top left edge of
the header or mode line. For clicks on the fringes and on the
vertical border, these have no meaningful data. For clicks on the
margins, @var{col} is measured from the left edge of the margin area
and @var{row} is measured from the top of the margin area.
@item @var{image}
This is the image object on which the click occurred. It is either
@ -1333,7 +1342,7 @@ left corner of the character glyph clicked on.
These are the pixel width and height of @var{object} or, if this is
@code{nil}, those of the character glyph clicked on.
@end table
@sp 1
For mouse clicks on a scroll-bar, @var{position} has this form:

View file

@ -1,3 +1,8 @@
2010-11-26 Eli Zaretskii <eliz@gnu.org>
* keyboard.c (make_lispy_position): Put a meaningful value in yret
when the click is on the header or mode line.
2010-11-25 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (set_cursor_from_row): Don't forget to consider the

View file

@ -5283,9 +5283,9 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
xret = XINT (x) - window_box_left (w, TEXT_AREA);
yret = wy - WINDOW_HEADER_LINE_HEIGHT (w);
}
/* For mode line and header line clicks, return X relative to
the left window edge; ignore Y. Use mode_line_string to look
for a string on the click position. */
/* For mode line and header line clicks, return X, Y relative to
the left window edge. Use mode_line_string to look for a
string on the click position. */
else if (part == ON_MODE_LINE || part == ON_HEADER_LINE)
{
Lisp_Object string;
@ -5305,6 +5305,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
? PT : XMARKER (w->pointm)->charpos;
xret = wx;
yret = wy;
}
/* For fringes and margins, Y is relative to the area's (and the
window's) top edge, while X is meaningless. */