summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* column-chooser: Port from TreeView to ListBoxCorey Berla2023-05-042-335/+173
|
* column-chooser: Remove up/down buttonsCorey Berla2023-05-042-129/+0
| | | | These will be implemented in a later commit
* column-chooser: Subclass AdwWindow instead of GtkBoxCorey Berla2023-05-046-142/+118
| | | | | | | | | | We were subclassing from GtkBox and then, list-view created a list-view-column-editor which subclassed from AdwWindow to add the column-chooser. It's a lot of extra code / complexity for something that is only used in list-view. This also allows us to directly use column-chooser within list-view. Also drop the list description label, in preparation for the switch to GtkListBox.
* column-chooser: Chain up constructedCorey Berla2023-05-041-0/+2
| | | | | | | | | This bug has been around since the function was added over 12 years ago. Fortunately, it doesn't have any noticeable impacts. But we are about to change the parent class to AdwWindow, which needs to run its own .constructed(), so let's chain up in preparation. See: 4b3038b4ea85ce309d6fb128675611d3c912739e
* help-overlay: Use action-name propertiesSabri Ünal2023-05-041-19/+19
| | | | Use action-name properties to avoid repeating shortcut assignments.
* name-cell: Clear loading timeout on finalizeCorey Berla2023-05-041-0/+1
| | | | Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2882
* view: Port to GtkColumnViewCellCorey Berla2023-04-244-25/+36
| | | | | | This doesn't give us anything currently, but it's the direction that GtkColumnView is going in, so let's use it. Some minor modifications are necessary to list-base where GridView and ColumnView share code.
* window: fix incorrect string when moving files to trashSayan Bhattacharjee2023-04-241-3/+3
| | | | | | | | | | | | When moving multiple files to trash, the toast currently says: "%d files deleted". However, "deleted" implies permanent loss of data. But, in this case, we are just moving files to the trash. This commit corrects the string to show the actual action: "%d files moved to trash". Also correct Translators comments to make it consistent with the action. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2830
* progress-info-widget: use different icon for stopping operationPeter Eisenmann2023-04-243-1/+4
| | | | | | | | | | Using the same icon as for closing windows and dialogs can lead to user confusion and thus accidental cancellation of operations. This adds and uses a new icon, inspired by Builder's use of it to stop ongoing operations. Fixes #985
* progress-info-widget: remove unused image definitionPeter Eisenmann2023-04-241-3/+0
|
* freedesktop-dbus: Drop the connection propertyOndrej Holy2023-04-243-79/+9
| | | | | | | | The `NautilusFreedesktopDBus` class has a `connection` property, which is not needed anymore after the commit 765b4d24. Let's drop that property now. This effectively reverts a big part of commit 2293e813. Related: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/1134
* file-operations: Handle errors properly in delete_files_recursivelyCorey Berla2023-04-241-0/+8
| | | | | | | | | | | | | | | | | | | | The callback function in delete_files_recursively() uses the results from its GError to determine if it should call nautilus_file_changes_queue_file_removed() (which ultimately calls the list-base remove_file() function). This normally, works as expected, except when one of the child files fails to delete. We check for recursive deletion failures, but we never get the error that caused that failure. This means that the callback function will believe that the parent folder was deleted (when it really wasn't), and the item will disappear from the view in Nautilus because of the call to nautilus_file_changes_queue_file_removed(). If we weren't successful at deleting, but there's no error, that means that a recursive call to delete failed. In that case let's generate our own error. Fixes: #517
* Apply 1 suggestion(s) to 1 file(s)Corey Berla2023-04-241-1/+0
|
* properties-window: Port GtkComboBox to GtkDropDownCorey Berla2023-04-242-151/+99
|
* general: Fix indentation nitpicksAntónio Fernandes2023-04-239-38/+38
| | | | Pass new uncrustify criteria. No logic changes.
* Revert "files-view: Focus view items directly"Corey Berla2023-04-221-42/+0
| | | | | | | | | | | | This reverts commit 9ecd422cc78efad939d072e61c13e1c3a7726fc9. Its commit message is misleading. Maybe it had such a side effect, but the issue it fixed was actually a GTK bug which got fixed in the meantime: https://gitlab.gnome.org/GNOME/gtk/-/commit/8455b9ac74d5337429a1a14eb> Also, reverting it fixes a new bug: the first item is selected when the item which was selected has been deleted. Next item should be selected instead.
* grid-cell-ui: use dim-label style for captionsPeter Eisenmann2023-04-211-0/+3
| | | | | | | | In 098f6a43d782e7791caa4c443f6ab08a1310f4a0 the style was changed from dim-label to caption. For consistency with list-view columns and to have less visual noise, add the dim-label style class back. Fixes #2876
* window: Dismiss previous undo toast when undo action has changedCorey Berla2023-04-211-0/+8
| | | | | | | | | | | | | | | | We present a new toast every time the undo action changed which is confusing because you might have several undo toasts appearing over each other. To complicate matters, the previous undo toasts lie (undo'ing would actually undo a different action). There was a proposal in #2350 to batch undo toasts, but that's problematic because our undo manager is designed to undo exactly 1 action, we do not have an undo stack. The more straightforward solution seems to be simply dismissing the old undo toasts, when we popup a new undo toast. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2350
* file: Re-use local time zone when generating date stringSebastian Keller2023-04-201-10/+17
| | | | | | | | | | Whenever g_time_zone_new_local() is called it has to check the file system for changes, because the system's time zone might have changed since the last call. This function was called multiple times for each file when generating the date string, which was causing some unnecessary overhead. This changes the code to re-use the local time zone from the first call.
* window-slot: Make ownership transfer of pending location explicitAntónio Fernandes2023-04-201-3/+1
|
* nautilusgtkplacessidebar: simplify setter logic with g_set_objectGary Li2023-04-201-5/+1
| | | | | Use g_set_object to simplify setter logic and avoid issues if current_location == location.
* application: Take reference of GFile location when cloning windowGary Li2023-04-201-0/+1
| | | | | | | | | | | | | | | | Nautilus crashes under d45b820d when we open a second window and in both windows navigate to a common new location. This is caused by incorrect reference management in action_clone_window, where neither nautilus_window_slot_get_location nor nautilus_window_slot_get_pending_location increases the ref count of the GFile location. g_autoptr would cause location to be prematurely freed. Take the reference of location to allow g_autoptr to work correctly for all branches of action_clone_window. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2858
* properties-window: use property row style for security contextPeter Eisenmann2023-04-201-6/+27
| | | | Fixes #2767
* style: Add HC outlines for list viewSam Hewitt2023-04-151-0/+11
| | | | | | | | | Grid view selections feature a border for increased visibility. Our list view lacks that because it adds custom padding, so we need to add it as a custom style. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2909
* style: Drop view item color overridesAntónio Fernandes2023-04-151-25/+0
| | | | | | | | | | | | | | We've added them because the colors assigned by the default stylesheet were not adequate as per design review: d7b03656210d5feb300d5df74db9cd4601306991 Libadwaita 1.3 updated the stylesheet to use the design-choosen colors by default in views. [0] So, we should drop our overrides which are now unnecessary and even harmful (they may be out of sync). Also, require the stable release of the dependency, because 1.3.alpha didn't include [0]. [0] https://gitlab.gnome.org/GNOME/libadwaita/-/commit/fd83834f837baeb2650c75630de10ea5cdf032f2
* search-engine-tracker: Don't try to parse NULL time stringsAntónio Fernandes2023-04-151-22/+23
| | | | | | | | | | | | TrackerCursor returns NULL if it doesn't have information on the date. https://gnome.pages.gitlab.gnome.org/tracker/docs/developer/method.SparqlCursor.get_string.html We try to parse NULL as a date string. This is obviously wrong and gets us a precondition failure warning, as it should. So, if a string is NULL, just skip it. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2160
* Revert "nautils-search-engine-tracker: Only parse non-null dates"António Fernandes2023-04-151-16/+7
| | | | | | | This reverts commit 5f1680f9df8d6a62681a878975a1cec75a328a3d. It avoids a warning from g_date_time_new_from_iso8601() by pushing the code flow into another warning. A different solution is to follow.
* files-view: Handle canceled clipboard updatePeter Eisenmann2023-04-142-7/+23
| | | | | | | | Correctly handle the cancellation of a clipboard update by checking the return value of gdk_clipboard_read_value_finish() and returning early on cancellation. Fixes: #2868
* list-view: Drop selection click workaroundCorey Berla2023-04-131-56/+0
| | | | | | | There was an issue selecting using ctrl+select which was fixed in GTK. Our workaround is now making it break. Related: https://gitlab.gnome.org/GNOME/gtk/-/issues/5669
* files-view: Don't add non-existent filesCorey Berla2023-04-121-0/+5
| | | | | | | | | | | Under certain circumstances (i.e. moving a file), we end up adding a non-existent file. This causes selection problems because the non-existent file is selected and then removed (causing another file to be selected). I'm not sure where the root cause is (between directory-async, directory notify, etc), but lets simply not add a file that we know shouldn't be added. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2828
* list-view: Get proper backing-uri for tree expandersCorey Berla2023-04-121-0/+55
| | | | | | | | | | | | | | | When using tree expanders, we have special cases for the backing uri. In GridView or ColumnView (without expanders), the backing uri is always the current view directory. With tree expanders, the backing uri is either the parent of the currently selected item, or the currently selected item (if it is an expanded directory). The same rules apply for multiple selection if there is a common parent. This was the case in 42, and the code was dropped in 6708861ed174e2b2423df0500df9987cdaf2adc0, and as an oversight wasn't added back in when tree expanders were reintroduced. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2888
* batch-rename-dialog: fix tag intersection for zero-length deletionsGary Li2023-04-091-2/+4
| | | | | | | | | | | | | | | | | | | | Dead keys insert a provisional visual indication, which looks like a text insertion, but is actually signaled as `::delete-text`. Unlike regular emissions of `::delete-text`, here the start and end positions are exactly the same (so you know nothing is actually deleted). Nautilus deletes the neighbouring tag When a dead key is entered into the batch rename entry, it deletes the neighbouring tag. This occurs for just before, inside and just after the tag. This happens because our logic for knowing when to delete special text tags is assuming end_position > start_position, which is not the case with dead keys. Add conditions to ensure intersecting selections cannot be zero-length. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2821
* grid-cell, name-cell: Allow displaying unthemed emblemsAntónio Fernandes2023-04-082-2/+14
| | | | | | | | | | | | | | | nautilus-dropbox and probably other such extensions use emblems to indicate sync status. If these icons are installed as unthemed icons, then we don't display them at all. This is because the way we are checking that an icon exists ignores the unthemed icons completely, which is arguably a GTK bug (https://gitlab.gnome.org/GNOME/gtk/-/issues/5709) While the GTK inconsistency is not addressed, let's use a workaround to check more effectively whether an icon exits. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2789
* files-view: Disable properties shortcut for unwanted directoriesKhalid Abu Shawarib2023-04-071-1/+4
| | | | | | | | Open properties on the search directory crashes Nautilus. Exclude search, recent, and starred from opening current directory properties when no file is selected. Fixes #2903
* sidebar: Prevent auto folder opening on hover when re-ordering bookmarksSayan Bhattacharjee2023-04-071-2/+3
| | | | | | | | | | | | | | | | | In the sidebar, when dragging to re-order bookmarks, other bookmarked folders are automatically opening while hovering over them as it happens during a drag-and-drop operation. This action should not be permitted because it is inconceivable to drag-and-drop a bookmark into another bookmark. Implement a check to prevent automatically navigating into the bookmarked folders if they are hovered on while dragging a bookmark with the intent to just re-order them. It achieves this behavior by not adding a navigation hover timeout if we are dragging a row (bookmark) in the sidebar. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2820
* pathbar: do not use finalized pathbar to bind menu model to popoverGary Li2023-04-071-1/+8
| | | | | | | | | | | | | | | Nautilus fails critical assertions if the user opens then closes a new window in rapid succession in a large folder. This is because the GSource created by nautilus_path_bar_set_templates_menu to bind menu model to popover is not removed even if the pathbar has already been finalized by the user closing the window. Keep track of the source id and remove source if the pathbar is being disposed of. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2867
* grid-cell, name-cell: Have thumbnail cover allocationAntónio Fernandes2023-04-052-0/+2
| | | | | | | Otherwise, due to some modular arithmetic artifacts, there is an unsightly 1px transparent line between the picture and its css border. Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/2779
* window-slot: Try current location even if it is marked as goneOndrej Holy2023-04-051-7/+7
| | | | | | | | | | | | | | When the current location is marked as gone, Nautilus jumps to the first existing parent currently (except for non-native locations and mount roots). This is fine in most cases, but not for autofs locations as Nautilus jumps to parent everytime autofs mount timeouted. It would be better to stay in the same folder in this case. Let's try the current location first even if it is marked as gone to ensure that. It would be perhaps even better to prevent autofs locations somehow from timeouting at all, or avoid immediate remounting at least, but those solutions don't look easy to implement. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1514
* places-view: remove GTK translation domainsPeter Eisenmann2023-03-313-3/+3
| | | | | | | | When copying these classes from GTK the translation domain was kept. This causes issues with translations in libadwaita widgets, so remove them. Fixes #2890
* properties-window: fix execution switch behaviorPeter Eisenmann2023-03-291-2/+2
| | | | | | | | Changes in GTK (https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5442) require to use `gtk_switch_set_active` to flip a switch, otherwise it ends up in an inconsistent state. Fixes #2883
* files-view: handle no focus state gracefullyPeter Eisenmann2023-03-291-1/+2
| | | | | gtk_window_get_focus can return NULL. Passing that directly into gtk_widget_is_ancestor throws a GLib warning, so handle it explicitly.
* Add fast-content-type fallback to all placesOndrej Holy2023-03-292-2/+22
| | | | | | | | | The `G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE` attribute doesn't have to be always set. The commit 0e597803 added the `G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE` fallback inside the `NautilusFile` class, but not for other places. Let's fix this oversight. Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2862
* search-hit: Remove redundant codeOndrej Holy2023-03-291-3/+0
| | | | | | | | | The `Deprecated pre-processor symbol: replace with "G_ADD_PRIVATE"` warning is shown during build currently. This is caused by the usage of the `G_TYPE_INSTANCE_GET_PRIVATE` macro. However, the statement with this macro doesn't have any effect. This looks to be an oversight in the commit 335eabec. Let's drop the whole statement to get rid of this warning.
* window: Initialize drag action for tab barOndrej Holy2023-03-291-16/+10
| | | | | | | The `‘action’ may be used uninitialized` warning is shown during build currently. It can really happen that uninitialized value is used when dropping something else then the `GDK_TYPE_FILE_LIST` and `G_TYPE_STRING` on the tab bar. Let's initialize the action to prevent this.
* pathbar: Initialize drag actionOndrej Holy2023-03-291-7/+2
| | | | | | | The `‘action’ may be used uninitialized` warning is shown during build currently. It can really happen that uninitialized value is used when dropping something else then `GDK_TYPE_FILE_LIST` on the pathbar. Let's initialize the action to prevent this.
* properties-window: Use return value from g_string_freeOndrej Holy2023-03-291-5/+1
| | | | | | | | Currently, the `ignoring return value of ‘g_string_free_and_steal’ declared with attribute ‘warn_unused_result’` warning is shown during build. This is because the `str` struct member is used instead of a return value from the `g_string_free` function. Let's update the code to use the return value in order to avoid this warning.
* Revert "list-base: Remove rubberband hack"Ondrej Holy2023-03-161-0/+29
| | | | | | | | | | | This reverts commit c1c7ccb0e23772d8cfb509eb133d7e522706c697 as it turned out that the workaround is still needed. I've only updated the obsolete comment a bit. The issue was initially fixed by the https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/4831 merge request, but it has been broken later. Related: https://gitlab.gnome.org/GNOME/gtk/-/issues/5670 Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2844
* search-engine-simple: Handle case when mime type is NULLOndrej Holy2023-03-091-1/+1
| | | | | | | | The `G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE` attribute doesn't have to be always set. This case is not handled by the `NautilusSearchEngineSimple` class and the `NULL` pointer can be passed in the `g_content_type_is_a` function currently. This is an error. Let's check the returned pointer to prevent this situation.
* Use generic helpers for obtaining file attributesOndrej Holy2023-03-094-15/+39
| | | | | | | | | | | | | | | | | | | | It is not guaranteed that all `GFileInfo` attributes are always set when requested. They used to be silently set to `NULL`, `FALSE`, or `0` earlier when they were not provided by their implementations. However, some of the helper functions now print critical errors when the attributes are not set by their implementations even though they were requested. See the https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3261 merge request for more details. So Nautilus now prints tons of critical errors when started. The unset attributes can be detected over the `g_file_info_has_attribute` function. But Nautilus doesn't care in most cases about the reason why the attribute is `NULL`, `FALSE`, or `0`. There are also more generic helper functions that don't print these critical errors. Let's use them for the attributes that may not always be set to get rid of those critical errors. I suppose that the `name`, `display_name`, `size`, `icon`, and `file_type` attributes don't need this special handling, although it is not clearly stated anywhere... Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2861
* file: Cache clock format settingCorey Berla2023-03-051-9/+20
| | | | | | | | We are already caching the preferences for thumbnailing. Since the clock format is queried for every single file when loading a list view, we should also cache the clock format setting. Rename the flag from use_24 to use_24_hour for more clarity.