summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntónio Fernandes <antoniof@gnome.org>2021-12-22 01:19:23 +0000
committerAntónio Fernandes <antoniojpfernandes@gmail.com>2021-12-22 01:38:47 +0000
commit2cfdad89108b85f8a6f5aae9fda2596203b6957a (patch)
treeb153c489a9d63b351e6b7c292afd442b2a0a11c8
parentebd837f004140a64c03c0e39a17076bc8d89fe96 (diff)
downloadnautilus-2cfdad89108b85f8a6f5aae9fda2596203b6957a.tar.gz
list-view: Merge did_not_drag() into its caller
This function has only one caller and it relies on the passed GdkEvent for everything. However, in GTK 4, we are going to depend less on GdkEvent and more on the gesture itself and its signal handler parameters. So, inline the function to make sure we have everything at ready for when we switch to GTK 4.
-rw-r--r--src/nautilus-list-view.c140
1 files changed, 65 insertions, 75 deletions
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 2e26247dc..1e5abf60b 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -256,69 +256,6 @@ get_click_policy (void)
}
static void
-nautilus_list_view_did_not_drag (NautilusListView *view,
- const GdkEvent *event)
-{
- GtkTreeView *tree_view;
- GtkTreeSelection *selection;
- gdouble x;
- gdouble y;
- GtkTreePath *path;
- guint button;
- GdkModifierType state;
-
- tree_view = view->details->tree_view;
- selection = gtk_tree_view_get_selection (tree_view);
-
- if (!gdk_event_get_coords (event, &x, &y))
- {
- return;
- }
-
- if (!gtk_tree_view_get_path_at_pos (tree_view, x, y, &path, NULL, NULL, NULL))
- {
- return;
- }
-
- if (!gdk_event_get_button (event, &button))
- {
- return;
- }
-
- gdk_event_get_state (event, &state);
-
- if ((button == GDK_BUTTON_PRIMARY || button == GDK_BUTTON_MIDDLE)
- && ((state & GDK_CONTROL_MASK) != 0 ||
- (state & GDK_SHIFT_MASK) == 0)
- && view->details->row_selected_on_button_down)
- {
- if (!button_event_modifies_selection (event))
- {
- gtk_tree_selection_unselect_all (selection);
- gtk_tree_selection_select_path (selection, path);
- }
- else
- {
- gtk_tree_selection_unselect_path (selection, path);
- }
- }
-
- if ((get_click_policy () == NAUTILUS_CLICK_POLICY_SINGLE)
- && !button_event_modifies_selection (event))
- {
- if (button == GDK_BUTTON_PRIMARY)
- {
- activate_selected_items (view);
- }
- else if (button == GDK_BUTTON_MIDDLE)
- {
- activate_selected_items_alternate (view, NULL, TRUE);
- }
- }
- gtk_tree_path_free (path);
-}
-
-static void
on_event_controller_motion_motion (GtkEventControllerMotion *controller,
double x,
double y,
@@ -852,6 +789,14 @@ on_tree_view_multi_press_gesture_released (GtkGestureMultiPress *gesture,
{
NautilusListView *view;
guint button;
+ GdkEventSequence *sequence;
+ const GdkEvent *event;
+ GtkTreeView *tree_view;
+ GtkTreeSelection *selection;
+ gdouble event_x;
+ gdouble event_y;
+ GtkTreePath *path;
+ GdkModifierType state;
view = NAUTILUS_LIST_VIEW (callback_data);
button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture));
@@ -861,24 +806,69 @@ on_tree_view_multi_press_gesture_released (GtkGestureMultiPress *gesture,
}
view->details->drag_button = 0;
- if (!view->details->drag_started)
+
+ if (view->details->drag_started)
{
- GdkEventSequence *sequence;
- const GdkEvent *event;
+ return;
+ }
- sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
- event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
- /* Typically will only happen with GTK+ <= 3.22.30 and <= 3.93.0,
- * where ::released is emitted after ::cancel, but can’t hurt to guard
- * against it anyway.
- */
- if (event == NULL)
+ /* Did not drag. */
+
+ sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture));
+ event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence);
+ /* Typically will only happen with GTK+ <= 3.22.30 and <= 3.93.0,
+ * where ::released is emitted after ::cancel, but can’t hurt to guard
+ * against it anyway.
+ */
+ if (event == NULL)
+ {
+ return;
+ }
+
+ tree_view = view->details->tree_view;
+ selection = gtk_tree_view_get_selection (tree_view);
+
+ if (!gdk_event_get_coords (event, &event_x, &event_y))
+ {
+ return;
+ }
+
+ if (!gtk_tree_view_get_path_at_pos (tree_view, event_x, event_y, &path, NULL, NULL, NULL))
+ {
+ return;
+ }
+
+ gdk_event_get_state (event, &state);
+
+ if ((button == GDK_BUTTON_PRIMARY || button == GDK_BUTTON_MIDDLE)
+ && ((state & GDK_CONTROL_MASK) != 0 ||
+ (state & GDK_SHIFT_MASK) == 0)
+ && view->details->row_selected_on_button_down)
+ {
+ if (!button_event_modifies_selection (event))
{
- return;
+ gtk_tree_selection_unselect_all (selection);
+ gtk_tree_selection_select_path (selection, path);
+ }
+ else
+ {
+ gtk_tree_selection_unselect_path (selection, path);
}
+ }
- nautilus_list_view_did_not_drag (view, event);
+ if ((get_click_policy () == NAUTILUS_CLICK_POLICY_SINGLE)
+ && !button_event_modifies_selection (event))
+ {
+ if (button == GDK_BUTTON_PRIMARY)
+ {
+ activate_selected_items (view);
+ }
+ else if (button == GDK_BUTTON_MIDDLE)
+ {
+ activate_selected_items_alternate (view, NULL, TRUE);
+ }
}
+ gtk_tree_path_free (path);
}
static gboolean