unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
@ 2023-08-07 16:46 Visuwesh
  2023-08-08  0:59 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Visuwesh @ 2023-08-07 16:46 UTC (permalink / raw)
  To: 65129

Unfortunately, I don't have a good reproducer for this but ever since
updating to master from the emacs-29 branch, pinch gestures in Emacs
frames suddenly stops being recognised.  When I do C-h k and pinch, or
view lossage, I see wheel-left and wheel-down events but no pinch event.

However, if I create a new frame and try to pinch there, it works just
fine.

I apologise again for the vague report, but I have nothing better to
offer.  So far, I haven't tried to reproduce this in an emacs -Q
session.

In GNU Emacs 30.0.50 (build 4, x86_64-pc-linux-gnu, X toolkit, Xaw
 scroll bars) of 2023-08-04 built on astatine
Repository revision: 92f9d2b43e1974bf1496e436ad49d3b687ee0d3f
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux trixie/sid

Configured using:
 'configure --with-sound=alsa --with-x-toolkit=lucid --with-json
 --without-xaw3d --without-gconf --without-libsystemd --without-cairo'
Configured features:
ACL DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON
LIBOTF LIBSELINUX LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XFT
XIM XINPUT2 XPM LUCID ZLIB
Important settings:
  value of $LC_MONETARY: ta_IN.UTF-8
  value of $LC_NUMERIC: ta_IN.UTF-8
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Article

Minor modes in effect:
  recentf-mode: t
  text-scale-mode: t
  server-mode: t
  eros-mode: t
  pdf-occur-global-minor-mode: t
  vz/random-frame-background-mode: t
  minibuffer-depth-indicate-mode: t
  repeat-mode: t
  display-time-mode: t
  display-battery-mode: t
  delete-selection-mode: t
  xterm-mouse-mode: t
  emacs-gc-stats-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  use-hard-newlines: t
  tab-bar-history-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  undelete-frame-mode: t
  buffer-read-only: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow emacsbug image-crop wdired pdf-sync pdf-outline pdf-links
pdf-history icomplete timezone url-http url-gw url-cache url-auth
ind-util goto-addr view bug-reference xref org-pdftools pdf-annot
facemenu org-noter org-num oc-basic org-element org-persist avl-tree
generator ob-gnuplot ob-fortran ob-python python compat compat-macs
ob-julia ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs ob-shell ob-racket async ob-async
cdlatex texmathp org-attach org-id org-refile ol-eww eww url-queue
mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect ol-docview
doc-view ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi org-tempo
ol-man org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src
ob-comint org-pcomplete org-list org-footnote org-faces org-entities
ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold
org-fold-core org-keys oc org-loaddefs org-version org-compat org-macs
avy proced misearch multi-isearch display-line-numbers typo inline
transmission calc-bin calc-ext calc calc-loaddefs rect calc-macs reveal
noutline outline add-log pcmpl-unix dabbrev conf-mode pulse gnus-dired
recentf tree-widget shortdoc comp comp-cstr flyspell ispell ecomplete
help-fns radix-tree smerge-mode mule-util ement-tabulated-room-list
ement ement-notify ement-room dns ement-room-list ement-lib ement-api
ement-structs plz ement-macros taxy-magit-section magit-section
benchmark taxy svg-lib color persist flow-fill qp sort gnus-cite
mm-archive mail-extr textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check gnus-async gnus-bcklg gnus-ml
network-stream nsm nndraft nnmh nndoc nnmaildir nnagent nnml vc-backup
log-view pcvs-util vc diff vc-git diff-mode vc-dispatcher nnnil
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art
mm-uu mml2015 mm-view mml-smime smime gnutls dig nntp gnus-cache
gnus-sum shr pixel-fill kinsoku url-file svg gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range message sendmail yank-media puny rfc822
mml mml-sec epa epg rfc6068 epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range mm-util
mail-prsvr face-remap sh-script smie treesit executable rfc2104
tramp-cmds tramp-cache time-stamp shell-command+ cursor-sensor server
paredit edmacro kmacro eros checkdoc lisp-mnt flymake-proc flymake
project warnings thingatpt notifications wordel-autoloads
mines-autoloads sokoban-autoloads ement-autoloads svg-lib-autoloads
taxy-magit-section-autoloads magit-section-autoloads dash-autoloads
taxy-autoloads persist-autoloads plz-autoloads nov-autoloads
esxml-autoloads kv-autoloads transmission-autoloads csv-mode-autoloads
lua-mode-autoloads nix-mode-autoloads gnuplot-autoloads
go-mode-autoloads racket-mode-autoloads eros-autoloads
writegood-mode-autoloads siege-mode-autoloads paredit-autoloads
puni-autoloads expand-region-autoloads filladapt-autoloads compose
scroll-other-window org-pdftools-autoloads org-noter-autoloads
change-env-autoloads math-delimiters-autoloads doct-autoloads
ob-async-autoloads async-autoloads emacs-ob-racket-autoloads
valign-autoloads cdlatex-autoloads auctex-autoloads tex-site tempo
pdf-occur ibuf-ext ibuffer ibuffer-loaddefs tablist advice
tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
let-alist pdf-misc imenu pdf-tools package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
url-vars compile cus-edit wid-edit pdf-view jka-compr pdf-cache pdf-info
tq pdf-util pdf-macs image-mode exif pdf-tools-autoloads
tablist-autoloads typo-autoloads mb-depth repeat visual-fill-autoloads
olivetti-autoloads time battery filenotify dom tamil99 quail disp-table
lacarte-autoloads shell-command-plus-autoloads icons delsel xt-mouse
cus-load avy-autoloads skeleton icalendar diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs dired-du-autoloads finder-inf dired-x
filecache imenu-xref-autoloads ert ewoc debug backtrace find-func dbus
xml derived chemtable-autoloads molar-mass-autoloads vc-backup-autoloads
compat-autoloads saveplace-pdf-view saveplace tramp-sh tramp trampver
tramp-integration files-x tramp-message tramp-compat xdg shell pcomplete
comint ansi-osc ring parse-time iso8601 time-date format-spec
auth-source eieio eieio-core password-cache json map byte-opt ansi-color
tramp-loaddefs bookmark text-property-search pp
saveplace-pdf-view-autoloads rx inspector-autoloads xr-autoloads
emacs-gc-stats easy-mmode pcase dired-aux dired dired-loaddefs
emacs-gc-stats-autoloads straight-autoloads cl-seq info cl-extra
help-mode straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile vz-nh-theme vz-options-theme rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting x-toolkit
xinput2 x multi-tty move-toolbar make-network-process emacs)

