[nautilus/wip/antoniof/flow-box-preparation: 29/46] files-view: Make preview an action
- From: António Fernandes <antoniof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/antoniof/flow-box-preparation: 29/46] files-view: Make preview an action
- Date: Wed, 22 Dec 2021 00:36:38 +0000 (UTC)
commit 64080eb1c66ba645aa9d816e4fc1f8814e26a6de
Author: António Fernandes <antoniof gnome org>
Date: Sat Dec 18 13:44:11 2021 +0000
files-view: Make preview an action
Preview is activated when Space key is pressed. It has been implemented
in each view's key event handlers. Except the new grid view, where it
is part of the GtkFlowBox::child-activated handler; as this is not an
event handler, it requires calling gtk_get_current_event() in order
to know the pressed key and possible modifiers.
This is problematic because gtk_get_current_event() is gone in GTK 4.
Instead, let's simplify this whole thing by making an action and
setting an accelerator. This will trigger before the event handlers,
so there is no need for the event handlers to do anything about it.
src/nautilus-canvas-view.c | 15 ---------------
src/nautilus-files-view.c | 35 ++++++++++++++++++++++-------------
src/nautilus-files-view.h | 3 ---
src/nautilus-list-view.c | 19 -------------------
src/nautilus-view-icon-controller.c | 23 +----------------------
5 files changed, 23 insertions(+), 72 deletions(-)
---
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index ce162d414..fdb47c328 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -1039,19 +1039,6 @@ canvas_container_activate_callback (NautilusCanvasContainer *container,
0, TRUE);
}
-static void
-canvas_container_activate_previewer_callback (NautilusCanvasContainer *container,
- GList *file_list,
- GArray *locations,
- NautilusCanvasView *canvas_view)
-{
- g_assert (NAUTILUS_IS_CANVAS_VIEW (canvas_view));
- g_assert (container == get_canvas_container (canvas_view));
-
- nautilus_files_view_preview_files (NAUTILUS_FILES_VIEW (canvas_view),
- file_list, locations);
-}
-
/* this is called in one of these cases:
* - we activate with enter holding shift
* - we activate with space holding shift
@@ -1390,8 +1377,6 @@ initialize_canvas_container (NautilusCanvasView *canvas_view,
G_CALLBACK (canvas_container_activate_callback), canvas_view, 0);
g_signal_connect_object (canvas_container, "activate-alternate",
G_CALLBACK (canvas_container_activate_alternate_callback), canvas_view, 0);
- g_signal_connect_object (canvas_container, "activate-previewer",
- G_CALLBACK (canvas_container_activate_previewer_callback), canvas_view, 0);
g_signal_connect_object (canvas_container, "band-select-started",
G_CALLBACK (band_select_started_callback), canvas_view, 0);
g_signal_connect_object (canvas_container, "band-select-ended",
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 64ca4377b..cbddd0f08 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -1278,19 +1278,6 @@ nautilus_files_view_preview (NautilusFilesView *view,
}
}
-void
-nautilus_files_view_preview_files (NautilusFilesView *view,
- GList *files,
- GArray *locations)
-{
- PreviewExportData *data = g_new0 (PreviewExportData, 1);
-
- data->uri = nautilus_file_get_uri (files->data);
- data->is_update = FALSE;
-
- nautilus_files_view_preview (view, data);
-}
-
static void
nautilus_files_view_preview_update (NautilusFilesView *view)
{
@@ -1724,6 +1711,23 @@ action_invert_selection (GSimpleAction *action,
nautilus_files_view_invert_selection (user_data);
}
+static void
+action_preview_selection (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusFilesView *view = NAUTILUS_FILES_VIEW (user_data);
+ g_autolist (NautilusFile) selection = NULL;
+ PreviewExportData *data = g_new0 (PreviewExportData, 1);
+
+ selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
+
+ data->uri = nautilus_file_get_uri (selection->data);
+ data->is_update = FALSE;
+
+ nautilus_files_view_preview (view, data);
+}
+
static void
pattern_select_response_cb (GtkWidget *dialog,
int response,
@@ -7217,6 +7221,7 @@ const GActionEntry view_entries[] =
/* Only accesible by shorcuts */
{ "select-pattern", action_select_pattern },
{ "invert-selection", action_invert_selection },
+ { "preview-selection", action_preview_selection },
};
static gboolean
@@ -7800,6 +7805,9 @@ real_update_actions_state (NautilusFilesView *view)
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
can_move_files && !selection_contains_recent &&
!selection_contains_starred);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "preview-selection");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), selection_count != 0);
/* Drive menu */
show_mount = (selection != NULL);
@@ -10053,6 +10061,7 @@ nautilus_files_view_init (NautilusFilesView *view)
nautilus_application_set_accelerator (app, "view.select-pattern", "<control>s");
nautilus_application_set_accelerators (app, "view.zoom-standard", zoom_standard_accels);
nautilus_application_set_accelerator (app, "view.invert-selection", "<shift><control>i");
+ nautilus_application_set_accelerator (app, "view.preview-selection", "space");
priv->starred_cancellable = g_cancellable_new ();
priv->tag_manager = nautilus_tag_manager_get ();
diff --git a/src/nautilus-files-view.h b/src/nautilus-files-view.h
index f1b31d464..afeabc3c5 100644
--- a/src/nautilus-files-view.h
+++ b/src/nautilus-files-view.h
@@ -266,9 +266,6 @@ void nautilus_files_view_activate_files (Nautil
void nautilus_files_view_activate_file (NautilusFilesView *view,
NautilusFile *file,
NautilusWindowOpenFlags flags);
-void nautilus_files_view_preview_files (NautilusFilesView *view,
- GList *files,
- GArray *locations);
void nautilus_files_view_start_batching_selection_changes (NautilusFilesView *view);
void nautilus_files_view_stop_batching_selection_changes (NautilusFilesView *view);
void nautilus_files_view_notify_selection_changed (NautilusFilesView *view);
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index 1df7223b0..56337afa8 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -172,21 +172,6 @@ list_selection_changed_callback (GtkTreeSelection *selection,
nautilus_files_view_notify_selection_changed (view);
}
-static void
-preview_selected_items (NautilusListView *view)
-{
- GList *file_list;
-
- file_list = nautilus_list_view_get_selection (NAUTILUS_FILES_VIEW (view));
-
- if (file_list != NULL)
- {
- nautilus_files_view_preview_files (NAUTILUS_FILES_VIEW (view),
- file_list, NULL);
- nautilus_file_list_free (file_list);
- }
-}
-
static void
activate_selected_items (NautilusListView *view)
{
@@ -971,10 +956,6 @@ key_press_callback (GtkWidget *widget,
{
activate_selected_items_alternate (NAUTILUS_LIST_VIEW (view), NULL, TRUE);
}
- else
- {
- preview_selected_items (NAUTILUS_LIST_VIEW (view));
- }
return GDK_EVENT_STOP;
}
diff --git a/src/nautilus-view-icon-controller.c b/src/nautilus-view-icon-controller.c
index b4746efd5..ed4bee7df 100644
--- a/src/nautilus-view-icon-controller.c
+++ b/src/nautilus-view-icon-controller.c
@@ -981,34 +981,13 @@ on_child_activated (GtkFlowBox *flow_box,
NautilusViewItemModel *item_model;
NautilusFile *file;
g_autoptr (GList) list = NULL;
- GdkEvent *event;
- guint keyval;
- gboolean is_preview = FALSE;
item_model = g_list_model_get_item (G_LIST_MODEL (self->model),
gtk_flow_box_child_get_index (child));
file = nautilus_view_item_model_get_file (item_model);
list = g_list_append (list, file);
- event = gtk_get_current_event ();
- if (event && gdk_event_get_keyval (event, &keyval))
- {
- if (keyval == GDK_KEY_space)
- {
- is_preview = TRUE;
- }
- }
-
- if (is_preview)
- {
- nautilus_files_view_preview_files (NAUTILUS_FILES_VIEW (self), list, NULL);
- }
- else
- {
- nautilus_files_view_activate_files (NAUTILUS_FILES_VIEW (self), list, 0, TRUE);
- }
-
- g_clear_pointer (&event, gdk_event_free);
+ nautilus_files_view_activate_files (NAUTILUS_FILES_VIEW (self), list, 0, TRUE);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]