From: Aaron Jensen <aaronjensen@gmail.com>
To: martin rudalics <rudalics@gmx.at>
Cc: Alan Third <alan@idiocy.org>, Eli Zaretskii <eliz@gnu.org>,
Gregory Heytings <gregory@heytings.org>,
emacs-devel@gnu.org
Subject: Re: input-pending-p after make-frame-visible
Date: Sat, 16 Oct 2021 13:14:01 -0400 [thread overview]
Message-ID: <CAHyO48zGFfkM29opFVXW7P72qzACznVG8Zfsg4e3Tz2f_TXGwA@mail.gmail.com> (raw)
In-Reply-To: <3205a073-a6ca-b9a5-3834-929025b70b7b@gmx.at>
[-- Attachment #1: Type: text/plain, Size: 614 bytes --]
On Sat, Oct 16, 2021 at 12:49 PM martin rudalics <rudalics@gmx.at> wrote:
>
> > Does the attached patch seem reasonable? It fixes the issue for me.
>
> It might be what I've been intuitively missing in my prior patch. But
> my ignorance in this matter is too great to make any useful statement.
>
> > Please review for code style and commit message style, I'm still a
> > neophyte with that here.
>
> The only thing I can mention is to move the && to the next line in
>
> + if (!((flags & READABLE_EVENTS_FILTER_EVENTS) &&
> + while_no_input_ignored_event (event))
Thanks, updated.
[-- Attachment #2: 0001-Ignore-events-in-input-pending-p.patch --]
[-- Type: application/octet-stream, Size: 3813 bytes --]
From 048fb7307fb50828657b7fe3e4ef866c0a8764ed Mon Sep 17 00:00:00 2001
From: Aaron Jensen <aaronjensen@gmail.com>
Date: Sat, 16 Oct 2021 11:03:50 -0400
Subject: [PATCH] Ignore events in input-pending-p
* keyboard.c (while_no_input_ignored_event): New predicate function.
(kbd_buffer_store_buffered_event): Use `while_no_input_ignored_event'.
(readable_events): Use `while_no_input_ignored_event' if
`READABLE_EVENTS_FILTER_EVENTS' is set. Disregard
`USE_TOOLKIT_SCROLL_BARS' when considering whether or not to ignore
events as it is unclear why it was considered in the first place.
---
src/keyboard.c | 56 +++++++++++++++++++++++++++-----------------------
1 file changed, 30 insertions(+), 26 deletions(-)
diff --git a/src/keyboard.c b/src/keyboard.c
index be9fad3ac3..f6f9b5ded7 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -375,6 +375,7 @@ #define READABLE_EVENTS_IGNORE_SQUEEZABLES (1 << 2)
static void deliver_user_signal (int);
static char *find_user_signal_name (int);
static void store_user_signal_events (void);
+static bool while_no_input_ignored_event (union buffered_input_event *event);
/* Advance or retreat a buffered input event pointer. */
@@ -3460,12 +3461,8 @@ readable_events (int flags)
do
{
- if (!(
-#ifdef USE_TOOLKIT_SCROLL_BARS
- (flags & READABLE_EVENTS_FILTER_EVENTS) &&
-#endif
- (event->kind == FOCUS_IN_EVENT
- || event->kind == FOCUS_OUT_EVENT))
+ if (!((flags & READABLE_EVENTS_FILTER_EVENTS)
+ && while_no_input_ignored_event (event))
#ifdef USE_TOOLKIT_SCROLL_BARS
&& !((flags & READABLE_EVENTS_IGNORE_SQUEEZABLES)
&& (event->kind == SCROLL_BAR_CLICK_EVENT
@@ -3647,29 +3644,10 @@ kbd_buffer_store_buffered_event (union buffered_input_event *event,
#endif /* subprocesses */
}
- Lisp_Object ignore_event;
-
- switch (event->kind)
- {
- case FOCUS_IN_EVENT: ignore_event = Qfocus_in; break;
- case FOCUS_OUT_EVENT: ignore_event = Qfocus_out; break;
- case HELP_EVENT: ignore_event = Qhelp_echo; break;
- case ICONIFY_EVENT: ignore_event = Qiconify_frame; break;
- case DEICONIFY_EVENT: ignore_event = Qmake_frame_visible; break;
- case SELECTION_REQUEST_EVENT: ignore_event = Qselection_request; break;
-#ifdef USE_FILE_NOTIFY
- case FILE_NOTIFY_EVENT: ignore_event = Qfile_notify; break;
-#endif
-#ifdef HAVE_DBUS
- case DBUS_EVENT: ignore_event = Qdbus_event; break;
-#endif
- default: ignore_event = Qnil; break;
- }
-
/* If we're inside while-no-input, and this event qualifies
as input, set quit-flag to cause an interrupt. */
if (!NILP (Vthrow_on_input)
- && NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events)))
+ && !while_no_input_ignored_event (event))
Vquit_flag = Vthrow_on_input;
}
@@ -11627,6 +11605,32 @@ init_while_no_input_ignore_events (void)
return events;
}
+static bool
+while_no_input_ignored_event (union buffered_input_event *event)
+{
+ Lisp_Object ignore_event;
+
+ switch (event->kind)
+ {
+ case FOCUS_IN_EVENT: ignore_event = Qfocus_in; break;
+ case FOCUS_OUT_EVENT: ignore_event = Qfocus_out; break;
+ case HELP_EVENT: ignore_event = Qhelp_echo; break;
+ case ICONIFY_EVENT: ignore_event = Qiconify_frame; break;
+ case DEICONIFY_EVENT: ignore_event = Qmake_frame_visible; break;
+ case SELECTION_REQUEST_EVENT: ignore_event = Qselection_request; break;
+#ifdef USE_FILE_NOTIFY
+ case FILE_NOTIFY_EVENT: ignore_event = Qfile_notify; break;
+#endif
+#ifdef HAVE_DBUS
+ case DBUS_EVENT: ignore_event = Qdbus_event; break;
+#endif
+ default: ignore_event = Qnil; break;
+ }
+
+
+ return !NILP (Fmemq (ignore_event, Vwhile_no_input_ignore_events));
+}
+
static void syms_of_keyboard_for_pdumper (void);
void
--
2.33.0
next prev parent reply other threads:[~2021-10-16 17:14 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-24 17:12 input-pending-p after make-frame-visible Aaron Jensen
2021-09-26 9:11 ` martin rudalics
2021-09-26 14:02 ` Aaron Jensen
2021-09-26 17:50 ` martin rudalics
2021-09-26 23:55 ` Aaron Jensen
2021-09-27 8:51 ` martin rudalics
2021-09-27 9:46 ` Aaron Jensen
2021-09-27 17:14 ` martin rudalics
2021-09-27 18:57 ` Eli Zaretskii
2021-09-28 7:41 ` martin rudalics
2021-09-28 8:06 ` Eli Zaretskii
2021-09-29 9:28 ` martin rudalics
2021-09-29 12:06 ` Eli Zaretskii
2021-09-29 12:16 ` Aaron Jensen
2021-09-29 13:13 ` Eli Zaretskii
2021-09-29 14:16 ` Aaron Jensen
2021-09-29 15:42 ` Eli Zaretskii
2021-10-01 17:31 ` Aaron Jensen
2021-10-01 17:55 ` Eli Zaretskii
2021-10-01 17:57 ` Eli Zaretskii
2021-10-01 18:25 ` Aaron Jensen
2021-10-03 19:33 ` Aaron Jensen
2021-10-03 20:55 ` Aaron Jensen
2021-10-03 21:22 ` Gregory Heytings
2021-10-04 1:38 ` Aaron Jensen
2021-10-04 8:29 ` martin rudalics
2021-10-04 11:04 ` Gregory Heytings
2021-10-04 15:00 ` Aaron Jensen
2021-10-04 20:37 ` Alan Third
2021-10-04 22:12 ` Aaron Jensen
2021-10-05 15:47 ` Alan Third
2021-10-14 11:15 ` Aaron Jensen
2021-10-14 11:32 ` Aaron Jensen
2021-10-14 12:42 ` martin rudalics
2021-10-14 23:04 ` Aaron Jensen
2021-10-15 7:05 ` martin rudalics
2021-10-15 11:30 ` Aaron Jensen
2021-10-16 7:54 ` martin rudalics
2021-10-16 14:16 ` Aaron Jensen
2021-10-16 14:45 ` Aaron Jensen
2021-10-16 15:09 ` Aaron Jensen
2021-10-16 16:49 ` martin rudalics
2021-10-16 17:14 ` Aaron Jensen [this message]
2021-10-20 15:27 ` Aaron Jensen
2021-10-20 16:41 ` Eli Zaretskii
2021-10-20 17:15 ` Aaron Jensen
2021-10-20 17:40 ` Eli Zaretskii
2021-10-20 17:47 ` Aaron Jensen
2021-10-20 18:24 ` Eli Zaretskii
2021-10-20 18:55 ` Aaron Jensen
2021-10-20 19:04 ` Eli Zaretskii
2021-10-20 20:00 ` Aaron Jensen
2021-10-21 6:02 ` Eli Zaretskii
2021-10-21 6:58 ` YAMAMOTO Mitsuharu
2021-10-21 7:47 ` Eli Zaretskii
2021-10-21 11:25 ` Aaron Jensen
2021-10-21 11:33 ` Aaron Jensen
2021-10-21 12:40 ` Stefan Monnier
2021-10-21 13:44 ` Eli Zaretskii
2021-10-21 14:07 ` Aaron Jensen
2021-10-21 17:36 ` Eli Zaretskii
2021-10-21 17:46 ` Aaron Jensen
2021-10-21 18:04 ` Eli Zaretskii
2021-10-21 20:27 ` Aaron Jensen
2021-10-22 2:28 ` Aaron Jensen
2021-10-22 6:10 ` Eli Zaretskii
2021-10-22 13:58 ` Aaron Jensen
2021-10-26 13:23 ` Aaron Jensen
2021-10-26 14:05 ` Eli Zaretskii
2021-10-28 15:51 ` Eli Zaretskii
2021-10-28 18:12 ` Aaron Jensen
2021-10-28 18:20 ` Eli Zaretskii
2021-10-31 10:33 ` Alan Third
2021-10-31 16:42 ` Aaron Jensen
2021-10-21 13:40 ` Eli Zaretskii
2021-10-15 17:32 ` Alan Third
2021-10-15 17:54 ` Stefan Monnier
2021-10-15 18:28 ` Aaron Jensen
2021-10-04 8:28 ` martin rudalics
2021-09-27 19:26 ` Stefan Monnier
2021-09-27 23:02 ` Aaron Jensen
2021-09-28 2:29 ` Aaron Jensen
2021-09-29 5:10 ` Aaron Jensen
2021-09-29 9:28 ` martin rudalics
2021-09-28 5:50 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAHyO48zGFfkM29opFVXW7P72qzACznVG8Zfsg4e3Tz2f_TXGwA@mail.gmail.com \
--to=aaronjensen@gmail.com \
--cc=alan@idiocy.org \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=gregory@heytings.org \
--cc=rudalics@gmx.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).