aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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,
1139#ifdef HAVE_X_WINDOWS 1139#ifdef HAVE_X_WINDOWS
1140 1140
1141static void 1141static void
1142xv_drag_begin_cb (GtkWidget *widget,
1143 GdkDragContext *context,
1144 gpointer user_data)
1145{
1146 struct xwidget_view *view = user_data;
1147
1148 if (view->passive_grab)
1149 {
1150 g_signal_handler_disconnect (view->passive_grab,
1151 view->passive_grab_destruction_signal);
1152 g_signal_handler_disconnect (view->passive_grab,
1153 view->passive_grab_drag_signal);
1154 view->passive_grab = NULL;
1155 }
1156}
1157
1158static void
1142xwidget_button_1 (struct xwidget_view *view, 1159xwidget_button_1 (struct xwidget_view *view,
1143 bool down_p, int x, int y, int button, 1160 bool down_p, int x, int y, int button,
1144 int modifier_state, Time time) 1161 int modifier_state, Time time)
@@ -1170,6 +1187,10 @@ xwidget_button_1 (struct xwidget_view *view,
1170 = g_signal_connect (G_OBJECT (view->passive_grab), 1187 = g_signal_connect (G_OBJECT (view->passive_grab),
1171 "destroy", G_CALLBACK (gtk_widget_destroyed), 1188 "destroy", G_CALLBACK (gtk_widget_destroyed),
1172 &view->passive_grab); 1189 &view->passive_grab);
1190 view->passive_grab_drag_signal
1191 = g_signal_connect (G_OBJECT (view->passive_grab),
1192 "drag-begin", G_CALLBACK (xv_drag_begin_cb),
1193 view);
1173 } 1194 }
1174 else 1195 else
1175 { 1196 {
@@ -1230,6 +1251,8 @@ xwidget_button_1 (struct xwidget_view *view,
1230 { 1251 {
1231 g_signal_handler_disconnect (view->passive_grab, 1252 g_signal_handler_disconnect (view->passive_grab,
1232 view->passive_grab_destruction_signal); 1253 view->passive_grab_destruction_signal);
1254 g_signal_handler_disconnect (view->passive_grab,
1255 view->passive_grab_drag_signal);
1233 view->passive_grab = NULL; 1256 view->passive_grab = NULL;
1234 } 1257 }
1235 } 1258 }
@@ -3205,6 +3228,8 @@ DEFUN ("delete-xwidget-view",
3205 { 3228 {
3206 g_signal_handler_disconnect (xv->passive_grab, 3229 g_signal_handler_disconnect (xv->passive_grab,
3207 xv->passive_grab_destruction_signal); 3230 xv->passive_grab_destruction_signal);
3231 g_signal_handler_disconnect (xv->passive_grab,
3232 xv->passive_grab_drag_signal);
3208 xv->passive_grab = NULL; 3233 xv->passive_grab = NULL;
3209 } 3234 }
3210 3235
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
122 GdkWindow *last_crossing_window; 122 GdkWindow *last_crossing_window;
123 GtkWidget *passive_grab; 123 GtkWidget *passive_grab;
124 guint passive_grab_destruction_signal; 124 guint passive_grab_destruction_signal;
125 guint passive_grab_drag_signal;
125#else 126#else
126 struct pgtk_display_info *dpyinfo; 127 struct pgtk_display_info *dpyinfo;
127 GtkWidget *widget; 128 GtkWidget *widget;