[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/pgtk d899fc1 087/100: Fix tooltips don't hide on events
From: |
Yuuki Harano |
Subject: |
feature/pgtk d899fc1 087/100: Fix tooltips don't hide on events |
Date: |
Tue, 24 Nov 2020 08:02:44 -0500 (EST) |
branch: feature/pgtk
commit d899fc11f6a5f55fdb215ad88b183a75123218ae
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
Fix tooltips don't hide on events
* src/pgtkterm.c: New variable to indicate whether any event occurs.
(configure_event): Clear help string on a event.
(leave_notify_event): Clear help string on a event.
(motion_notify_event): Use gen_help_event.
(pgtk_set_event_handler): Hook configure-event for outer widgets.
(pgtk_term_init): Clear the flag.
---
src/pgtkterm.c | 47 ++++++++++++++++++++++++++++++++++-------------
1 file changed, 34 insertions(+), 13 deletions(-)
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 224c015..a5cf0a8 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -72,6 +72,10 @@ along with GNU Emacs. If not, see
<https://www.gnu.org/licenses/>. */
#define FRAME_CR_SURFACE_DESIRED_HEIGHT(f) \
((f)->output_data.pgtk->cr_surface_desired_height)
+/* Non-zero means that a HELP_EVENT has been generated since Emacs
+ start. */
+
+static bool any_help_event_p;
struct pgtk_display_info *x_display_list; /* Chain of existing displays */
extern Lisp_Object tip_frame;
@@ -5795,12 +5799,18 @@ configure_event (GtkWidget * widget, GdkEvent * event,
gpointer * user_data)
struct frame *f = pgtk_any_window_to_frame (event->configure.window);
if (f && widget == FRAME_GTK_OUTER_WIDGET (f))
{
- PGTK_TRACE ("%dx%d", event->configure.width, event->configure.height);
- xg_frame_resized (f, event->configure.width, event->configure.height);
- pgtk_cr_update_surface_desired_size (f, event->configure.width,
- event->configure.height);
+ if (any_help_event_p)
+ {
+ Lisp_Object frame;
+ if (f)
+ XSETFRAME (frame, f);
+ else
+ frame = Qnil;
+ help_echo_string = Qnil;
+ gen_help_event (Qnil, frame, Qnil, Qnil, 0);
+ }
}
- return TRUE;
+ return FALSE;
}
static gboolean
@@ -6016,6 +6026,18 @@ leave_notify_event (GtkWidget * widget, GdkEvent * event,
if (event->crossing.detail != GDK_NOTIFY_INFERIOR
&& event->crossing.focus && !(focus_state & FOCUS_EXPLICIT))
x_focus_changed (FALSE, FOCUS_IMPLICIT, dpyinfo, frame, &inev);
+
+ if (frame)
+ {
+ if (any_help_event_p)
+ {
+ Lisp_Object frame_obj;
+ XSETFRAME (frame_obj, frame);
+ help_echo_string = Qnil;
+ gen_help_event (Qnil, frame_obj, Qnil, Qnil, 0);
+ }
+ }
+
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
@@ -6218,20 +6240,15 @@ motion_notify_event (GtkWidget * widget, GdkEvent *
event,
if (do_help > 0)
{
Lisp_Object frame;
- union buffered_input_event inev;
if (f)
XSETFRAME (frame, f);
else
frame = Qnil;
- inev.ie.kind = HELP_EVENT;
- inev.ie.frame_or_window = frame;
- inev.ie.arg = help_echo_object;
- inev.ie.x = help_echo_window;
- inev.ie.y = help_echo_string;
- inev.ie.timestamp = help_echo_pos;
- evq_enqueue (&inev);
+ any_help_event_p = true;
+ gen_help_event (help_echo_string, frame, help_echo_window,
+ help_echo_object, help_echo_pos);
}
return TRUE;
@@ -6574,6 +6591,8 @@ pgtk_set_event_handler (struct frame *f)
G_CALLBACK (delete_event), NULL);
g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "event",
G_CALLBACK (pgtk_handle_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "configure-event",
+ G_CALLBACK (configure_event), NULL);
g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "map-event",
G_CALLBACK (map_event), NULL);
@@ -6688,6 +6707,8 @@ pgtk_term_init (Lisp_Object display_name, char
*resource_name)
if (!x_initialized)
{
+ any_help_event_p = false;
+
Fset_input_interrupt_mode (Qt);
baud_rate = 19200;
- feature/pgtk 519a4ac 022/100: Implement Meta key detection, (continued)
- feature/pgtk 519a4ac 022/100: Implement Meta key detection, Yuuki Harano, 2020/11/24
- feature/pgtk 31bba95 023/100: Use gsettings instead of X resource database, Yuuki Harano, 2020/11/24
- feature/pgtk ea3ecd3 020/100: init border_pixel., Yuuki Harano, 2020/11/24
- feature/pgtk 4de4d9e 051/100: follow x_set_internal_border_width change., Yuuki Harano, 2020/11/24
- feature/pgtk 1fe7caf 068/100: Fix coding style, Yuuki Harano, 2020/11/24
- feature/pgtk 24d8263 031/100: Improve drawing efficency by refactoring code, Yuuki Harano, 2020/11/24
- feature/pgtk 72f79d8 060/100: * src/pgtkselect.c: change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk 806b764 039/100: Before sleep, dispatch draw events., Yuuki Harano, 2020/11/24
- feature/pgtk 209c611 063/100: * src/pgtkterm.h: Remove unused code, Yuuki Harano, 2020/11/24
- feature/pgtk 04bfe70 048/100: implement popup/context menu, Yuuki Harano, 2020/11/24
- feature/pgtk d899fc1 087/100: Fix tooltips don't hide on events,
Yuuki Harano <=
- feature/pgtk 640f770 088/100: Fix mouse cursor doesn't appear on motion events on xwidgets, Yuuki Harano, 2020/11/24
- feature/pgtk d437aab 092/100: Avoid gtk warnings on X, Yuuki Harano, 2020/11/24
- feature/pgtk 886fcb2 096/100: Update copyright dates for PGTK files, Yuuki Harano, 2020/11/24
- feature/pgtk d6ef9af 100/100: Fix crash when .schema.xml is not installed, Yuuki Harano, 2020/11/24
- feature/pgtk 12cc104 009/100: Cleanup x_* to gui_ to match upstream work, Yuuki Harano, 2020/11/24
- feature/pgtk fde74fa 028/100: implement pgtk-frame-list-z-order same as frame-list., Yuuki Harano, 2020/11/24
- feature/pgtk c9e6b44 044/100: Some work toward posframe on wayland, Yuuki Harano, 2020/11/24
- feature/pgtk 964dfcf 062/100: * src/pgtkgui.h: change coding style, Yuuki Harano, 2020/11/24
- feature/pgtk da3c351 019/100: border_color/pixel width, Yuuki Harano, 2020/11/24
- feature/pgtk 014d56f 052/100: * src/pgtkterm.c: Remove incorrect mark_object call., Yuuki Harano, 2020/11/24