GtkWidget *magnifier;
GtkGesture *drag_gesture;
- GtkEventController *motion_controller;
GtkEventController *key_controller;
GtkWidget *progress_widget;
GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry);
GtkCssNode *widget_node;
GtkGesture *gesture;
+ GtkEventController *controller;
gint i;
gtk_widget_set_can_focus (GTK_WIDGET (entry), TRUE);
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (gesture), TRUE);
gtk_widget_add_controller (GTK_WIDGET (entry), GTK_EVENT_CONTROLLER (gesture));
- priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (entry));
- g_signal_connect (priv->motion_controller, "motion",
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "motion",
G_CALLBACK (entry_motion_cb), entry);
+ gtk_widget_add_controller (GTK_WIDGET (entry), controller);
priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (entry));
g_signal_connect (priv->key_controller, "key-pressed",
g_free (priv->placeholder_text);
g_free (priv->im_module);
- g_clear_object (&priv->motion_controller);
-
if (priv->tabs)
pango_tab_array_free (priv->tabs);
/**
* gtk_event_controller_motion_new:
- * @widget: a #GtkWidget
*
- * Creates a new event controller that will handle motion events
- * for the given @widget.
+ * Creates a new event controller that will handle motion events.
*
* Returns: a new #GtkEventControllerMotion
**/
GtkEventController *
-gtk_event_controller_motion_new (GtkWidget *widget)
+gtk_event_controller_motion_new (void)
{
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
-
return g_object_new (GTK_TYPE_EVENT_CONTROLLER_MOTION,
- "widget", widget,
NULL);
}
GType gtk_event_controller_motion_get_type (void) G_GNUC_CONST;
GDK_AVAILABLE_IN_ALL
-GtkEventController *gtk_event_controller_motion_new (GtkWidget *widget);
+GtkEventController *gtk_event_controller_motion_new (void);
G_END_DECLS
static void
gtk_icon_view_init (GtkIconView *icon_view)
{
+ GtkEventController *controller;
GtkGesture *gesture;
icon_view->priv = gtk_icon_view_get_instance_private (icon_view);
icon_view);
gtk_widget_add_controller (GTK_WIDGET (icon_view), GTK_EVENT_CONTROLLER (gesture));
- icon_view->priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (icon_view));
- g_signal_connect (icon_view->priv->motion_controller, "leave", G_CALLBACK (gtk_icon_view_leave),
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "leave", G_CALLBACK (gtk_icon_view_leave),
icon_view);
- g_signal_connect (icon_view->priv->motion_controller, "motion", G_CALLBACK (gtk_icon_view_motion),
+ g_signal_connect (controller, "motion", G_CALLBACK (gtk_icon_view_motion),
icon_view);
+ gtk_widget_add_controller (GTK_WIDGET (icon_view), controller);
icon_view->priv->key_controller = gtk_event_controller_key_new (GTK_WIDGET (icon_view));
g_signal_connect (icon_view->priv->key_controller, "key-pressed", G_CALLBACK (gtk_icon_view_key_pressed),
priv->cell_area = NULL;
}
- g_clear_object (&priv->motion_controller);
g_clear_object (&priv->key_controller);
G_OBJECT_CLASS (gtk_icon_view_parent_class)->dispose (object);
GList *items;
- GtkEventController *motion_controller;
GtkEventController *key_controller;
GtkAdjustment *hadjustment;
if (priv->select_info)
{
- g_object_unref (priv->select_info->motion_controller);
g_object_unref (priv->select_info->provider);
}
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (priv->select_info->multipress_gesture), TRUE);
gtk_widget_add_controller (GTK_WIDGET (label), GTK_EVENT_CONTROLLER (priv->select_info->multipress_gesture));
- priv->select_info->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (label));
+ priv->select_info->motion_controller = gtk_event_controller_motion_new ();
g_signal_connect (priv->select_info->motion_controller, "motion",
G_CALLBACK (gtk_label_motion), label);
g_signal_connect (priv->select_info->motion_controller, "leave",
G_CALLBACK (gtk_label_leave), label);
+ gtk_widget_add_controller (GTK_WIDGET (label), priv->select_info->motion_controller);
priv->select_info->provider = g_object_new (GTK_TYPE_LABEL_CONTENT, NULL);
GTK_LABEL_CONTENT (priv->select_info->provider)->label = label;
{
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_widget_remove_controller (GTK_WIDGET (label), priv->select_info->motion_controller);
GTK_LABEL_CONTENT (priv->select_info->provider)->label = NULL;
g_object_unref (priv->select_info->provider);
G_CALLBACK (gtk_menu_scroll_controller_scroll), menu);
gtk_widget_add_controller (GTK_WIDGET (menu), controller);
- priv->motion_controller =
- gtk_event_controller_motion_new (GTK_WIDGET (menu));
- g_signal_connect (priv->motion_controller, "enter", G_CALLBACK (gtk_menu_enter), menu);
- g_signal_connect (priv->motion_controller, "motion", G_CALLBACK (gtk_menu_motion), menu);
- g_signal_connect (priv->motion_controller, "leave", G_CALLBACK (gtk_menu_leave), menu);
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "enter", G_CALLBACK (gtk_menu_enter), menu);
+ g_signal_connect (controller, "motion", G_CALLBACK (gtk_menu_motion), menu);
+ g_signal_connect (controller, "leave", G_CALLBACK (gtk_menu_leave), menu);
+ gtk_widget_add_controller (GTK_WIDGET (menu), controller);
priv->key_controller =
gtk_event_controller_key_new (GTK_WIDGET (menu));
gtk_widget_unparent (priv->top_arrow_widget);
gtk_widget_unparent (priv->bottom_arrow_widget);
- g_clear_object (&priv->motion_controller);
g_clear_object (&priv->key_controller);
G_OBJECT_CLASS (gtk_menu_parent_class)->finalize (object);
static void
gtk_menu_item_init (GtkMenuItem *menu_item)
{
+ GtkEventController *controller;
GtkMenuItemPrivate *priv;
priv = gtk_menu_item_get_instance_private (menu_item);
priv->submenu_placement = GTK_TOP_BOTTOM;
priv->timer = 0;
- priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (menu_item));
- g_signal_connect (priv->motion_controller, "enter", G_CALLBACK (gtk_menu_item_enter), menu_item);
- g_signal_connect (priv->motion_controller, "leave", G_CALLBACK (gtk_menu_item_leave), menu_item);
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "enter", G_CALLBACK (gtk_menu_item_enter), menu_item);
+ g_signal_connect (controller, "leave", G_CALLBACK (gtk_menu_item_leave), menu_item);
+ gtk_widget_add_controller (GTK_WIDGET (menu_item), controller);
}
/**
GtkWidget *top_arrow_widget;
GtkWidget *bottom_arrow_widget;
- GtkEventController *motion_controller;
GtkEventController *key_controller;
gint scroll_offset;
guint switch_tab_timer;
GList *switch_tab;
- GtkEventController *motion_controller;
-
guint32 timer;
guint child_has_focus : 1;
{
GtkNotebookPrivate *priv;
GdkContentFormats *targets;
+ GtkEventController *controller;
GtkGesture *gesture;
gtk_widget_set_can_focus (GTK_WIDGET (notebook), TRUE);
g_signal_connect (gesture, "released", G_CALLBACK (gtk_notebook_gesture_released), notebook);
gtk_widget_add_controller (GTK_WIDGET (notebook), GTK_EVENT_CONTROLLER (gesture));
- priv->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (notebook));
- g_signal_connect (priv->motion_controller, "motion", G_CALLBACK (gtk_notebook_motion), notebook);
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "motion", G_CALLBACK (gtk_notebook_motion), notebook);
+ gtk_widget_add_controller (GTK_WIDGET (notebook), controller);
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (notebook)),
GTK_STYLE_CLASS_FRAME);
GtkNotebook *notebook = GTK_NOTEBOOK (object);
GtkNotebookPrivate *priv = notebook->priv;
- g_clear_object (&priv->motion_controller);
gtk_widget_unparent (priv->box);
G_OBJECT_CLASS (gtk_notebook_parent_class)->finalize (object);
GtkGesture *pan_gesture; /* Used for touch */
GtkGesture *drag_gesture; /* Used for mice */
- GtkEventController *motion_controller;
gint child1_size;
gint drag_pos;
gtk_paned_set_saved_focus (paned, NULL);
gtk_paned_set_first_paned (paned, NULL);
- g_clear_object (&priv->motion_controller);
-
gtk_widget_unparent (priv->handle_widget);
G_OBJECT_CLASS (gtk_paned_parent_class)->finalize (object);
gtk_paned_init (GtkPaned *paned)
{
GtkPanedPrivate *priv = gtk_paned_get_instance_private (paned);
+ GtkEventController *controller;
GtkGesture *gesture;
gtk_widget_set_has_surface (GTK_WIDGET (paned), FALSE);
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));
- g_signal_connect (priv->motion_controller, "motion", G_CALLBACK (gtk_paned_motion), paned);
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "motion", G_CALLBACK (gtk_paned_motion), paned);
+ gtk_widget_add_controller (GTK_WIDGET (paned), controller);
priv->handle_widget = gtk_gizmo_new ("separator",
NULL,
GtkGesture *drag_gesture;
GtkGesture *pan_gesture;
- GtkEventController *motion_controller;
-
gdouble drag_start_x;
gdouble drag_start_y;
G_CALLBACK (scroll_controller_decelerate), scrolled_window);
gtk_widget_add_controller (widget, controller);
- priv->motion_controller = gtk_event_controller_motion_new (widget);
- g_signal_connect (priv->motion_controller, "leave",
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "leave",
G_CALLBACK (motion_controller_leave), scrolled_window);
+ gtk_widget_add_controller (widget, controller);
}
/**
GtkTextPendingScroll *pending_scroll;
GtkGesture *drag_gesture;
- GtkEventController *motion_controller;
GtkEventController *key_controller;
GtkCssNode *selection_node;
GdkContentFormats *target_list;
GtkTextViewPrivate *priv;
GtkStyleContext *context;
+ GtkEventController *controller;
GtkGesture *gesture;
text_view->priv = gtk_text_view_get_instance_private (text_view);
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);
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "motion", G_CALLBACK (gtk_text_view_motion), widget);
+ gtk_widget_add_controller (widget, controller);
priv->key_controller = gtk_event_controller_key_new (widget);
g_signal_connect (priv->key_controller, "key-pressed",
cancel_pending_scroll (text_view);
- g_object_unref (priv->motion_controller);
g_object_unref (priv->key_controller);
if (priv->tabs)
GtkGesture *multipress_gesture;
GtkGesture *drag_gesture; /* Rubberbanding, row DnD */
GtkGesture *column_drag_gesture; /* Column reordering, resizing */
- GtkEventController *motion_controller;
/* Tooltip support */
gint tooltip_column;
GtkTreeViewPrivate *priv;
GtkCssNode *widget_node;
GtkGesture *gesture;
+ GtkEventController *controller;
priv = tree_view->priv = gtk_tree_view_get_instance_private (tree_view);
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",
+ controller = gtk_event_controller_motion_new ();
+ g_signal_connect (controller, "enter",
G_CALLBACK (gtk_tree_view_motion_controller_enter), tree_view);
- g_signal_connect (priv->motion_controller, "leave",
+ g_signal_connect (controller, "leave",
G_CALLBACK (gtk_tree_view_motion_controller_leave), tree_view);
- g_signal_connect (priv->motion_controller, "motion",
+ g_signal_connect (controller, "motion",
G_CALLBACK (gtk_tree_view_motion_controller_motion), tree_view);
+ gtk_widget_add_controller (GTK_WIDGET (tree_view), controller);
}
\f
tree_view->priv->vadjustment = NULL;
}
- g_clear_object (&tree_view->priv->motion_controller);
-
GTK_WIDGET_CLASS (gtk_tree_view_parent_class)->destroy (widget);
}
GFile *file;
GtkMediaStream *media_stream;
- GtkEventController *motion_controller;
-
GtkWidget *box;
GtkWidget *video_image;
GtkWidget *overlay_icon;
static GParamSpec *properties[N_PROPS] = { NULL, };
+static gboolean
+gtk_video_hide_controls (gpointer data)
+{
+ GtkVideo *self = data;
+
+ gtk_revealer_set_reveal_child (GTK_REVEALER (self->controls_revealer), FALSE);
+
+ self->controls_hide_source = 0;
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+gtk_video_motion (GtkEventControllerMotion *motion,
+ double x,
+ double y,
+ GtkVideo *self)
+{
+ gtk_revealer_set_reveal_child (GTK_REVEALER (self->controls_revealer), TRUE);
+ if (self->controls_hide_source)
+ g_source_remove (self->controls_hide_source);
+ self->controls_hide_source = g_timeout_add (5 * 1000,
+ gtk_video_hide_controls,
+ self);
+}
+
static void
gtk_video_measure (GtkWidget *widget,
GtkOrientation orientation,
gtk_video_set_media_stream (self, NULL);
- g_clear_object (&self->motion_controller);
g_clear_pointer (&self->box, gtk_widget_unparent);
G_OBJECT_CLASS (gtk_video_parent_class)->dispose (object);
gtk_widget_class_bind_template_child (widget_class, GtkVideo, overlay_icon);
gtk_widget_class_bind_template_child (widget_class, GtkVideo, controls);
gtk_widget_class_bind_template_child (widget_class, GtkVideo, controls_revealer);
+ gtk_widget_class_bind_template_callback (widget_class, gtk_video_motion);
gtk_widget_class_set_css_name (widget_class, I_("video"));
}
-static gboolean
-gtk_video_hide_controls (gpointer data)
-{
- GtkVideo *self = data;
-
- gtk_revealer_set_reveal_child (GTK_REVEALER (self->controls_revealer), FALSE);
-
- self->controls_hide_source = 0;
-
- return G_SOURCE_REMOVE;
-}
-
-static void
-gtk_video_motion (GtkEventControllerMotion *motion,
- double x,
- double y,
- GtkVideo *self)
-{
- gtk_revealer_set_reveal_child (GTK_REVEALER (self->controls_revealer), TRUE);
- if (self->controls_hide_source)
- g_source_remove (self->controls_hide_source);
- self->controls_hide_source = g_timeout_add (5 * 1000,
- gtk_video_hide_controls,
- self);
-}
-
static void
gtk_video_init (GtkVideo *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
gtk_widget_set_has_surface (GTK_WIDGET (self), FALSE);
-
- self->motion_controller = gtk_event_controller_motion_new (GTK_WIDGET (self));
- g_signal_connect (self->motion_controller, "motion", G_CALLBACK (gtk_video_motion), self);
}
/**
</child>
</object>
</child>
+ <child>
+ <object class="GtkEventControllerMotion">
+ <signal name="motion" handler="gtk_video_motion" swapped="no"/>
+ </object>
+ </child>
</template>
</interface>
gtk_overlay_add_overlay (GTK_OVERLAY (overlay), child);
g_object_set (child, "margin", 4, NULL);
- controller = gtk_event_controller_motion_new (child);
- g_object_set_data_full (G_OBJECT (child), "motion", controller, g_object_unref);
+ controller = gtk_event_controller_motion_new ();
g_signal_connect (controller, "enter", G_CALLBACK (on_enter), overlay);
+ gtk_widget_add_controller (child, controller);
return win;
}