Memory information:
((conses 16 2116230 838627) (symbols 48 56857 735)
 (strings 32 338567 22862) (string-bytes 1 102822237)
 (vectors 16 144418) (vector-slots 8 2567768 204036)
 (floats 8 84125 3751) (intervals 56 97617 1520) (buffers 976 105))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-07 16:46 bug#65129: 30.0.50; pinch gestures suddenly stops being recognised Visuwesh
@ 2023-08-08  0:59 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-09  9:38   ` Visuwesh
  0 siblings, 1 reply; 8+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-08  0:59 UTC (permalink / raw)
  To: Visuwesh; +Cc: 65129

Visuwesh <visuweshm@gmail.com> writes:

> Unfortunately, I don't have a good reproducer for this but ever since
> updating to master from the emacs-29 branch, pinch gestures in Emacs
> frames suddenly stops being recognised.  When I do C-h k and pinch, or
> view lossage, I see wheel-left and wheel-down events but no pinch event.
>
> However, if I create a new frame and try to pinch there, it works just
> fine.
>
> I apologise again for the vague report, but I have nothing better to
> offer.  So far, I haven't tried to reproduce this in an emacs -Q
> session.

No worries there, please instrument handle_one_xevent like so:

diff --git a/src/xterm.c b/src/xterm.c
index f454733c659..57b06c571f6 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -24722,6 +24722,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 	      x_display_set_last_user_time (dpyinfo, pev->time,
 					    pev->send_event, true);
 
+	      if (device)
+		fprintf (stderr, "XI_GesturePinchBegin: %d\n", device->use);
+	      else
+		fprintf (stderr, "XI_GesturePinchBegin: no device\n");
+
 	      if (!device || device->use != XIMasterPointer)
 		goto XI_OTHER;
 
and show us what is printed when you attempt a pinch gesture after they
cease being delivered.





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-08  0:59 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-09  9:38   ` Visuwesh
  2023-08-09  9:47     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Visuwesh @ 2023-08-09  9:38 UTC (permalink / raw)
  To: Po Lu; +Cc: 65129

