Subject: 26.3; inappropriate mouse pointer shapes

From: [email-masked]
Date: Thu, 23 Jan 2020 11:25:09 +0900

In some cases, mouse pointer shapes are not appropriate.

(1)'text shape on mode-line.
   Move the mouse pointer onto the line number in the mode-line
   at the bottom of the emacs frame.
   Move the pointer to the right SPC.
   Then the pointer shape is 'text.
   (With (setq resize-mini-windows nil), this does not occur.)

(2)'text shape on header-line.
   Evaluate the form below.
   Move the mouse pointer onto the text 'YYY'.
   Move the pointer up to the blank area of the header-line.
   Then the pointer shape is 'text.

   (let ((buf (generate-new-buffer "tmp")))
     (switch-to-buffer buf)
     (setq header-line-format "xxx")
     (insert "xxxYYY"))

(3)'hourglass shape when emacs is not busy
   Move the mouse pointer onto a text area of emacs frame.
   Do not touch the mouse afterwards.
   Evaluate the form below.
   Type 'j' to insert 'j'.
   Type 'a' to make emacs busy.
   Type Alt-Tab to switch to another application.
   Type Alt-Tab again to switch back to the emacs frame.
   Type 'C-g' to stop the busy loop.
   Then the pointer shape keep 'hourglass.

   (let ((buf (generate-new-buffer "tmp"))
         (map (make-sparse-keymap)))
     (menu-bar-mode 0)
     (switch-to-buffer buf)
     (define-key map "a"
       (lambda () (interactive) (dotimes (i 1000000000))))
     (use-local-map map))

(4)shape of 'pointer property value put on another area
   Evaluate the form below.
   Move the mouse pointer onto 'yyy'.
   Move the pointer left to 'XXX' or right to 'ZZZ'.
   Then the pointer shape keep 'hdrag.

   (let ((buf (generate-new-buffer "tmp")))
     (switch-to-buffer buf)
     (insert (propertize "XXX" 'mouse-face 'region)
             (propertize "yyy" 'mouse-face 'region 'pointer 'hdrag)
             (propertize "ZZZ" 'mouse-face 'region)))

(5)'text shape on the blank area in the echo area.
   Show any message in the echo area. For example, type 'C-g'.
   Move the mouse pointer onto the blank area of the echo area.
   Then the pointer shape is 'text.
   Even after the message is cleared with some input such as 'C-f',
   the pointer shape on the echo area may remain 'text.

(6)'text shape on an image map area with empty PLIST
   The form below inserts a image with four circles.
   Spec for a red circle has empty PLIST.
   The mouse poiter shape on the red circle is 'text.

(let ((svg (progn (require 'svg) (svg-create 200 200))))
  (svg-circle svg  50  50 50 :fill-color "red")
  (svg-circle svg 150  50 50 :fill-color "green")
  (svg-circle svg  50 150 50 :fill-color "blue")
  (svg-circle svg 150 150 50 :fill-color "yellow")
  (insert-image
   (svg-image
    svg :map '(((circle . ((50 . 50) . 50)) red-area nil)
               ((circle . ((150 . 50) . 50)) green-area (dummy "green"))
               ((circle . ((50 . 150) . 50)) blue-area (help-echo "blue"))
               ((circle . ((150 . 150) . 50)) yellow-area
                (help-echo "yellow" pointer hdrag)))))
  (put-text-property
   (1- (point)) (point) 'keymap
   (let ((map (make-sparse-keymap)))
     (dolist (color '("red" "green" "blue" "yellow"))
       (let ((area (intern (format "%s-area" color))))
         (define-key map (vector area 'mouse-1)
           `(lambda (ev) (interactive "e")
              (let ((tmp (event-end ev)))
                (message "%S" (posn-area tmp)))))))
     map)))

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29 built on CIRROCUMULUS
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor 'Microsoft Corp.', version 10.0.18363
Recent messages:

Configured using:
 'configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS THREADS LCMS2

Important settings:
  value of $LANG: JPN
  locale-coding-system: cp932

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(cl-print thingatpt cus-edit cus-start cus-load misearch multi-isearch
term/bobcat shadow emacsbug mailalias smtpmail sendmail sort mail-extr
message dired dired-loaddefs rfc822 mml mml-sec epa derived epg
epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
help-fns radix-tree pp descr-text cl-extra help-mode network-stream
starttls url-http tls gnutls mail-parse rfc2231 url-gw nsm rmc url-cache
url-auth eww easymenu puny mm-url gnus nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums mail-utils wid-edit mm-util
mail-prsvr url-queue url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars mailcap
shr svg xml seq byte-opt gv bytecomp byte-compile cconv dom browse-url
format-spec cl-loaddefs cl-lib elec-pair time-date mule-util japan-util
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars
term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads w32notify w32 lcms2 multi-tty make-network-process
emacs)

Memory information:
((conses 16 188164 148046)
 (symbols 48 50872 6)
 (miscs 40 88 497)
 (strings 32 115046 1483)
 (string-bytes 1 2563859)
 (vectors 16 25649)
 (vector-slots 8 1692784 183626)
 (floats 8 85 504)
 (intervals 56 15069 3803)
 (buffers 992 21))