Files are flagged as remote in file->details->filesystem_remote
through directory-async as folders are browsed.
nautilus_file_get_filesystem_remote() incorrectly returns FALSE for
child directories that have not been processed by directory-async
on a remote filesystem. This causes the "Count Number of Files in
Folders" options to not work correctly when set to "On This Computer
Only". Rather than unnecessarily process all of the child folders,
check whether filesystem_info_is_up_to_date==TRUE. If not,
check whether the parent is remote instead.
This issue was introduced in 99f55748ef69a68df86b9a039998ee576d59b898.
Previously the prefix of the URI was checked to match a hardcoded list.
When doing a DnD operation from outside Nautilus into one of
its windows, if the window is in "iconview mode", Nautilus
is able to detect when the origin and the destination folders
are in the same disk volume and do a move in that case, or
do a copy when they are in different volumes.
Unfortunately, when the window is in "treeview mode", this
operation doesn't work as expected, and always copy the file(s),
no matter if the origin and destination folders are or not in
the same volume.
After tracking the bug, I found that, in "treeview mode", the
NautilusFile object with the destination folder doesn't have
defined the filesystem_id property. This makes fail the
check_same_fs() function, which always returns FALSE. In
"iconview mode", instead, the object does have that property
defined, and that's why there it works.
I did a fix proposal, and although it was a safe workaround,
António Fernandes found a better way to fix it, which is
this patch.
(cherry picked from commit 222bb41f8081be9ac1a023bdc8f66ab267365a4d)
3e97c19...
by
=?utf-8?q?Ant=C3=B3nio_Fernandes?= <email address hidden>
css: Add backdrop style for pathbar
The difference between @borders and @unfocused_borders colors is barely
noticeable with the regular stylesheet, but marked with high contrast.
The same is true for @theme_bg_color vs. @theme_unfocused_bg_color.
So, under the Adwaita spreadsheet, this change is barely noticeable,
despite being correct and indeed a bugfix.
The main purpose of this patch is to improve HighContrast support.
19a2280...
by
=?utf-8?q?Ant=C3=B3nio_Fernandes?= <email address hidden>
application: Apply custom styles in HighConstrast
HighContrast and HighContrastInverse have been poorly supported in
this app for a long time because we ship many custom styles.
However, nowadays HighContrast and HighContrastInverse stylesheets
are derived from Adwaita stylesheet, so the same custom styles
can be applied cleanly. Let's do that.
9f36eaa...
by
=?utf-8?q?Ant=C3=B3nio_Fernandes?= <email address hidden>
window-slot-dnd: Ignore data not received on hover
Sometimes, after having called gtk_drag_get_data() on ::drag-motion, we
only get the data after ::drag-leave.
This is fine if the ::drag-leave is followed by ::drag-drop. Otherwise,
as ::drag-leave is responsible for cleanup, data arriving afterwards is
leaking into the next time content is dragged hover the widget, even if
the dragged content is no longer the same.
Instead, keep track of the hover status and don't save data that's no
longer relevant.
5159410...
by
=?utf-8?q?Ant=C3=B3nio_Fernandes?= <email address hidden>
window-slot-dnd: Fix data retrieval failure path
When data retrieval fails, ::drag-data-received is emitted with a
selection of negative length.
We have been treating this case as invalid data, but we never actually
call gdk_drag_finish() which is mandatory after a drop.
Instead, reset drag_info->have_data to FALSE in this case, and let
slot_proxy_handle_drop() handle the rest.
095d882...
by
=?utf-8?q?Ant=C3=B3nio_Fernandes?= <email address hidden>
window-slot-dnd: Stop queueing data requests
Each time ::drag-motion is emitted, we call gtk_drag_get_data() if we
don't have data yet.
If the drag source doesn't provide the data right away, we can end up
calling gtk_drag_get_data() multiple times. Later, when the data is
retrieved, we get multiple ::drag-data-received emissions.
Not only is this wasteful, it also breaks an assertion, causing crashes.
Instead, make sure gtk_drag_get_data() is called only once.