diff --git a/SOURCES/files-view-Add-menu-item-to-copy-current-path.patch b/SOURCES/files-view-Add-menu-item-to-copy-current-path.patch new file mode 100644 index 0000000..0cd5d5a --- /dev/null +++ b/SOURCES/files-view-Add-menu-item-to-copy-current-path.patch @@ -0,0 +1,77 @@ +diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c +index 08107a64e..d808b04ff 100644 +--- a/src/nautilus-files-view.c ++++ b/src/nautilus-files-view.c +@@ -6078,6 +6078,33 @@ action_cut (GSimpleAction *action, + nautilus_file_list_free (selection); + } + ++static void ++action_copy_current_location (GSimpleAction *action, ++ GVariant *state, ++ gpointer user_data) ++{ ++ NautilusFilesView *view; ++ GtkClipboard *clipboard; ++ GFile *file; ++ gchar *path; ++ NautilusFilesViewPrivate *priv; ++ ++ view = NAUTILUS_FILES_VIEW (user_data); ++ priv = nautilus_files_view_get_instance_private (view); ++ ++ if (priv->directory_as_file != NULL) ++ { ++ file = nautilus_file_get_location (priv->directory_as_file); ++ ++ clipboard = nautilus_clipboard_get (GTK_WIDGET (view)); ++ path = g_file_get_parse_name (file); ++ gtk_clipboard_set_text (clipboard, path, -1); ++ ++ g_object_unref (file); ++ g_free (path); ++ } ++} ++ + static void + action_create_links_in_place (GSimpleAction *action, + GVariant *state, +@@ -6958,6 +6985,7 @@ const GActionEntry view_entries[] = + { "new-folder", action_new_folder }, + { "select-all", action_select_all }, + { "paste", action_paste_files }, ++ { "copy-current-location", action_copy_current_location }, + { "create-link", action_create_links }, + { "new-document" }, + /* Selection menu */ +@@ -7590,6 +7618,10 @@ 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), ++ "copy-current-location"); ++ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), ++ !selection_contains_search); + + /* Drive menu */ + show_mount = (selection != NULL); +diff --git a/src/resources/ui/nautilus-pathbar-context-menu.ui b/src/resources/ui/nautilus-pathbar-context-menu.ui +index 403cf71f6..4d32c1e8e 100644 +--- a/src/resources/ui/nautilus-pathbar-context-menu.ui ++++ b/src/resources/ui/nautilus-pathbar-context-menu.ui +@@ -16,6 +16,12 @@ + Add to _Bookmarks + view.bookmark + ++
++ ++ _Copy Location ++ view.copy-current-location ++ ++
+
+ + _Paste +-- +2.36.1 + diff --git a/SOURCES/files-view-Backport-translations.patch b/SOURCES/files-view-Backport-translations.patch new file mode 100644 index 0000000..e177a7c --- /dev/null +++ b/SOURCES/files-view-Backport-translations.patch @@ -0,0 +1,156 @@ +diff -ruN nautilus-3.28.1/po/ca.po nautilus-3.28.1.translations/po/ca.po +--- nautilus-3.28.1/po/ca.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/ca.po 2022-06-20 17:02:58.239093717 +0200 +@@ -7061,3 +7061,7 @@ + #~ "Amb el Nautilus heu d'haver rebut una còpia de la Llicència Pública " + #~ "General de GNU; si no és així, escriviu a la Free Software Foundation, " + #~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "_Copia la ubicació" +diff -ruN nautilus-3.28.1/po/de.po nautilus-3.28.1.translations/po/de.po +--- nautilus-3.28.1/po/de.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/de.po 2022-06-20 17:02:58.276093695 +0200 +@@ -5716,3 +5716,7 @@ + + #~ msgid "org.gnome.Nautilus" + #~ msgstr "org.gnome.Nautilus" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "Ort _kopieren" +diff -ruN nautilus-3.28.1/po/es.po nautilus-3.28.1.translations/po/es.po +--- nautilus-3.28.1/po/es.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/es.po 2022-06-20 17:02:58.309093676 +0200 +@@ -10830,3 +10830,8 @@ + #~ msgstr "" + #~ "Nautilus es un shell gráfico para GNOME que facilita la administración de " + #~ "sus archivos y el resto de su sistema." ++ ++# src/nautilus-location-bar.c:401 ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "Copiar _ubicación" +diff -ruN nautilus-3.28.1/po/fa.po nautilus-3.28.1.translations/po/fa.po +--- nautilus-3.28.1/po/fa.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/fa.po 2022-06-20 17:02:58.327093666 +0200 +@@ -10082,3 +10082,7 @@ + + #~ msgid "C_ancel Remove" + #~ msgstr "ان_صراف از حذف" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "_رونوشت از مکان" +diff -ruN nautilus-3.28.1/po/fr.po nautilus-3.28.1.translations/po/fr.po +--- nautilus-3.28.1/po/fr.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/fr.po 2022-06-20 17:02:58.339093659 +0200 +@@ -5975,3 +5975,7 @@ + + #~ msgid "Copying “%B” to “%B”" + #~ msgstr "Copie de « %B » vers « %B »" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "Co_pier l’emplacement" +diff -ruN nautilus-3.28.1/po/fur.po nautilus-3.28.1.translations/po/fur.po +--- nautilus-3.28.1/po/fur.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/fur.po 2022-06-20 17:02:58.348093654 +0200 +@@ -7711,3 +7711,7 @@ + + #~ msgid "Set the zoom level of the current view" + #~ msgstr "Imposte il nivel di zoom de viodude atuâl" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "_Copie posizion" +diff -ruN nautilus-3.28.1/po/gl.po nautilus-3.28.1.translations/po/gl.po +--- nautilus-3.28.1/po/gl.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/gl.po 2022-06-20 17:02:58.366093644 +0200 +@@ -7429,3 +7429,8 @@ + + #~ msgid "Error autorunning software" + #~ msgstr "Produciuse un erro ao autoexecutar o software" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++#| msgid "Location" ++msgid "_Copy Location" ++msgstr "_Copiar localización" +diff -ruN nautilus-3.28.1/po/he.po nautilus-3.28.1.translations/po/he.po +--- nautilus-3.28.1/po/he.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/he.po 2022-06-20 17:02:58.387093632 +0200 +@@ -10468,3 +10468,7 @@ + + #~ msgid "Question" + #~ msgstr "שאלה" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "ה_עתקת מיקום" +diff -ruN nautilus-3.28.1/po/oc.po nautilus-3.28.1.translations/po/oc.po +--- nautilus-3.28.1/po/oc.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/oc.po 2022-06-20 17:02:58.523093554 +0200 +@@ -6999,3 +6999,7 @@ + + #~ msgid "Rename “%s”" + #~ msgstr "Renomenar lo fichièr « %s »" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "_Copiar l'emplaçament" +diff -ruN nautilus-3.28.1/po/pt.po nautilus-3.28.1.translations/po/pt.po +--- nautilus-3.28.1/po/pt.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/pt.po 2022-06-20 17:02:58.627093494 +0200 +@@ -5944,3 +5944,7 @@ + + #~ msgid "Whether the row represents a network location" + #~ msgstr "Se a linha representa uma localização de rede" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "_Copiar localização" +diff -ruN nautilus-3.28.1/po/ru.po nautilus-3.28.1.translations/po/ru.po +--- nautilus-3.28.1/po/ru.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/ru.po 2022-06-20 17:02:58.652093480 +0200 +@@ -6177,3 +6177,7 @@ + #~ msgctxt "Bookmark" + #~ msgid "_Name" + #~ msgstr "_Имя" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "_Копировать адрес" +diff -ruN nautilus-3.28.1/po/tr.po nautilus-3.28.1.translations/po/tr.po +--- nautilus-3.28.1/po/tr.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/tr.po 2022-06-20 17:02:58.776093409 +0200 +@@ -6188,3 +6188,7 @@ + + #~ msgid "D_efault zoom level:" + #~ msgstr "Ön_tanımlı yaklaştırma seviyesi:" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:24 ++msgid "_Copy Location" ++msgstr "Konumu _Kopyala" +diff -ruN nautilus-3.28.1/po/uk.po nautilus-3.28.1.translations/po/uk.po +--- nautilus-3.28.1/po/uk.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/uk.po 2022-06-20 17:02:58.808093390 +0200 +@@ -7967,3 +7967,7 @@ + + #~ msgid "Set the zoom level of the current view" + #~ msgstr "Встановити рівень масштабування поточного вікна" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "_Копіювати адресу" +diff -ruN nautilus-3.28.1/po/zh_CN.po nautilus-3.28.1.translations/po/zh_CN.po +--- nautilus-3.28.1/po/zh_CN.po 2018-04-09 22:02:06.000000000 +0200 ++++ nautilus-3.28.1.translations/po/zh_CN.po 2022-06-20 17:02:58.865093358 +0200 +@@ -5495,3 +5495,7 @@ + + #~ msgid "Zoom In" + #~ msgstr "放大" ++ ++#: src/resources/ui/nautilus-files-view-context-menus.ui:34 ++msgid "_Copy Location" ++msgstr "复制位置(_C)" diff --git a/SOURCES/nautilus-canvas-container-Remove-the-include-visible.patch b/SOURCES/nautilus-canvas-container-Remove-the-include-visible.patch new file mode 100644 index 0000000..4ecda1d --- /dev/null +++ b/SOURCES/nautilus-canvas-container-Remove-the-include-visible.patch @@ -0,0 +1,189 @@ +From a7a31137aee8c4af81d7d447ceb83ccdb2ddadc0 Mon Sep 17 00:00:00 2001 +From: Xiang Fan +Date: Fri, 13 Jul 2018 11:49:09 -0700 +Subject: [PATCH] nautilus-canvas-container: Remove the "include visible area" + logic. + +canvas_set_scroll_region_include_visible_area() was added in +ec054c80981e26b71c8bb2e6853b035dc2063e7d to fix +https://bugzilla.gnome.org/show_bug.cgi?id=42068 ("Dragging icons +adjusts scroll area in a way that causes immediate scrolling"). This is +no longer the case, because now icons remain in place when being dragged +and are not allowed to be rearranged. + +ec054c80981e26b71c8bb2e6853b035dc2063e7d causes issues relating to extra +scrolling space (#340), hence the removal. + +Fixes #340. +--- + src/nautilus-canvas-container.c | 79 +-------------------------------- + src/nautilus-canvas-container.h | 1 - + src/nautilus-canvas-private.h | 3 -- + src/nautilus-canvas-view.c | 6 --- + 4 files changed, 1 insertion(+), 88 deletions(-) + +diff --git a/src/nautilus-canvas-container.c b/src/nautilus-canvas-container.c +index 09acd47fc..bd05a3a2d 100644 +--- a/src/nautilus-canvas-container.c ++++ b/src/nautilus-canvas-container.c +@@ -968,45 +968,6 @@ get_all_icon_bounds (NautilusCanvasContainer *container, + x1, y1, x2, y2, usage); + } + +-/* Don't preserve visible white space the next time the scroll region +- * is recomputed when the container is not empty. */ +-void +-nautilus_canvas_container_reset_scroll_region (NautilusCanvasContainer *container) +-{ +- container->details->reset_scroll_region_trigger = TRUE; +-} +- +-/* Set a new scroll region without eliminating any of the currently-visible area. */ +-static void +-canvas_set_scroll_region_include_visible_area (EelCanvas *canvas, +- double x1, +- double y1, +- double x2, +- double y2) +-{ +- double old_x1, old_y1, old_x2, old_y2; +- double old_scroll_x, old_scroll_y; +- double height, width; +- GtkAllocation allocation; +- +- eel_canvas_get_scroll_region (canvas, &old_x1, &old_y1, &old_x2, &old_y2); +- gtk_widget_get_allocation (GTK_WIDGET (canvas), &allocation); +- +- width = (allocation.width) / canvas->pixels_per_unit; +- height = (allocation.height) / canvas->pixels_per_unit; +- +- old_scroll_x = gtk_adjustment_get_value (gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (canvas))); +- old_scroll_y = gtk_adjustment_get_value (gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (canvas))); +- +- x1 = MIN (x1, old_x1 + old_scroll_x); +- y1 = MIN (y1, old_y1 + old_scroll_y); +- x2 = MAX (x2, old_x1 + old_scroll_x + width); +- y2 = MAX (y2, old_y1 + old_scroll_y + height); +- +- eel_canvas_set_scroll_region +- (canvas, x1, y1, x2, y2); +-} +- + void + nautilus_canvas_container_update_scroll_region (NautilusCanvasContainer *container) + { +@@ -1014,24 +975,10 @@ nautilus_canvas_container_update_scroll_region (NautilusCanvasContainer *contain + double pixels_per_unit; + GtkAdjustment *hadj, *vadj; + float step_increment; +- gboolean reset_scroll_region; + GtkAllocation allocation; + + pixels_per_unit = EEL_CANVAS (container)->pixels_per_unit; + +- reset_scroll_region = container->details->reset_scroll_region_trigger +- || nautilus_canvas_container_is_empty (container); +- +- /* The trigger is only cleared when container is non-empty, so +- * callers can reliably reset the scroll region when an item +- * is added even if extraneous relayouts are called when the +- * window is still empty. +- */ +- if (!nautilus_canvas_container_is_empty (container)) +- { +- container->details->reset_scroll_region_trigger = FALSE; +- } +- + get_all_icon_bounds (container, &x1, &y1, &x2, &y2, BOUNDS_USAGE_FOR_ENTIRE_ITEM); + + /* Add border at the "end"of the layout (i.e. after the icons), to +@@ -1053,18 +1000,7 @@ nautilus_canvas_container_update_scroll_region (NautilusCanvasContainer *contain + y2 -= 1; + y2 = MAX (y1, y2); + +- if (reset_scroll_region) +- { +- eel_canvas_set_scroll_region +- (EEL_CANVAS (container), +- x1, y1, x2, y2); +- } +- else +- { +- canvas_set_scroll_region_include_visible_area +- (EEL_CANVAS (container), +- x1, y1, x2, y2); +- } ++ eel_canvas_set_scroll_region (EEL_CANVAS (container), x1, y1, x2, y2); + + hadj = gtk_scrollable_get_hadjustment (GTK_SCROLLABLE (container)); + vadj = gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (container)); +@@ -5722,23 +5658,10 @@ nautilus_canvas_container_get_icon_drop_target_uri (NautilusCanvasContainer *con + return uri; + } + +-/* Call to reset the scroll region only if the container is not empty, +- * to avoid having the flag linger until the next file is added. +- */ +-static void +-reset_scroll_region_if_not_empty (NautilusCanvasContainer *container) +-{ +- if (!nautilus_canvas_container_is_empty (container)) +- { +- nautilus_canvas_container_reset_scroll_region (container); +- } +-} +- + /* Re-sort, switching to automatic layout if it was in manual layout. */ + void + nautilus_canvas_container_sort (NautilusCanvasContainer *container) + { +- reset_scroll_region_if_not_empty (container); + container->details->needs_resort = TRUE; + redo_layout (container); + } +diff --git a/src/nautilus-canvas-container.h b/src/nautilus-canvas-container.h +index a370bba26..33929375d 100644 +--- a/src/nautilus-canvas-container.h ++++ b/src/nautilus-canvas-container.h +@@ -271,7 +271,6 @@ void nautilus_canvas_container_set_single_click_mode (Nauti + gboolean single_click_mode); + void nautilus_canvas_container_enable_linger_selection (NautilusCanvasContainer *view, + gboolean enable); +-void nautilus_canvas_container_reset_scroll_region (NautilusCanvasContainer *container); + void nautilus_canvas_container_set_font (NautilusCanvasContainer *container, + const char *font); + void nautilus_canvas_container_set_margins (NautilusCanvasContainer *container, +diff --git a/src/nautilus-canvas-private.h b/src/nautilus-canvas-private.h +index dd5e79060..e60e86299 100644 +--- a/src/nautilus-canvas-private.h ++++ b/src/nautilus-canvas-private.h +@@ -192,9 +192,6 @@ struct NautilusCanvasContainerDetails { + + int size_allocation_count; + guint size_allocation_count_id; +- +- /* Ignore the visible area the next time the scroll region is recomputed */ +- gboolean reset_scroll_region_trigger; + + /* a11y items used by canvas items */ + guint a11y_item_action_idle_handler; +diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c +index f74ea06db..bd3a7ae5d 100644 +--- a/src/nautilus-canvas-view.c ++++ b/src/nautilus-canvas-view.c +@@ -355,12 +355,6 @@ nautilus_canvas_view_add_files (NautilusFilesView *view, + canvas_view = NAUTILUS_CANVAS_VIEW (view); + canvas_container = get_canvas_container (canvas_view); + +- /* Reset scroll region for the first canvas added when loading a directory. */ +- if (nautilus_files_view_get_loading (view) && nautilus_canvas_container_is_empty (canvas_container)) +- { +- nautilus_canvas_container_reset_scroll_region (canvas_container); +- } +- + for (l = files; l != NULL; l = l->next) + { + if (nautilus_canvas_container_add (canvas_container, +-- +2.37.1 + diff --git a/SPECS/nautilus.spec b/SPECS/nautilus.spec index a678837..6cef126 100644 --- a/SPECS/nautilus.spec +++ b/SPECS/nautilus.spec @@ -8,7 +8,7 @@ Name: nautilus Version: 3.28.1 -Release: 17%{?dist} +Release: 20%{?dist} Summary: File manager for GNOME License: GPLv3+ @@ -77,6 +77,13 @@ Patch37: window-window-slot-Save-and-restore-navigation-histo.patch # https://bugzilla.redhat.com/show_bug.cgi?id=2068089 Patch38: Add-actions-to-the-toolbar.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2094431 +Patch39: files-view-Add-menu-item-to-copy-current-path.patch +Patch40: files-view-Backport-translations.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=2106241 +Patch41: nautilus-canvas-container-Remove-the-include-visible.patch + BuildRequires: gtk-doc BuildRequires: meson BuildRequires: gcc @@ -189,6 +196,15 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop %{_datadir}/gir-1.0/*.gir %changelog +* Tue Aug 9 2022 Ondrej Holy - 3.28.1-20 +- Fix scrolling issues in the icon view on focus changes (#2106241) + +* Fri Jul 29 2022 Ondrej Holy - 3.28.1-19 +- Fix the "Copy Location" action to copy just the plain path (#2094431) + +* Mon Jun 20 2022 Ondrej Holy - 3.28.1-18 +- Add toolbar action to copy current location (#2094431) + * Mon Jun 6 2022 Ondrej Holy - 3.28.1-17 - Add actions to the toolbar (#2068089)