summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/xwidget.c25
-rw-r--r--src/xwidget.h1
2 files changed, 26 insertions, 0 deletions
diff --git a/src/xwidget.c b/src/xwidget.c
index c5f4c0ee944..2080f109cdd 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -1139,6 +1139,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,
int modifier_state, Time time)
@@ -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 79dee37695d..8b47a0b9046 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;