dest = gtk_drop_target_new (formats, GDK_ACTION_COPY);
gdk_content_formats_unref (formats);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), image);
- gtk_drop_target_attach (dest, image);
+ gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (dest));
/* context menu on image */
gesture = gtk_gesture_click_new ();
dest = gtk_drop_target_new (formats, GDK_ACTION_COPY);
gdk_content_formats_unref (formats);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), image);
- gtk_drop_target_attach (dest, image);
+ gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (dest));
/* context menu on image */
gesture = gtk_gesture_click_new ();
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_calendar_drag_leave), calendar);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_calendar_drag_drop), calendar);
- gtk_drop_target_attach (dest, widget);
+ gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (dest));
priv->year_before = 0;
#include "gtkstylecontext.h"
#include "gtkdragsource.h"
#include "gtkdragdest.h"
+#include "gtkeventcontroller.h"
/**
targets = gdk_content_formats_new (drop_types, G_N_ELEMENTS (drop_types));
dest = gtk_drop_target_new (targets, GDK_ACTION_COPY);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_color_button_drag_drop), button);
- gtk_drop_target_attach (dest, GTK_WIDGET (button));
+ gtk_widget_add_controller (GTK_WIDGET (button), GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
content = gdk_content_provider_new_with_callback (GDK_TYPE_RGBA, get_rgba_value, button);
g_free (priv->icon);
gtk_widget_unparent (priv->overlay_widget);
- g_clear_pointer (&priv->dest, gtk_drop_target_detach);
G_OBJECT_CLASS (gtk_color_swatch_parent_class)->finalize (object);
}
targets = gdk_content_formats_new (dnd_targets, G_N_ELEMENTS (dnd_targets));
priv->dest = gtk_drop_target_new (targets, GDK_ACTION_COPY);
g_signal_connect (priv->dest, "drag-drop", G_CALLBACK (swatch_drag_drop), swatch);
- gtk_drop_target_attach (priv->dest, GTK_WIDGET (swatch));
+ gtk_widget_add_controller (GTK_WIDGET (swatch), GTK_EVENT_CONTROLLER (priv->dest));
gdk_content_formats_unref (targets);
}
if (!can_drop && priv->dest)
{
- g_clear_pointer (&priv->dest, gtk_drop_target_detach);
+ gtk_widget_remove_controller (GTK_WIDGET (swatch), GTK_EVENT_CONTROLLER (priv->dest));
+ priv->dest = NULL;
}
g_object_notify (G_OBJECT (swatch), "can-drop");
*
* To use a GtkDropTarget to receive drops on a widget, you create
* a GtkDropTarget object, connect to its signals, and then attach
- * it to the widget with gtk_drop_target_attach().
+ * it to the widget with gtk_widget_add_controller().
*/
struct _GtkDropTarget
return g_object_get_data (G_OBJECT (widget), I_("gtk-drag-dest"));
}
-/**
- * gtk_drop_target_attach:
- * @dest: (transfer full): a #GtkDropTarget
- * @widget the widget to attach @dest to
- *
- * Attaches the @dest to widget and makes it accept drops
- * on the widgets.
- *
- * To undo the effect of this call, use gtk_drop_target_detach().
- */
-void
-gtk_drop_target_attach (GtkDropTarget *dest,
- GtkWidget *widget)
-{
- g_return_if_fail (GTK_IS_DROP_TARGET (dest));
- g_return_if_fail (GTK_IS_WIDGET (widget));
-
- gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (dest), GTK_PHASE_BUBBLE);
- gtk_widget_add_controller (widget, GTK_EVENT_CONTROLLER (dest));
-}
-
-/**
- * gtk_drop_target_detach:
- * @dest: a #GtkDropTarget
- *
- * Undoes the effect of a prior gtk_drop_target_attach() call.
- */
-void
-gtk_drop_target_detach (GtkDropTarget *dest)
-{
- GtkWidget *widget;
-
- g_return_if_fail (GTK_IS_DROP_TARGET (dest));
-
- widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (dest));
- gtk_widget_remove_controller (widget, GTK_EVENT_CONTROLLER (dest));
-}
-
/**
* gtk_drop_target_get_target:
* @dest: a #GtkDropTarget
GDK_AVAILABLE_IN_ALL
GdkDragAction gtk_drop_target_get_actions (GtkDropTarget *dest);
-GDK_AVAILABLE_IN_ALL
-void gtk_drop_target_attach (GtkDropTarget *dest,
- GtkWidget *widget);
-GDK_AVAILABLE_IN_ALL
-void gtk_drop_target_detach (GtkDropTarget *dest);
-
GDK_AVAILABLE_IN_ALL
GdkDrop *gtk_drop_target_get_drop (GtkDropTarget *dest);
gdk_content_formats_unref (formats);
g_signal_connect (dest, "drag-motion", G_CALLBACK (gtk_expander_drag_motion), expander);
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_expander_drag_leave), expander);
- gtk_drop_target_attach (dest, GTK_WIDGET (expander));
+ gtk_widget_add_controller (GTK_WIDGET (expander), GTK_EVENT_CONTROLLER (dest));
gesture = gtk_gesture_click_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture),
#include "gtksettings.h"
#include "gtkstylecontextprivate.h"
#include "gtkbitmaskprivate.h"
+#include "gtkeventcontroller.h"
/**
* SECTION:gtkfilechooserbutton
target_list = gtk_content_formats_add_text_targets (target_list);
dest = gtk_drop_target_new (target_list, GDK_ACTION_COPY);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_file_chooser_button_drag_drop), button);
- gtk_drop_target_attach (dest, GTK_WIDGET (button));
+ gtk_widget_add_controller (GTK_WIDGET (button), GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (target_list);
}
dest = gtk_drop_target_new (formats, GDK_ACTION_COPY | GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-motion", G_CALLBACK (file_list_drag_motion_cb), impl);
g_signal_connect (dest, "drag-drop", G_CALLBACK (file_list_drag_drop_cb), impl);
- gtk_drop_target_attach (dest, priv->browse_files_tree_view);
+ gtk_widget_add_controller (priv->browse_files_tree_view, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (formats);
/* File browser treemodel columns are shared between GtkFileChooser implementations,
g_clear_object (&priv->key_controller);
g_clear_object (&priv->source);
- g_clear_pointer (&priv->dest, gtk_drop_target_detach);
G_OBJECT_CLASS (gtk_icon_view_parent_class)->dispose (object);
}
g_signal_connect (icon_view->priv->dest, "drag-leave", G_CALLBACK (gtk_icon_view_drag_leave), icon_view);
g_signal_connect (icon_view->priv->dest, "drag-motion", G_CALLBACK (gtk_icon_view_drag_motion), icon_view);
g_signal_connect (icon_view->priv->dest, "drag-drop", G_CALLBACK (gtk_icon_view_drag_drop), icon_view);
- gtk_drop_target_attach (icon_view->priv->dest, GTK_WIDGET (icon_view));
+ gtk_widget_add_controller (GTK_WIDGET (icon_view), GTK_EVENT_CONTROLLER (icon_view->priv->dest));
icon_view->priv->dest_actions = actions;
if (icon_view->priv->dest_set)
{
- gtk_drop_target_detach (icon_view->priv->dest);
+ gtk_widget_remove_controller (GTK_WIDGET (icon_view), GTK_EVENT_CONTROLLER (icon_view->priv->dest));
icon_view->priv->dest = NULL;
icon_view->priv->dest_set = FALSE;
}
g_signal_connect (dest, "drag-motion", G_CALLBACK (gtk_notebook_drag_motion), NULL);
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_notebook_drag_leave), NULL);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_notebook_drag_drop), NULL);
- gtk_drop_target_attach (dest, GTK_WIDGET (notebook));
+ gtk_widget_add_controller (GTK_WIDGET (notebook), GTK_EVENT_CONTROLLER (dest));
+
gdk_content_formats_unref (targets);
priv->header_widget = g_object_new (GTK_TYPE_BOX,
g_signal_connect (dest, "drag-motion", G_CALLBACK (drag_motion_callback), sidebar);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop_callback), sidebar);
g_signal_connect (dest, "drag-leave", G_CALLBACK (drag_leave_callback), sidebar);
- gtk_drop_target_attach (dest, sidebar->list_box);
+ gtk_widget_add_controller (sidebar->list_box, GTK_EVENT_CONTROLLER (dest));
sidebar->source_targets = gdk_content_formats_new (dnd_source_targets, G_N_ELEMENTS (dnd_source_targets));
sidebar->source_targets = gtk_content_formats_add_text_targets (sidebar->source_targets);
gdk_content_formats_unref (formats);
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_stack_switcher_drag_leave), switcher);
g_signal_connect (dest, "drag-motion", G_CALLBACK (gtk_stack_switcher_drag_motion), switcher);
- gtk_drop_target_attach (dest, GTK_WIDGET (switcher));
+ gtk_widget_add_controller (GTK_WIDGET (switcher), GTK_EVENT_CONTROLLER (dest));
}
static void
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_text_drag_leave), self);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_text_drag_drop), self);
gdk_content_formats_unref (formats);
- gtk_drop_target_attach (dest, GTK_WIDGET (self));
+ gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (dest));
/* This object is completely private. No external entity can gain a reference
* to it; so we create it here and destroy it in finalize().
g_signal_connect (dest, "drag-leave", G_CALLBACK (gtk_text_view_drag_leave), text_view);
g_signal_connect (dest, "drag-motion", G_CALLBACK (gtk_text_view_drag_motion), text_view);
g_signal_connect (dest, "drag-drop", G_CALLBACK (gtk_text_view_drag_drop), text_view);
- gtk_drop_target_attach (dest, GTK_WIDGET (text_view));
+ gtk_widget_add_controller (GTK_WIDGET (text_view), GTK_EVENT_CONTROLLER (dest));
priv->virtual_cursor_x = -1;
priv->virtual_cursor_y = -1;
destroy_info (TreeViewDragInfo *di)
{
g_clear_object (&di->source);
- if (di->dest)
- gtk_drop_target_detach (di->dest);
g_clear_object (&di->dest);
g_slice_free (TreeViewDragInfo, di);
static void
remove_info (GtkTreeView *tree_view)
{
+ TreeViewDragInfo *di;
+
+ di = get_info (tree_view);
+ if (di && di->dest)
+ gtk_widget_remove_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (di->dest));
g_object_set_data (G_OBJECT (tree_view), I_("gtk-tree-view-drag-info"), NULL);
}
g_signal_connect (di->dest, "drag-leave", G_CALLBACK (gtk_tree_view_drag_leave), tree_view);
g_signal_connect (di->dest, "drag-motion", G_CALLBACK (gtk_tree_view_drag_motion), tree_view);
g_signal_connect (di->dest, "drag-drop", G_CALLBACK (gtk_tree_view_drag_drop), tree_view);
- gtk_drop_target_attach (di->dest, GTK_WIDGET (tree_view));
+ gtk_widget_add_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (di->dest));
g_object_ref (di->dest);
unset_reorderable (tree_view);
{
if (di->dest_set)
{
- gtk_drop_target_detach (di->dest);
+ gtk_widget_remove_controller (GTK_WIDGET (tree_view), GTK_EVENT_CONTROLLER (di->dest));
di->dest = NULL;
di->dest_set = FALSE;
}
targets = gdk_content_formats_new (dnd_dest_targets, G_N_ELEMENTS (dnd_dest_targets));
dest = gtk_drop_target_new (targets, GDK_ACTION_MOVE);
gdk_content_formats_unref (targets);
- gtk_drop_target_attach (dest, GTK_WIDGET (window));
+ gtk_widget_add_controller (GTK_WIDGET (window), GTK_EVENT_CONTROLLER (dest));
#endif
seat = gdk_display_get_default_seat (gtk_widget_get_display (widget));
dest = gtk_drop_target_new (targets, GDK_ACTION_COPY | GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-motion", G_CALLBACK (popup_motion), NULL);
g_signal_connect (dest, "drag-leave", G_CALLBACK (popup_leave), NULL);
- gtk_drop_target_attach (dest, button);
+ gtk_widget_add_controller (button, GTK_EVENT_CONTROLLER (dest));
}
gtk_container_add (GTK_CONTAINER (popup_window), grid);
gdk_content_formats_unref (targets);
targets = gdk_content_formats_new (target_table, n_targets - 1); /* no rootwin */
dest = gtk_drop_target_new (targets, GDK_ACTION_COPY | GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-drop", G_CALLBACK (label_drag_drop), NULL);
- gtk_drop_target_attach (dest, label);
+ gtk_widget_add_controller (label, GTK_EVENT_CONTROLLER (dest));
gtk_widget_set_hexpand (label, TRUE);
gtk_widget_set_vexpand (label, TRUE);
dest = gtk_drop_target_new (targets, GDK_ACTION_COPY | GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-motion", G_CALLBACK (popsite_motion), NULL);
g_signal_connect (dest, "drag-leave", G_CALLBACK (popsite_leave), NULL);
- gtk_drop_target_attach (dest, label);
+ gtk_widget_add_controller (label, GTK_EVENT_CONTROLLER (dest));
gtk_widget_set_hexpand (label, TRUE);
gtk_widget_set_vexpand (label, TRUE);
g_signal_connect (dest, "drag-leave", G_CALLBACK (target_drag_leave), pixmap);
g_signal_connect (dest, "drag-motion", G_CALLBACK (target_drag_motion), pixmap);
g_signal_connect (dest, "drag-drop", G_CALLBACK (target_drag_drop), pixmap);
- gtk_drop_target_attach (dest, pixmap);
+ gtk_widget_add_controller (pixmap, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
gtk_widget_set_hexpand (pixmap, TRUE);
dest = gtk_drop_target_new (formats, GDK_ACTION_COPY|GDK_ACTION_MOVE|GDK_ACTION_ASK);
g_signal_connect (dest, "drag-drop", G_CALLBACK (image_drag_drop), image);
- gtk_drop_target_attach (dest, image);
+ gtk_widget_add_controller (image, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (formats);
targets = gdk_content_formats_new (entries, 1);
dest = gtk_drop_target_new (targets, GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), row);
- gtk_drop_target_attach (dest, row);
+ gtk_widget_add_controller (GTK_WIDGET (row), GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
targets = gdk_content_formats_new (button_targets, G_N_ELEMENTS (button_targets));
dest = gtk_drop_target_new (targets, GDK_ACTION_MOVE);
g_signal_connect (dest, "drag-drop", G_CALLBACK (on_button_drag_drop), NULL);
- gtk_drop_target_attach (dest, button);
+ gtk_widget_add_controller (button, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
return button;
g_signal_connect (dest, "drag_motion", G_CALLBACK (toolbar_drag_motion), toolbar);
g_signal_connect (dest, "drag_leave", G_CALLBACK (toolbar_drag_leave), toolbar);
g_signal_connect (dest, "drag_drop", G_CALLBACK (toolbar_drag_drop), label);
- gtk_drop_target_attach (dest, toolbar);
+ gtk_widget_add_controller (toolbar, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
gtk_widget_show (window);
targets = gdk_content_formats_new (entries, G_N_ELEMENTS (entries));
dest = gtk_drop_target_new (targets, GDK_ACTION_COPY);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), NULL);
- gtk_drop_target_attach (dest, label);
+ gtk_widget_add_controller (label, GTK_EVENT_CONTROLLER (dest));
gdk_content_formats_unref (targets);
return label;