emacs-devel
[Top][All Lists]
Advanced

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

mouse-face property and pointer property makes pointer change back and f


From: Mauro Aranda
Subject: mouse-face property and pointer property makes pointer change back and forth
Date: Tue, 28 Jan 2025 20:29:08 -0300
User-agent: Mozilla Thunderbird

I'm trying to tackle this wishlist item for the Widget library:
* Find a way to disable mouse highlight for inactive widgets.

There are still details, but I think I have most of it working.

But there's this comment by Per from 1997:
;; This is disabled, as it makes the mouse cursor change shape.
;; (overlay-put overlay 'mouse-face 'widget-inactive)

And here's a minimal example, without using widgets, that
shows what I think Per saw:

After emacs -Q:

(defun my-test ()
  (interactive)
  (switch-to-buffer "*Test*")
  (kill-all-local-variables)
  (make-local-variable 'widget-example-repeat)
  (let ((inhibit-read-only t))
    (erase-buffer))
  (remove-overlays)
  (insert "TEST")
  (let ((ov (make-overlay (point-min) (point-max))))
    (overlay-put ov 'pointer 'hand))
  (let ((ov (make-overlay (point-min) (point-max))))
    (overlay-put ov 'pointer 'arrow)
    (overlay-put ov 'mouse-face 'shadow)
    (overlay-put ov 'priority 110))
  (insert "\nText without overlay"))

With point not at TEST, if I hover TEST, I see
an arrow pointer, and no trouble.

When point at TEST (it doesn't matter if by clicking or
with M-<, for example), if I hover TEST: I see
the pointer changing back from arrow to something,
I don't know what it is.

Now turn off cursor blinking:
M-x blink-cursor-mode

I see the back and forth change but only once.

If I comment out the pointer properties, when I hover
TEST the pointer changes to hand.

My guess is that there's a conflict with specifying
arrow as the pointer together with specifying
a mouse-face, but I didn't see anything in the
manual that indicates that the pointer is always
hand if there's a mouse-face property.

i took a look at xdisp.c and maybe show_mouse_face
draws the hand pointer unconditionally.  I know
nothing about xdisp.c though.  Any ideas?




reply via email to

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