[Tuesday August 08, 2023] Po Lu wrote:

> No worries there, please instrument handle_one_xevent like so:
>
> diff --git a/src/xterm.c b/src/xterm.c
> index f454733c659..57b06c571f6 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -24722,6 +24722,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
>  	      x_display_set_last_user_time (dpyinfo, pev->time,
>  					    pev->send_event, true);
>  
> +	      if (device)
> +		fprintf (stderr, "XI_GesturePinchBegin: %d\n", device->use);
> +	      else
> +		fprintf (stderr, "XI_GesturePinchBegin: no device\n");
> +
>  	      if (!device || device->use != XIMasterPointer)
>  		goto XI_OTHER;
>  
> and show us what is printed when you attempt a pinch gesture after they
> cease being delivered.

I see nothing being printed once pinch gestures stop being recognised.
I see XI_GesturePinchBegin: 1 a whole bunch of times when they still
work though.
I confirmed that it is printed once again by opening a new frame and
trying the gesture there once it ceased recognised in the original
frame.

P.S., to confirm that I did apply the patch correctly, this is under
"case XI_GesturePinchUpdate:" under handle_one_xevent function right?
When I tried C-c C-a from a diff buffer, I got prompted

    Try to auto-fix whitespace loss? (y or n)

(to which I said yes) so I am not so confident that the patch applied
correctly.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-09  9:38   ` Visuwesh
@ 2023-08-09  9:47     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-09 10:00       ` Visuwesh
  0 siblings, 1 reply; 8+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-09  9:47 UTC (permalink / raw)
  To: Visuwesh; +Cc: 65129

Visuwesh <visuweshm@gmail.com> writes:

> I see nothing being printed once pinch gestures stop being recognised.
> I see XI_GesturePinchBegin: 1 a whole bunch of times when they still
> work though.
> I confirmed that it is printed once again by opening a new frame and
> trying the gesture there once it ceased recognised in the original
> frame.

Yes, thanks.

> P.S., to confirm that I did apply the patch correctly, this is under
> "case XI_GesturePinchUpdate:" under handle_one_xevent function right?
> When I tried C-c C-a from a diff buffer, I got prompted
>
>     Try to auto-fix whitespace loss? (y or n)
>
> (to which I said yes) so I am not so confident that the patch applied
> correctly.

Does gesture recognition cease immediately subsequent to displaying a
toolkit menu?

Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-09  9:47     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-09 10:00       ` Visuwesh
  2023-08-09 12:37         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Visuwesh @ 2023-08-09 10:00 UTC (permalink / raw)
  To: Po Lu; +Cc: 65129

[Wednesday August 09, 2023] Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:

>> P.S., to confirm that I did apply the patch correctly, this is under
>> "case XI_GesturePinchUpdate:" under handle_one_xevent function right?
>> When I tried C-c C-a from a diff buffer, I got prompted
>>
>>     Try to auto-fix whitespace loss? (y or n)
>>
>> (to which I said yes) so I am not so confident that the patch applied
>> correctly.
>
> Does gesture recognition cease immediately subsequent to displaying a
> toolkit menu?

Yes, you are right!

> Thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-09 10:00       ` Visuwesh
@ 2023-08-09 12:37         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-08-09 13:43           ` Visuwesh
  0 siblings, 1 reply; 8+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-09 12:37 UTC (permalink / raw)
  To: Visuwesh; +Cc: 65129

Visuwesh <visuweshm@gmail.com> writes:

> [Wednesday August 09, 2023] Po Lu via "Bug reports for GNU Emacs, the Swiss army knife of text editors" wrote:
>
>>> P.S., to confirm that I did apply the patch correctly, this is under
>>> "case XI_GesturePinchUpdate:" under handle_one_xevent function right?
>>> When I tried C-c C-a from a diff buffer, I got prompted
>>>
>>>     Try to auto-fix whitespace loss? (y or n)
>>>
>>> (to which I said yes) so I am not so confident that the patch applied
>>> correctly.
>>
>> Does gesture recognition cease immediately subsequent to displaying a
>> toolkit menu?
>
> Yes, you are right!
>
>> Thanks.

Does the following patch fix your problem?

diff --git a/src/xmenu.c b/src/xmenu.c
index 6d32aa3e078..d4b5b385e11 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1680,6 +1680,19 @@ leave_toolkit_menu (void *data)
   XISetMask (m, XI_Enter);
   XISetMask (m, XI_Leave);
 
+#ifdef HAVE_XINPUT2_4
+  /* Select for gesture events.  Emacs selects for gesture events from
+     all master devices on non-GTK3 builds, so that event mask is also
+     clobbered by prepare_for_entry_into_toolkit_menu.  (bug#65129) */
+
+  if (dpyinfo->xi2_version >= 4)
+    {
+      XISetMask (m, XI_GesturePinchBegin);
+      XISetMask (m, XI_GesturePinchUpdate);
+      XISetMask (m, XI_GesturePinchEnd);
+    }
+#endif /* HAVE_XINPUT2_4 */
+
   FOR_EACH_FRAME (tail, frame)
     {
       f = XFRAME (frame);





^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-09 12:37         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-08-09 13:43           ` Visuwesh
  2023-08-10  0:38             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 8+ messages in thread
