summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-02-02 15:33:48 +0800
committerPo Lu <luangruo@yahoo.com>2022-02-02 15:33:48 +0800
commitfded822c80b386a3983315f78d664f1c6b7fa865 (patch)
tree486be6ddfebe357d5683267a232efb58c1439bc9 /src
parente7047b4aba0fa5f3a511cb0688158400f02b1485 (diff)
downloademacs-fded822c80b386a3983315f78d664f1c6b7fa865.tar.gz
Send button events before setting xwidget passive grab
* src/xwidget.c (xwidget_button_1): Send button event before any grab processing.
Diffstat (limited to 'src')
-rw-r--r--src/xwidget.c37
1 files changed, 19 insertions, 18 deletions
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