From: Po Lu Date: Wed, 2 Feb 2022 07:33:48 +0000 (+0800) Subject: Send button events before setting xwidget passive grab X-Git-Tag: emacs-29.0.90~2582 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fded822c80b386a3983315f78d664f1c6b7fa865;p=emacs.git Send button events before setting xwidget passive grab * src/xwidget.c (xwidget_button_1): Send button event before any grab processing. --- diff --git a/src/xwidget.c b/src/xwidget.c index 85535a35b13..9b08d47a8e8 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -1178,6 +1178,25 @@ xwidget_button_1 (struct xwidget_view *view, if (!target) target = model->widget_osr; + xg_event = gdk_event_new (down_p ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE); + + xg_event->any.window = gtk_widget_get_window (target); + g_object_ref (xg_event->any.window); /* The window will be unrefed + later by gdk_event_free. */ + + xg_event->button.x = x; + xg_event->button.x_root = x; + xg_event->button.y = y; + xg_event->button.y_root = y; + xg_event->button.button = button; + xg_event->button.state = modifier_state; + xg_event->button.time = time; + xg_event->button.device = find_suitable_pointer (view->frame); + + gtk_main_do_event (xg_event); + gdk_event_free (xg_event); + + if (down_p && !view->passive_grab) { view->passive_grab = target; @@ -1254,24 +1273,6 @@ xwidget_button_1 (struct xwidget_view *view, view->passive_grab = NULL; } } - - xg_event = gdk_event_new (down_p ? GDK_BUTTON_PRESS : GDK_BUTTON_RELEASE); - - xg_event->any.window = gtk_widget_get_window (target); - g_object_ref (xg_event->any.window); /* The window will be unrefed - later by gdk_event_free. */ - - xg_event->button.x = x; - xg_event->button.x_root = x; - xg_event->button.y = y; - xg_event->button.y_root = y; - xg_event->button.button = button; - xg_event->button.state = modifier_state; - xg_event->button.time = time; - xg_event->button.device = find_suitable_pointer (view->frame); - - gtk_main_do_event (xg_event); - gdk_event_free (xg_event); } void