From: Visuwesh @ 2023-08-09 13:43 UTC (permalink / raw)
  To: Po Lu; +Cc: 65129

[Wednesday August 09, 2023] Po Lu wrote:

> Does the following patch fix your problem?

Yes, it does.  Thanks!

> diff --git a/src/xmenu.c b/src/xmenu.c
> index 6d32aa3e078..d4b5b385e11 100644
> --- a/src/xmenu.c
> +++ b/src/xmenu.c
> @@ -1680,6 +1680,19 @@ leave_toolkit_menu (void *data)
>    XISetMask (m, XI_Enter);
>    XISetMask (m, XI_Leave);
>  
> +#ifdef HAVE_XINPUT2_4
> +  /* Select for gesture events.  Emacs selects for gesture events from
> +     all master devices on non-GTK3 builds, so that event mask is also
> +     clobbered by prepare_for_entry_into_toolkit_menu.  (bug#65129) */
> +
> +  if (dpyinfo->xi2_version >= 4)
> +    {
> +      XISetMask (m, XI_GesturePinchBegin);
> +      XISetMask (m, XI_GesturePinchUpdate);
> +      XISetMask (m, XI_GesturePinchEnd);
> +    }
> +#endif /* HAVE_XINPUT2_4 */
> +
>    FOR_EACH_FRAME (tail, frame)
>      {
>        f = XFRAME (frame);





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#65129: 30.0.50; pinch gestures suddenly stops being recognised
  2023-08-09 13:43           ` Visuwesh
@ 2023-08-10  0:38             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 8+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-08-10  0:38 UTC (permalink / raw)
  To: Visuwesh; +Cc: 65129-done

Visuwesh <visuweshm@gmail.com> writes:

> [Wednesday August 09, 2023] Po Lu wrote:
>
>> Does the following patch fix your problem?
>
> Yes, it does.  Thanks!
>
>> diff --git a/src/xmenu.c b/src/xmenu.c
>> index 6d32aa3e078..d4b5b385e11 100644
>> --- a/src/xmenu.c
>> +++ b/src/xmenu.c
>> @@ -1680,6 +1680,19 @@ leave_toolkit_menu (void *data)
>>    XISetMask (m, XI_Enter);
>>    XISetMask (m, XI_Leave);
>>  
>> +#ifdef HAVE_XINPUT2_4
>> +  /* Select for gesture events.  Emacs selects for gesture events from
>> +     all master devices on non-GTK3 builds, so that event mask is also
>> +     clobbered by prepare_for_entry_into_toolkit_menu.  (bug#65129) */
>> +
>> +  if (dpyinfo->xi2_version >= 4)
>> +    {
>> +      XISetMask (m, XI_GesturePinchBegin);
>> +      XISetMask (m, XI_GesturePinchUpdate);
>> +      XISetMask (m, XI_GesturePinchEnd);
>> +    }
>> +#endif /* HAVE_XINPUT2_4 */
>> +
>>    FOR_EACH_FRAME (tail, frame)
>>      {
>>        f = XFRAME (frame);

I'll install this shortly, and am closing this bug.





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-08-10  0:38 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-07 16:46 bug#65129: 30.0.50; pinch gestures suddenly stops being recognised Visuwesh
2023-08-08  0:59 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-09  9:38   ` Visuwesh
2023-08-09  9:47     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-09 10:00       ` Visuwesh
2023-08-09 12:37         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-09 13:43           ` Visuwesh
2023-08-10  0:38             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).