* 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).