[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 2f0d67b047: Clear xwidget passive grab whenever a drag begins
From: |
Po Lu |
Subject: |
master 2f0d67b047: Clear xwidget passive grab whenever a drag begins |
Date: |
Thu, 27 Jan 2022 22:09:54 -0500 (EST) |
branch: master
commit 2f0d67b047d6d84d51dd388fe19d46e1d2b72f9c
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Clear xwidget passive grab whenever a drag begins
* src/xwidget.c (xv_drag_begin_cb): New function.
(xwidget_view_from_window): Attach said function to grab widget
when a grab starts.
* src/xwidget.h (struct xwidget_view): New field
`passive_grab_drag_signal'.
---
src/xwidget.c | 25 +++++++++++++++++++++++++
src/xwidget.h | 1 +
2 files changed, 26 insertions(+)
diff --git a/src/xwidget.c b/src/xwidget.c
index c5f4c0ee94..2080f109cd 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -1138,6 +1138,23 @@ run_file_chooser_cb (WebKitWebView *webview,
#ifdef HAVE_X_WINDOWS
+static void
+xv_drag_begin_cb (GtkWidget *widget,
+ GdkDragContext *context,
+ gpointer user_data)
+{
+ struct xwidget_view *view = user_data;
+
+ if (view->passive_grab)
+ {
+ g_signal_handler_disconnect (view->passive_grab,
+ view->passive_grab_destruction_signal);
+ g_signal_handler_disconnect (view->passive_grab,
+ view->passive_grab_drag_signal);
+ view->passive_grab = NULL;
+ }
+}
+
static void
xwidget_button_1 (struct xwidget_view *view,
bool down_p, int x, int y, int button,
@@ -1170,6 +1187,10 @@ xwidget_button_1 (struct xwidget_view *view,
= g_signal_connect (G_OBJECT (view->passive_grab),
"destroy", G_CALLBACK (gtk_widget_destroyed),
&view->passive_grab);
+ view->passive_grab_drag_signal
+ = g_signal_connect (G_OBJECT (view->passive_grab),
+ "drag-begin", G_CALLBACK (xv_drag_begin_cb),
+ view);
}
else
{
@@ -1230,6 +1251,8 @@ xwidget_button_1 (struct xwidget_view *view,
{
g_signal_handler_disconnect (view->passive_grab,
view->passive_grab_destruction_signal);
+ g_signal_handler_disconnect (view->passive_grab,
+ view->passive_grab_drag_signal);
view->passive_grab = NULL;
}
}
@@ -3205,6 +3228,8 @@ DEFUN ("delete-xwidget-view",
{
g_signal_handler_disconnect (xv->passive_grab,
xv->passive_grab_destruction_signal);
+ g_signal_handler_disconnect (xv->passive_grab,
+ xv->passive_grab_drag_signal);
xv->passive_grab = NULL;
}
diff --git a/src/xwidget.h b/src/xwidget.h
index 79dee37695..8b47a0b904 100644
--- a/src/xwidget.h
+++ b/src/xwidget.h
@@ -122,6 +122,7 @@ struct xwidget_view
GdkWindow *last_crossing_window;
GtkWidget *passive_grab;
guint passive_grab_destruction_signal;
+ guint passive_grab_drag_signal;
#else
struct pgtk_display_info *dpyinfo;
GtkWidget *widget;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 2f0d67b047: Clear xwidget passive grab whenever a drag begins,
Po Lu <=