summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2018-03-10 18:05:57 +0100
committerBenjamin Otte <otte@redhat.com>2018-04-05 20:12:35 +0200
commit72d5bebf9ac92af751fb4da171bedd9bdab67f89 (patch)
tree897917f24f8a2e6d424c0cabcf094b700caddd18
parent88a99abaf301565a01afd0e42a08062fc9a1878e (diff)
downloadgtk+-72d5bebf9ac92af751fb4da171bedd9bdab67f89.tar.gz
draggesture: Port to new API model
-rw-r--r--demos/gtk-demo/drawingarea.c5
-rw-r--r--demos/gtk-demo/fontplane.c13
-rw-r--r--examples/drawing.c5
-rw-r--r--gtk/gtkcalendar.c9
-rw-r--r--gtk/gtkcolorplane.c15
-rw-r--r--gtk/gtkdragsource.c6
-rw-r--r--gtk/gtkentry.c4
-rw-r--r--gtk/gtkflowbox.c5
-rw-r--r--gtk/gtkgesturedrag.c6
-rw-r--r--gtk/gtkgesturedrag.h2
-rw-r--r--gtk/gtklabel.c6
-rw-r--r--gtk/gtkpaned.c4
-rw-r--r--gtk/gtkrange.c4
-rw-r--r--gtk/gtkscrolledwindow.c4
-rw-r--r--gtk/gtktextview.c4
-rw-r--r--gtk/gtktreeview.c8
-rw-r--r--gtk/gtkwindow.c6
-rw-r--r--tests/testinput.c3
18 files changed, 50 insertions, 59 deletions
diff --git a/demos/gtk-demo/drawingarea.c b/demos/gtk-demo/drawingarea.c
index 4a6f1cb860..12967daa44 100644
--- a/demos/gtk-demo/drawingarea.c
+++ b/demos/gtk-demo/drawingarea.c
@@ -244,13 +244,14 @@ do_drawingarea (GtkWidget *do_widget)
g_signal_connect (da, "size-allocate",
G_CALLBACK (scribble_size_allocate), NULL);
- drag = gtk_gesture_drag_new (da);
+ drag = gtk_gesture_drag_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (drag), GDK_BUTTON_PRIMARY);
- g_object_set_data_full (G_OBJECT (da), "drag", drag, g_object_unref);
+ gtk_widget_add_controller (da, GTK_EVENT_CONTROLLER (drag));
g_signal_connect (drag, "drag-begin", G_CALLBACK (drag_begin), da);
g_signal_connect (drag, "drag-update", G_CALLBACK (drag_update), da);
g_signal_connect (drag, "drag-end", G_CALLBACK (drag_end), da);
+
}
if (!gtk_widget_get_visible (window))
diff --git a/demos/gtk-demo/fontplane.c b/demos/gtk-demo/fontplane.c
index c8b8a916c9..fe13f3126f 100644
--- a/demos/gtk-demo/fontplane.c
+++ b/demos/gtk-demo/fontplane.c
@@ -213,14 +213,15 @@ gtk_font_plane_init (GtkFontPlane *plane)
gtk_widget_set_has_surface (GTK_WIDGET (plane), FALSE);
gtk_widget_set_can_focus (GTK_WIDGET (plane), TRUE);
- plane->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (plane));
- g_signal_connect (plane->drag_gesture, "drag-begin",
+ gesture = gtk_gesture_drag_new ();
+ g_signal_connect (gesture, "drag-begin",
G_CALLBACK (plane_drag_gesture_begin), plane);
- g_signal_connect (plane->drag_gesture, "drag-update",
+ g_signal_connect (gesture, "drag-update",
G_CALLBACK (plane_drag_gesture_update), plane);
- g_signal_connect (plane->drag_gesture, "drag-end",
+ g_signal_connect (gesture, "drag-end",
G_CALLBACK (plane_drag_gesture_end), plane);
- gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (plane->drag_gesture), 0);
+ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
+ gtk_widget_add_controller (GTK_WIDGET (plane), GTK_EVENT_CONTROLLER (gesture));
gesture = gtk_gesture_long_press_new ();
g_signal_connect (gesture, "pressed",
@@ -238,8 +239,6 @@ plane_finalize (GObject *object)
g_clear_object (&plane->weight_adj);
g_clear_object (&plane->width_adj);
- g_clear_object (&plane->drag_gesture);
-
G_OBJECT_CLASS (gtk_font_plane_parent_class)->finalize (object);
}
diff --git a/examples/drawing.c b/examples/drawing.c
index 0713b81611..08f2872105 100644
--- a/examples/drawing.c
+++ b/examples/drawing.c
@@ -157,10 +157,9 @@ activate (GtkApplication *app,
g_signal_connect_after (drawing_area, "size-allocate",
G_CALLBACK (size_allocate_cb), NULL);
- drag = gtk_gesture_drag_new (drawing_area);
+ drag = gtk_gesture_drag_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (drag), GDK_BUTTON_PRIMARY);
- g_object_set_data_full (G_OBJECT (drawing_area), "drag", drag, g_object_unref);
-
+ gtk_widget_add_controller (drawing_area, GTK_EVENT_CONTROLLER (drag));
g_signal_connect (drag, "drag-begin", G_CALLBACK (drag_begin), drawing_area);
g_signal_connect (drag, "drag-update", G_CALLBACK (drag_update), drawing_area);
g_signal_connect (drag, "drag-end", G_CALLBACK (drag_end), drawing_area);
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c
index 1e0a0db0a2..6952f25bf1 100644
--- a/gtk/gtkcalendar.c
+++ b/gtk/gtkcalendar.c
@@ -248,7 +248,6 @@ struct _GtkCalendarPrivate
gint detail_width_chars;
gint detail_overflow[6];
- GtkGesture *drag_gesture;
GtkEventController *scroll_controller;
};
@@ -674,9 +673,10 @@ gtk_calendar_init (GtkCalendar *calendar)
g_signal_connect (gesture, "released", G_CALLBACK (gtk_calendar_button_release), calendar);
gtk_widget_add_controller (GTK_WIDGET (calendar), GTK_EVENT_CONTROLLER (gesture));
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (calendar));
- g_signal_connect (priv->drag_gesture, "drag-begin", G_CALLBACK (gtk_calendar_drag_begin), calendar);
- g_signal_connect (priv->drag_gesture, "drag-update", G_CALLBACK (gtk_calendar_drag_update), calendar);
+ gesture = gtk_gesture_drag_new ();
+ g_signal_connect (gesture, "drag-begin", G_CALLBACK (gtk_calendar_drag_begin), calendar);
+ g_signal_connect (gesture, "drag-update", G_CALLBACK (gtk_calendar_drag_update), calendar);
+ gtk_widget_add_controller (GTK_WIDGET (calendar), GTK_EVENT_CONTROLLER (gesture));
priv->scroll_controller =
gtk_event_controller_scroll_new (GTK_WIDGET (calendar),
@@ -1318,7 +1318,6 @@ gtk_calendar_finalize (GObject *object)
{
GtkCalendarPrivate *priv = GTK_CALENDAR (object)->priv;
- g_object_unref (priv->drag_gesture);
g_object_unref (priv->scroll_controller);
G_OBJECT_CLASS (gtk_calendar_parent_class)->finalize (object);
diff --git a/gtk/gtkcolorplane.c b/gtk/gtkcolorplane.c
index b9f40ad6fc..559a43a176 100644
--- a/gtk/gtkcolorplane.c
+++ b/gtk/gtkcolorplane.c
@@ -35,8 +35,6 @@ struct _GtkColorPlanePrivate
GtkAdjustment *v_adj;
GdkTexture *texture;
-
- GtkGesture *drag_gesture;
};
enum {
@@ -410,14 +408,15 @@ gtk_color_plane_init (GtkColorPlane *plane)
atk_object_set_role (atk_obj, ATK_ROLE_COLOR_CHOOSER);
}
- plane->priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (plane));
- g_signal_connect (plane->priv->drag_gesture, "drag-begin",
+ gesture = gtk_gesture_drag_new ();
+ g_signal_connect (gesture, "drag-begin",
G_CALLBACK (plane_drag_gesture_begin), plane);
- g_signal_connect (plane->priv->drag_gesture, "drag-update",
+ g_signal_connect (gesture, "drag-update",
G_CALLBACK (plane_drag_gesture_update), plane);
- g_signal_connect (plane->priv->drag_gesture, "drag-end",
+ g_signal_connect (gesture, "drag-end",
G_CALLBACK (plane_drag_gesture_end), plane);
- gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (plane->priv->drag_gesture), 0);
+ gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
+ gtk_widget_add_controller (GTK_WIDGET (plane), GTK_EVENT_CONTROLLER (gesture));
gesture = gtk_gesture_long_press_new ();
g_signal_connect (gesture, "pressed",
@@ -438,8 +437,6 @@ plane_finalize (GObject *object)
g_clear_object (&plane->priv->s_adj);
g_clear_object (&plane->priv->v_adj);
- g_clear_object (&plane->priv->drag_gesture);
-
G_OBJECT_CLASS (gtk_color_plane_parent_class)->finalize (object);
}
diff --git a/gtk/gtkdragsource.c b/gtk/gtkdragsource.c
index b74c12ee03..b13be2e367 100644
--- a/gtk/gtkdragsource.c
+++ b/gtk/gtkdragsource.c
@@ -108,7 +108,8 @@ gtk_drag_source_site_destroy (gpointer data)
gdk_content_formats_unref (site->target_list);
gtk_image_definition_unref (site->image_def);
- g_clear_object (&site->drag_gesture);
+ /* This gets called only during widget finalization.
+ * And widget finalization takes care of gestures. */
g_slice_free (GtkDragSourceSite, site);
}
@@ -144,7 +145,7 @@ gtk_drag_source_set (GtkWidget *widget,
{
site = g_slice_new0 (GtkDragSourceSite);
site->image_def = gtk_image_definition_new_empty ();
- site->drag_gesture = gtk_gesture_drag_new (widget);
+ site->drag_gesture = gtk_gesture_drag_new ();
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (site->drag_gesture),
GTK_PHASE_BUBBLE);
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (site->drag_gesture), 0);
@@ -154,6 +155,7 @@ gtk_drag_source_set (GtkWidget *widget,
g_signal_connect (site->drag_gesture, "update",
G_CALLBACK (gtk_drag_source_gesture_update),
site);
+ gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (site->drag_gesture));
g_object_set_data_full (G_OBJECT (widget),
I_("gtk-site-data"),
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index f7cb4781cc..08abe6a966 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -2535,13 +2535,14 @@ gtk_entry_init (GtkEntry *entry)
gtk_entry_update_cached_style_values (entry);
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (entry));
+ priv->drag_gesture = gtk_gesture_drag_new ();
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (gtk_entry_drag_gesture_update), entry);
g_signal_connect (priv->drag_gesture, "drag-end",
G_CALLBACK (gtk_entry_drag_gesture_end), entry);
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->drag_gesture), 0);
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (priv->drag_gesture), TRUE);
+ gtk_widget_add_controller (GTK_WIDGET (entry), GTK_EVENT_CONTROLLER (priv->drag_gesture));
gesture = gtk_gesture_multi_press_new ();
g_signal_connect (gesture, "pressed",
@@ -2762,7 +2763,6 @@ gtk_entry_finalize (GObject *object)
g_free (priv->placeholder_text);
g_free (priv->im_module);
- g_clear_object (&priv->drag_gesture);
g_clear_object (&priv->motion_controller);
if (priv->tabs)
diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c
index f87c539ce1..cf93f836e9 100644
--- a/gtk/gtkflowbox.c
+++ b/gtk/gtkflowbox.c
@@ -3379,8 +3379,6 @@ gtk_flow_box_finalize (GObject *obj)
g_clear_object (&priv->hadjustment);
g_clear_object (&priv->vadjustment);
- g_object_unref (priv->drag_gesture);
-
if (priv->bound_model)
{
if (priv->create_widget_func_data_destroy)
@@ -3759,7 +3757,7 @@ gtk_flow_box_init (GtkFlowBox *box)
G_CALLBACK (gtk_flow_box_multipress_unpaired_release), box);
gtk_widget_add_controller (GTK_WIDGET (box), GTK_EVENT_CONTROLLER (gesture));
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (box));
+ priv->drag_gesture = gtk_gesture_drag_new ();
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (priv->drag_gesture),
FALSE);
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->drag_gesture),
@@ -3772,6 +3770,7 @@ gtk_flow_box_init (GtkFlowBox *box)
G_CALLBACK (gtk_flow_box_drag_gesture_update), box);
g_signal_connect (priv->drag_gesture, "drag-end",
G_CALLBACK (gtk_flow_box_drag_gesture_end), box);
+ gtk_widget_add_controller (GTK_WIDGET (box), GTK_EVENT_CONTROLLER (priv->drag_gesture));
}
static void
diff --git a/gtk/gtkgesturedrag.c b/gtk/gtkgesturedrag.c
index 11d7752056..baccf2f2df 100644
--- a/gtk/gtkgesturedrag.c
+++ b/gtk/gtkgesturedrag.c
@@ -195,19 +195,15 @@ gtk_gesture_drag_init (GtkGestureDrag *gesture)
/**
* gtk_gesture_drag_new:
- * @widget: a #GtkWidget
*
* Returns a newly created #GtkGesture that recognizes drags.
*
* Returns: a newly created #GtkGestureDrag
**/
GtkGesture *
-gtk_gesture_drag_new (GtkWidget *widget)
+gtk_gesture_drag_new (void)
{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
return g_object_new (GTK_TYPE_GESTURE_DRAG,
- "widget", widget,
NULL);
}
diff --git a/gtk/gtkgesturedrag.h b/gtk/gtkgesturedrag.h
index ab0cba773c..2493e65de4 100644
--- a/gtk/gtkgesturedrag.h
+++ b/gtk/gtkgesturedrag.h
@@ -42,7 +42,7 @@ GDK_AVAILABLE_IN_ALL
GType gtk_gesture_drag_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_ALL
-GtkGesture * gtk_gesture_drag_new (GtkWidget *widget);
+GtkGesture * gtk_gesture_drag_new (void);
GDK_AVAILABLE_IN_ALL
gboolean gtk_gesture_drag_get_start_point (GtkGestureDrag *gesture,
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index afa06cdce6..04e9f1fb87 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -3177,7 +3177,6 @@ gtk_label_finalize (GObject *object)
if (priv->select_info)
{
- g_object_unref (priv->select_info->drag_gesture);
g_object_unref (priv->select_info->motion_controller);
g_object_unref (priv->select_info->provider);
}
@@ -5016,12 +5015,13 @@ gtk_label_ensure_select_info (GtkLabel *label)
if (gtk_widget_get_realized (GTK_WIDGET (label)))
gtk_label_set_selectable_hint (label);
- priv->select_info->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (label));
+ priv->select_info->drag_gesture = gtk_gesture_drag_new ();
g_signal_connect (priv->select_info->drag_gesture, "drag-begin",
G_CALLBACK (gtk_label_drag_gesture_begin), label);
g_signal_connect (priv->select_info->drag_gesture, "drag-update",
G_CALLBACK (gtk_label_drag_gesture_update), label);
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (priv->select_info->drag_gesture), TRUE);
+ gtk_widget_add_controller (GTK_WIDGET (label), GTK_EVENT_CONTROLLER (priv->select_info->drag_gesture));
priv->select_info->multipress_gesture = gtk_gesture_multi_press_new ();
g_signal_connect (priv->select_info->multipress_gesture, "pressed",
@@ -5053,7 +5053,7 @@ gtk_label_clear_select_info (GtkLabel *label)
if (!priv->select_info->selectable && !priv->select_info->links)
{
- g_object_unref (priv->select_info->drag_gesture);
+ gtk_widget_remove_controller (GTK_WIDGET (label), GTK_EVENT_CONTROLLER (priv->select_info->drag_gesture));
gtk_widget_remove_controller (GTK_WIDGET (label), GTK_EVENT_CONTROLLER (priv->select_info->multipress_gesture));
g_object_unref (priv->select_info->motion_controller);
GTK_LABEL_CONTENT (priv->select_info->provider)->label = NULL;
diff --git a/gtk/gtkpaned.c b/gtk/gtkpaned.c
index 7471eeda91..7a12bd49b2 100644
--- a/gtk/gtkpaned.c
+++ b/gtk/gtkpaned.c
@@ -996,7 +996,6 @@ gtk_paned_finalize (GObject *object)
gtk_paned_set_saved_focus (paned, NULL);
gtk_paned_set_first_paned (paned, NULL);
- g_clear_object (&priv->drag_gesture);
g_clear_object (&priv->motion_controller);
gtk_widget_unparent (priv->handle_widget);
@@ -1519,10 +1518,11 @@ gtk_paned_init (GtkPaned *paned)
priv->pan_gesture = gesture;
/* Pointer gesture */
- gesture = gtk_gesture_drag_new (GTK_WIDGET (paned));
+ gesture = gtk_gesture_drag_new ();
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture),
GTK_PHASE_CAPTURE);
connect_drag_gesture_signals (paned, gesture);
+ gtk_widget_add_controller (GTK_WIDGET (paned), GTK_EVENT_CONTROLLER (gesture));
priv->drag_gesture = gesture;
priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (paned));
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 22b2c68158..fd1eb9f939 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -564,12 +564,13 @@ gtk_range_init (GtkRange *range)
* in the oppposite order in which they are added to their
* widget.
*/
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (range));
+ priv->drag_gesture = gtk_gesture_drag_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->drag_gesture), 0);
g_signal_connect (priv->drag_gesture, "drag-begin",
G_CALLBACK (gtk_range_drag_gesture_begin), range);
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (gtk_range_drag_gesture_update), range);
+ gtk_widget_add_controller (GTK_WIDGET (range), GTK_EVENT_CONTROLLER (priv->drag_gesture));
priv->multipress_gesture = gtk_gesture_multi_press_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->multipress_gesture), 0);
@@ -1259,7 +1260,6 @@ gtk_range_finalize (GObject *object)
GtkRange *range = GTK_RANGE (object);
GtkRangePrivate *priv = gtk_range_get_instance_private (range);
- g_clear_object (&priv->drag_gesture);
g_clear_object (&priv->scroll_controller);
gtk_widget_unparent (priv->slider_widget);
diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c
index 3e8a7184fd..734ac209ec 100644
--- a/gtk/gtkscrolledwindow.c
+++ b/gtk/gtkscrolledwindow.c
@@ -1917,7 +1917,7 @@ gtk_scrolled_window_init (GtkScrolledWindow *scrolled_window)
priv->overlay_scrolling = TRUE;
- priv->drag_gesture = gtk_gesture_drag_new (widget);
+ priv->drag_gesture = gtk_gesture_drag_new ();
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (priv->drag_gesture), TRUE);
g_signal_connect_swapped (priv->drag_gesture, "drag-begin",
G_CALLBACK (scrolled_window_drag_begin_cb),
@@ -1928,6 +1928,7 @@ gtk_scrolled_window_init (GtkScrolledWindow *scrolled_window)
g_signal_connect_swapped (priv->drag_gesture, "end",
G_CALLBACK (scrolled_window_drag_end_cb),
scrolled_window);
+ gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (priv->drag_gesture));
priv->pan_gesture = gtk_gesture_pan_new (GTK_ORIENTATION_VERTICAL);
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (priv->pan_gesture), TRUE);
@@ -2614,7 +2615,6 @@ gtk_scrolled_window_finalize (GObject *object)
GtkScrolledWindow *scrolled_window = GTK_SCROLLED_WINDOW (object);
GtkScrolledWindowPrivate *priv = scrolled_window->priv;
- g_clear_object (&priv->drag_gesture);
g_clear_object (&priv->scroll_controller);
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 3598433291..34cab0dfb1 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -1680,13 +1680,14 @@ gtk_text_view_init (GtkTextView *text_view)
widget);
gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (gesture));
- priv->drag_gesture = gtk_gesture_drag_new (widget);
+ priv->drag_gesture = gtk_gesture_drag_new ();
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (gtk_text_view_drag_gesture_update),
widget);
g_signal_connect (priv->drag_gesture, "drag-end",
G_CALLBACK (gtk_text_view_drag_gesture_end),
widget);
+ gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (priv->drag_gesture));
priv->motion_controller = gtk_event_controller_motion_new (widget);
g_signal_connect (priv->motion_controller, "motion", G_CALLBACK (gtk_text_view_motion), widget);
@@ -3583,7 +3584,6 @@ gtk_text_view_finalize (GObject *object)
cancel_pending_scroll (text_view);
- g_object_unref (priv->drag_gesture);
g_object_unref (priv->motion_controller);
if (priv->tabs)
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 8339882e43..08c1797f33 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -1730,15 +1730,16 @@ gtk_tree_view_init (GtkTreeView *tree_view)
GTK_PHASE_CAPTURE);
gtk_widget_add_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (gesture));
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (tree_view));
+ priv->drag_gesture = gtk_gesture_drag_new ();
g_signal_connect (priv->drag_gesture, "drag-begin",
G_CALLBACK (gtk_tree_view_drag_gesture_begin), tree_view);
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (gtk_tree_view_drag_gesture_update), tree_view);
g_signal_connect (priv->drag_gesture, "drag-end",
G_CALLBACK (gtk_tree_view_drag_gesture_end), tree_view);
+ gtk_widget_add_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (priv->drag_gesture));
- priv->column_drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (tree_view));
+ priv->column_drag_gesture = gtk_gesture_drag_new ();
g_signal_connect (priv->column_drag_gesture, "drag-begin",
G_CALLBACK (gtk_tree_view_column_drag_gesture_begin), tree_view);
g_signal_connect (priv->column_drag_gesture, "drag-update",
@@ -1747,6 +1748,7 @@ gtk_tree_view_init (GtkTreeView *tree_view)
G_CALLBACK (gtk_tree_view_column_drag_gesture_end), tree_view);
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (priv->column_drag_gesture),
GTK_PHASE_CAPTURE);
+ gtk_widget_add_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (priv->column_drag_gesture));
priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (tree_view));
g_signal_connect (priv->motion_controller, "enter",
@@ -2138,8 +2140,6 @@ gtk_tree_view_destroy (GtkWidget *widget)
tree_view->priv->vadjustment = NULL;
}
- g_clear_object (&tree_view->priv->drag_gesture);
- g_clear_object (&tree_view->priv->column_drag_gesture);
g_clear_object (&tree_view->priv->motion_controller);
GTK_WIDGET_CLASS (gtk_tree_view_parent_class)->destroy (widget);
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 69b6c1eb94..6080b3e308 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1977,13 +1977,14 @@ gtk_window_constructed (GObject *object)
G_CALLBACK (multipress_gesture_pressed_cb), object);
gtk_widget_add_controller (GTK_WIDGET (object), GTK_EVENT_CONTROLLER (priv->multipress_gesture));
- priv->drag_gesture = gtk_gesture_drag_new (GTK_WIDGET (object));
+ priv->drag_gesture = gtk_gesture_drag_new ();
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (priv->drag_gesture),
GTK_PHASE_CAPTURE);
g_signal_connect (priv->drag_gesture, "drag-begin",
G_CALLBACK (drag_gesture_begin_cb), object);
g_signal_connect (priv->drag_gesture, "drag-update",
G_CALLBACK (drag_gesture_update_cb), object);
+ gtk_widget_add_controller (GTK_WIDGET (object), GTK_EVENT_CONTROLLER (priv->drag_gesture));
}
}
@@ -5959,9 +5960,6 @@ gtk_window_finalize (GObject *object)
priv->mnemonics_display_timeout_id = 0;
}
- if (priv->drag_gesture)
- g_object_unref (priv->drag_gesture);
-
g_clear_object (&priv->renderer);
G_OBJECT_CLASS (gtk_window_parent_class)->finalize (object);
diff --git a/tests/testinput.c b/tests/testinput.c
index 9694e84bdf..1427f26e03 100644
--- a/tests/testinput.c
+++ b/tests/testinput.c
@@ -282,13 +282,14 @@ main (int argc, char *argv[])
gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (drawing_area), draw, NULL, NULL);
g_signal_connect (drawing_area, "size-allocate", G_CALLBACK (size_allocate), NULL);
- gesture = gtk_gesture_drag_new (drawing_area);
+ gesture = gtk_gesture_drag_new ();
g_object_set_data_full (G_OBJECT (drawing_area), "gesture",
gesture, g_object_unref);
g_signal_connect (gesture, "drag-begin",
G_CALLBACK (drag_begin), drawing_area);
g_signal_connect (gesture, "drag-update",
G_CALLBACK (drag_update), drawing_area);
+ gtk_widget_add_controller (drawing_area, GTK_EVENT_CONTROLLER (gesture));
g_signal_connect (drawing_area, "key_press_event",
G_CALLBACK (key_press_event), NULL);