summaryrefslogtreecommitdiff
path: root/src/nautilus-name-cell.c
Commit message (Collapse)AuthorAgeFilesLines
* grid-cell, name-cell: Allow displaying unthemed emblemsAntónio Fernandes2023-04-081-1/+7
| | | | | | | | | | | | | | | 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
* name-cell: Don't open on hover expander icon.António Fernandes2023-01-161-0/+8
| | | | | | | | | | | | GtkTreeExpander includes a built-in "expand on drag hover" feature. But our own "open on drag hover" feature competes (and often wins) over it, making it hard to reliably expand rows on hover without opening the folder. So, separate the content and the expander. Trigger "expand on drag hover" only if over the expander, and "open on drag hover" only if over the rest.
* name-cell: Set loading_timeout_id to 0 in timeoutCorey Berla2023-01-101-0/+2
| | | | To prevent multiple clearing of the same handle
* name-cell: Cleanup handler on_item_is_loading_changed()Corey Berla2023-01-101-9/+3
| | | | | The handler warns that NAUTILUS_IS_NAME_CELL fails. Clean up the handler to match others in the signal group.
* list-view-item-ui: Show spinner while loading subfoldersAntónio Fernandes2023-01-101-0/+53
| | | | | The spinner is shown only after 1 second without the directory having finished loading, to avoid visual noise when directories loads quickly.
* list-view: Support expanding as a treeAntónio Fernandes2023-01-101-0/+8
| | | | Starred, Recent and Search still not supported due to bugs
* grid-cell, name-cell: Don't add missing emblemsAntónio Fernandes2023-01-081-0/+10
| | | | | | | | | | | | | | | | | | | | In version 42, we relied on GTK 3's support for GEmblemedIcon to draw emblems. It would implicitly skip any emblem name for which there was no available icon: gtk/gtkicontheme.c: ``` emblem_info = gtk_icon_theme_lookup_by_gicon_for_scale (icon_theme, emblem, size / 2, scale, flags | GTK_ICON_LOOKUP_FORCE_SIZE); if (emblem_info) info->emblem_infos = g_slist_prepend (info->emblem_infos, emblem_info); ``` But GTK 4 dropped support for GEmblemedIcon, so now we use one GtkImage for each emblem. But we don't skip name for which no icon is installed. Instead, GTK displays the missing image icon. Let's check whether the emblem icon is available in the current theme before creating a GtkImage.
* general: Replace GtkStyleContext with GtkWidget functionsCorey Berla2022-12-191-4/+2
| | | | | | | GtkStyleContext is deprecated in 4.10, use the corresponding GtkWidget functions. Also bump GTK version to use the new gtk_widget_get_color().
* general: Stop leaking NautilusViewItemCorey Berla2022-10-211-5/+7
|
* general: Support HiDPI icons againAntónio Fernandes2022-09-011-1/+3
| | | | | | | | | | This brings back a feature originally introduced by commit 0d4555d76f86ba2d49f48836b7eea11f1adfb2fd Back then, it used gdk_cairo_surface_create_from_pixbuf() to apply the scaling factor, but in GTK 4 we can no longer consume cairo surfaces directly. Instead, we are to use paintables. For themed icons we already use GtkIconPaintable, which just works.
* properties-window: Fix disproportionate iconsAntónio Fernandes2022-09-011-2/+1
| | | | | | | | | | | Thumbnails in Properties were sometimes larger than the requested size. This is because we didn't pass the FORCE_THUMBNAIL_SIZE flag. There were probably good reasons for this flag in the past, but there are none now. If we request a size, that should be the size we get. So, drop this flag entirely and default to forcing the size everywhere.
* search-engine-tracker: Elaborate snippetAntónio Fernandes2022-08-051-1/+1
| | | | | | Extend snippet up to 20 words ("tokens" in database parlance). Highlight matching word using pango markup.
* name-cell: Redesign search listAntónio Fernandes2022-08-051-26/+5
| | | | | | | | Move path to bottom, because it's a caption for the filename, not a title. Move FTS snipped into a popover, to avoid changing the row layout. Closes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2354
* file: Add trailing slash to parent pathAntónio Fernandes2022-08-051-3/+14
| | | | | | | | This makes it easier to tell it is a folder path. In a special case, for recursive search, where we omit the common prefix, this is especially important because direct subfolders would be a single basename without any slash.
* file: Drop folder-drag-accept icon usageAntónio Fernandes2022-08-041-9/+0
| | | | | | | | | | | | | Problems: - Changing icon without animation is crude. - If the folder has a custom icon, it doesn't change, which is inconsistent - And archives, which can accept drops, don't change icon, which is inconsistent. We already have css styling for drop targets so, which suffices. As per design review in https://gitlab.gnome.org/GNOME/nautilus/-/issues/2347
* general: Reimplement emblems as a box of iconsAntónio Fernandes2022-07-021-0/+29
| | | | | | | | | | | | | | | | | We used to display emblems overlaid on icons. This had a few problems: * Emblemed icons were not cached. * If the icon was too small, some emblems could be omitted. * Emblems would partially obstruct the visibility of thumbnails. So, we are reintroducing them as a mere box of icons: * vertically next to the file icon/thumbnail in grid view; * horizontally next to the filename in list view. This avoids all the problems of the old implementation. Closes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/2017
* file: Remove remaining GEmblemedIcon supportAntónio Fernandes2022-07-021-3/+1
| | | | | Emblemed icons are not implemented in GTK 4 and we don't want to reimplement them here anyway, so let's drop this code.
* name-cell: Improve drop feedback on list viewAntónio Fernandes2022-06-301-0/+15
| | | | | | | | | | Since the GtkDropTarget is set on each cell, the default active state (blue rectangle) is set only around a portion of the row in list view. We disabled the GTK_STATE_FLAG_DROP_ACTIVE for view-cell anyways, but we should have a better indication of drop state in list view since the icons are small. Heavily based on a different approach by Corey Berla
* view-item: Add drag-accept property for DnDCorey Berla2022-06-301-0/+15
| | | | | | | Set drag-accept to TRUE when a drag has entered an item. Set flag NAUTILUS_FILE_ICON_FLAGS_FOR_DRAG_ACCEPT when the DnD has entered an item so that the icon will be update (i.e. the folder will show the "open folder" icon)
* list-view: Reimplement using GtkColumnViewAntónio Fernandes2022-06-211-0/+289
GtkTreeView, while still available in GTK 4, is more limited in some more specialized situations which we have been relying on, such as drag-and-drop and high DPI icons. It's also been our long desire to adopt GListModel-based list widgets in order to unlock features and bugfixes which would have been basically impossible to do with GtkTreeView. We are thus dropping GtkTreeView for good and adopting GtkColumnView. The new implementation is radically different; almost no code remains from the old implementation. However, the new implementation has full feature parity with the old one with two exceptions: 1. Expand subfolders as a tree: WIP in another branch. 2. Performance for large number of items: WIP branch in GTK. Same as the old implementation, it still lacks drag-and-drop support, which is yet to be reimplemented for GTK4. The new implementation also implements new features which were but a dream in GtkTreeView: - Rubberband-selection.[1] - Empty space inbetween and around the list of items to open context menu, start rubberband, drop items, clear selection...[2,3,4] - Rows highligh on hover, distinguishing them from background space and serving as a reading aid instead without separator lines.[5] - File names in search results and recents are no longer squashed by the "Original location" column containing long paths. Instead, the original location is runs parallel to the filename.[6] - With the location column gone, the size column can be displayed again in these two special locations. - Full-text-search snippets no longer compete for horizontal space with filenames, but are displayed as accent-colored subtitles.[7] - Filenames are ellipsized at the middle, not to hide important details at their end.[7] - Sort order can be changed from the view menu, as in grid view.[8] - Per-folder sorting is shared with the grid view now, fixing an old inconsistency.[9] - A starring animation ☆★ Closes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/320 [1] Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/200 [2] Closes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1929 [3] Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1476 [4] Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1764 [5] Fixes https://bugzilla.gnome.org/show_bug.cgi?id=744405 [6] Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1411 [7] Fixes https://bugzilla.gnome.org/show_bug.cgi?id=619760 [8] Fixes https://bugzilla.gnome.org/show_bug.cgi?id=142495 [9] Fixes https://bugzilla.gnome.org/show_bug.cgi?id=45659