[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

23.0.60; mouse click on an overlay, using overlay `keymap' property

From: Drew Adams
Subject: 23.0.60; mouse click on an overlay, using overlay `keymap' property
Date: Fri, 11 Apr 2008 12:49:46 -0700

This appears to be a bug -
From:Drew Adams Sent: Sunday, March 16, 2008 4:21 PM
Could someone please explain what's happening here, and why? How can I get
the overlay's keymap to be in effect over all of the visual (displayed) area
of the overlay?
(setq foo-map (make-sparse-keymap))
(define-key foo-map [mouse-2] 'bar)
(defun foo (beg end)
  (interactive "r")
  (let ((overlay (make-overlay beg end)))
     overlay 'display
     (propertize "xxxxxxxxx" 'face 'font-lock-constant-face))
    (overlay-put overlay 'keymap foo-map)))
(defun bar (event) (interactive "e") (message "BAR"))
Here's some text: aaaaaaaaaaaaaaaaaaaaaaa
Select one or more of the a's and do M-x foo, to apply the overlay to just
those a's.
Put point somewhere outside the displayed "xxxxxxxxx" overlay.
Click mouse-2 anywhere on the displayed "xxxxxxxxx". What happens, it seems,
is that, since point is not on the a's that have the overlay, keymap foo-map
doesn't apply. Clicking mouse-2 therefore just calls the default mouse-2
binding, e.g. mouse-yank-at-click. That sets point so that it is at the
beginning of the overlaid text, so that a second mouse-2 click on the
displayed "xxxxxxxxx" does call bar.
If that's what's happening, how can foo be defined so that a first click on
the displayed "xxxxxxxxx" calls bar?
I'm probably not understanding this well - help appreciated. I'm guessing
that the mouse click on the overlay is noted not as being a click on a
buffer position that has the overlay but on a buffer position that is under
the displayed "xxxxxxxxx" but is actually outside the text that has the
What I'm looking for is for the click to be perceived by Emacs as happening
on the overlay, and for the overlay's keymap to apply over the full extent
of the overlay, not just at its beginning, causing the overlay's keymap
binding to take effect.
[Note that I'm specifically asking about overlays here, not text properties.
I know how to create clickable text using text properties.]

In GNU Emacs (i386-mingw-nt5.1.2600)
 of 2008-04-04 on LENNART-69DE564
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (3.4) --no-opt --cflags -Ic:/g/include

reply via email to

[Prev in Thread] Current Thread [Next in Thread]