* lisp/mouse.el (mouse-posn-property): Ignore buffer position info when the
even happened elsewhere. * src/keyboard.c (make_lispy_position): Don't include a buffer position in mode/header-line mouse events.
This commit is contained in:
parent
79b0d21638
commit
631de55bc1
3 changed files with 15 additions and 13 deletions
|
|
@ -684,10 +684,11 @@ its value is returned."
|
|||
(str (posn-string pos)))
|
||||
(or (and str
|
||||
(get-text-property (cdr str) property (car str)))
|
||||
;; FIXME: mouse clicks on the mode-line come with a position in
|
||||
;; (nth 5). Maybe we should change the C code instead so that
|
||||
;; mouse-clicks don't include a position there!
|
||||
(and pt (not (memq (posn-area pos) '(mode-line header-line)))
|
||||
;; Mouse clicks in the fringe come with a position in
|
||||
;; (nth 5). This is useful but is not exactly where we clicked, so
|
||||
;; don't look up that position's properties!
|
||||
(and pt (not (memq (posn-area pos) '(left-fringe right-fringe
|
||||
left-margin right-margin)))
|
||||
(get-char-property pt property w))))
|
||||
(get-char-property pos property)))
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
2014-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* keyboard.c (make_lispy_position): Don't include a buffer position in
|
||||
mode/header-line mouse events.
|
||||
|
||||
* keyboard.c (read_char): Handle (t . <event>) in the second use of
|
||||
Vunread_command_events (bug#17650).
|
||||
|
||||
|
|
|
|||
|
|
@ -2465,7 +2465,7 @@ read_char (int commandflag, Lisp_Object map,
|
|||
inside universal-argument. */
|
||||
|
||||
if (CONSP (c) && EQ (XCAR (c), Qt))
|
||||
c = XCDR (c);
|
||||
c = XCDR (c);
|
||||
else
|
||||
reread = true;
|
||||
|
||||
|
|
@ -5228,7 +5228,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
/* It's a click in window WINDOW at frame coordinates (X,Y) */
|
||||
struct window *w = XWINDOW (window);
|
||||
Lisp_Object string_info = Qnil;
|
||||
ptrdiff_t textpos = -1;
|
||||
ptrdiff_t textpos = 0;
|
||||
int col = -1, row = -1;
|
||||
int dx = -1, dy = -1;
|
||||
int width = -1, height = -1;
|
||||
|
|
@ -5263,9 +5263,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
&object, &dx, &dy, &width, &height);
|
||||
if (STRINGP (string))
|
||||
string_info = Fcons (string, make_number (charpos));
|
||||
textpos = (w == XWINDOW (selected_window)
|
||||
&& current_buffer == XBUFFER (w->contents))
|
||||
? PT : marker_position (w->pointm);
|
||||
textpos = -1;
|
||||
|
||||
xret = wx;
|
||||
yret = wy;
|
||||
|
|
@ -5333,7 +5331,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
/* For clicks in the text area, fringes, or margins, call
|
||||
buffer_posn_from_coords to extract TEXTPOS, the buffer
|
||||
position nearest to the click. */
|
||||
if (textpos < 0)
|
||||
if (!textpos)
|
||||
{
|
||||
Lisp_Object string2, object2 = Qnil;
|
||||
struct display_pos p;
|
||||
|
|
@ -5384,15 +5382,15 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y,
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Object info */
|
||||
/* Object info. */
|
||||
extra_info
|
||||
= list3 (object,
|
||||
Fcons (make_number (dx), make_number (dy)),
|
||||
Fcons (make_number (width), make_number (height)));
|
||||
|
||||
/* String info */
|
||||
/* String info. */
|
||||
extra_info = Fcons (string_info,
|
||||
Fcons (make_number (textpos),
|
||||
Fcons (textpos < 0 ? Qnil : make_number (textpos),
|
||||
Fcons (Fcons (make_number (col),
|
||||
make_number (row)),
|
||||
extra_info)));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue