batch-rename-dialog: Replace ::event handlers with controllers

Rebased and ammended by António Fernandes <antoniof@gnome.org>
This commit is contained in:
Ernestas Kulik 2018-08-09 12:24:26 +03:00 committed by António Fernandes
parent 58d68c25ad
commit dde0b49675

View file

@ -67,6 +67,8 @@ struct _NautilusBatchRenameDialog
GList *listbox_icons;
GtkSizeGroup *size_group;
GList *motion_controllers;
GList *selection;
GList *new_names;
NautilusBatchRenameDialogMode mode;
@ -1543,15 +1545,17 @@ update_row_shadowing (GtkWidget *row,
gtk_style_context_set_state (context, flags);
}
static gboolean
on_motion_notify (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
static void
on_event_controller_motion_motion (GtkEventControllerMotion *controller,
double x,
double y,
gpointer user_data)
{
GtkWidget *widget;
NautilusBatchRenameDialog *dialog;
gdouble y;
GtkListBoxRow *row;
widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (controller));
dialog = NAUTILUS_BATCH_RENAME_DIALOG (user_data);
if (dialog->preselected_row1 && dialog->preselected_row2)
@ -1560,11 +1564,6 @@ on_motion_notify (GtkWidget *widget,
update_row_shadowing (dialog->preselected_row2, FALSE);
}
if (G_UNLIKELY (!gdk_event_get_coords (event, NULL, &y)))
{
g_return_val_if_reached (GDK_EVENT_PROPAGATE);
}
if (widget == dialog->result_listbox)
{
row = gtk_list_box_get_row_at_y (GTK_LIST_BOX (dialog->original_name_listbox), y);
@ -1597,14 +1596,11 @@ on_motion_notify (GtkWidget *widget,
update_row_shadowing (GTK_WIDGET (row), TRUE);
dialog->preselected_row2 = GTK_WIDGET (row);
}
return GDK_EVENT_PROPAGATE;
}
static gboolean
on_leave_notify (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
static void
on_event_controller_motion_leave (GtkEventControllerMotion *controller,
gpointer user_data)
{
NautilusBatchRenameDialog *dialog;
@ -1615,30 +1611,6 @@ on_leave_notify (GtkWidget *widget,
dialog->preselected_row1 = NULL;
dialog->preselected_row2 = NULL;
return GDK_EVENT_PROPAGATE;
}
static gboolean
on_event (GtkWidget *widget,
GdkEvent *event,
gpointer user_data)
{
GdkEventType event_type;
event_type = gdk_event_get_event_type (event);
if (event_type == GDK_MOTION_NOTIFY)
{
return on_motion_notify (widget, event, user_data);
}
if (event_type == GDK_LEAVE_NOTIFY)
{
return on_leave_notify (widget, event, user_data);
}
return GDK_EVENT_PROPAGATE;
}
static void
@ -1934,6 +1906,7 @@ nautilus_batch_rename_dialog_finalize (GObject *object)
nautilus_directory_list_free (dialog->distinct_parent_directories);
g_object_unref (dialog->size_group);
g_clear_list (&dialog->motion_controllers, g_object_unref);
g_hash_table_destroy (dialog->tag_info_table);
@ -2082,6 +2055,23 @@ nautilus_batch_rename_dialog_new (GList *selection,
return GTK_WIDGET (dialog);
}
static void
connect_to_pointer_motion_events (NautilusBatchRenameDialog *self,
GtkWidget *listbox)
{
GtkEventController *controller;
controller = gtk_event_controller_motion_new (listbox);
gtk_event_controller_set_propagation_phase (controller, GTK_PHASE_CAPTURE);
g_signal_connect (controller, "leave",
G_CALLBACK (on_event_controller_motion_leave), self);
g_signal_connect (controller, "motion",
G_CALLBACK (on_event_controller_motion_motion), self);
self->motion_controllers = g_list_prepend (self->motion_controllers,
controller);
}
static void
nautilus_batch_rename_dialog_init (NautilusBatchRenameDialog *self)
{
@ -2168,18 +2158,9 @@ nautilus_batch_rename_dialog_init (NautilusBatchRenameDialog *self)
self->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
g_signal_connect (self->original_name_listbox,
"event",
G_CALLBACK (on_event),
self);
g_signal_connect (self->result_listbox,
"event",
G_CALLBACK (on_event),
self);
g_signal_connect (self->arrow_listbox,
"event",
G_CALLBACK (on_event),
self);
connect_to_pointer_motion_events (self, self->original_name_listbox);
connect_to_pointer_motion_events (self, self->result_listbox);
connect_to_pointer_motion_events (self, self->arrow_listbox);
self->metadata_cancellable = g_cancellable_new ();
}