Nautilus shows a visual feedback for when the current folder is
empty. This, however, is undesired for the desktop, since we don't
want to clutter the desktop area.
Fix that by not displaying the empty state for desktop view only.
https://bugzilla.gnome.org/show_bug.cgi?id=753752
nautilus-connect-server is a legacy application from
GNOME 2 era, where we had no consistent way to manage
servers.
With the introduction of NautilusPlacesView, this code
becomes obsolete, as the network management logic is
moved to the places view.
Remove the legacy code.
https://bugzilla.gnome.org/show_bug.cgi?id=753871
GtkFileChooser received a Other Locations view that lists
persistent devices, as well as networks and the root location
for the computer's hard drive.
Since Nautilus is a file management tool too, it should keep
consistency between Gtk+ file chooser, something that doesn't
happen since it doesn't display Other Locations.
To fix that, add NautilusPlacesView, a NautilusView implementation
that displays the GtkPlacesView widget. In order to implement that,
update window-slot to correctly display the places-view whenever
Other Locations is clicked.
https://bugzilla.gnome.org/show_bug.cgi?id=753871
Nautilus is in the proccess of receiving a places view,
based on GtkFileChooser's one.
To be able to handle that, an abstraction layer is needed
between NautilusFilesView and NautilusWindowSlot, so we factor
out the common data between views.
Add the NautilusView interface, and make NautilusFilesView a
NautilusView implementation. Because of the new way we handle
search on the view side, the search logic is rewritten to match
the new expected behavior.
https://bugzilla.gnome.org/show_bug.cgi?id=753871
The last action assigned was 'sort', and then we immediately
try to change the 'keep-aligned' state, causing a bunch of
criticals when using the Desktop Icons.
Fix that by correctly ordering the actions and avoiding set
the state of the wrong action.
We were looping with a timeout to make sure we don't miss
any operation that it's time remaning was not well calculated.
But we were not stoping this loop when all the operations were
took into account. So remove the timeout if all the operations
are being show, cancelled, or finished.
https://bugzilla.gnome.org/show_bug.cgi?id=753728
Users weren't noticing that the button appeared, and tried
to perform the same operation again.
Try to catch their attention on the button with an animation
on it when the button appears.
https://bugzilla.gnome.org/show_bug.cgi?id=753728
We were updating the operations button style always that
update_operations was called. Thing is that is not necesary,
and can cause some anoyances in patchs that are to come.
https://bugzilla.gnome.org/show_bug.cgi?id=753728
And instead increase the timeout to hide the button to allow
not flash but don't take too much in provide feedback that
and operation is being done
https://bugzilla.gnome.org/show_bug.cgi?id=753728
NautilusView is the proposed name for the new
interface that will cover NautilusFilesView and
NautilusPlacesView.
The current NautilusView name, however, will crash
with the proposed interface name.
Fix that by changing the class name to NautilusFilesView.
As an easter egg, makes it match the current Nautilus
code style.
I removed that part of the code. Also, now that both behaviours
between renaming and new folder are closer, simplify the code
and merge the common parts.
All X11 custom keys are currently handled by NautilusWindow,
which performs a search on it's own action group as well as
the view's one to perform the corresponding action.
Since we're isolating NautilusView from other classes, the
search on the view's action group is undesired.
Fix that by making the view handle zoom-in and zoom-out actions,
instead of the window itself.
https://bugzilla.gnome.org/show_bug.cgi?id=753695
NautilusToolbar handles the view menu, requiring
direct access to the underlying view inside the
window slot.
Since we're wiping out every access to the underlying
view, we shouldn't access it from NautilusToolbar.
To fix that, makes the view handle the view widget.
Since we're making NautilusWindowSlot a wrapper, add
the necessary properties for it to expose view data
without exposing the view itself.
https://bugzilla.gnome.org/show_bug.cgi?id=753673
Some users felt it quite disruptive to us a dialog, even
if the attention has to be on the name entry.
Also it's the way that GtkFileChooser implemented it
and it actually feels less disruptive and desigerns agreed
it works better.
So continue to use a dialog for the new folder creation, but use
a popover for renaming.
NautilusView directly access NautilusWindow to make sure
the window is shown when the view starts loading, and not
before this.
Since we're restricting communication between NautilusView
and other widgets, the view shouldn't ask the window directly.
Fixed by making NautilusWindowSlot handle the visibility of the
window on NautilusView::begin-loading signal. Also, this patch
gets rid of an old code that updates the title of supposedly
hidden slots that were present or created before showing the
window. which is something doesn't happen anyomore.
https://bugzilla.gnome.org/show_bug.cgi?id=753356
NautilusView is an abstract class that manages
various context menus, depending on the view's
location, the clicked point and the implementation
details.
While this in theory provides a good isolation
from other classes, in practice NautilusView
manages the pathbar context menu, which is not
necessary, as it doesn't depend on the current
view anymore after the GAction rework.
Fix that by making NautilusPathBar manage the
context menu by itself instead of the view. To
cleanly implement that, add a new signal that
matches GtkPlacesSidebar::open-location signature,
and adapt NautilusWindow to reuse the existing
methods to handle pathbar's new signal.
https://bugzilla.gnome.org/show_bug.cgi?id=753158
NautilusWindow immediately displays the newly opened
tab or window and, for that to happen correctly, an
old hack is present.
This hack, however, added some unecessary complexity to
NautilusWindow code, and is completely obsolete nowadays.
It was needed to fix bug 679640, but seems like the real
cause of the bug was fixed and this hack does nothing,
appearently.
Remove the old hack and lets see if will continue to behave
properly.
Nautilus classes add custom methods to grab the focus
differently according to the class.
The problem with this approach, however, is that we end
up with more code coupling, since it's necessary to include
more headers to use the custom grab methods.
To fix that, make classes override GtkWidget::grab_focus
method and remove the custom methods, so widgets can simply
call gtk_widget_grab_focus.
Commit 2e1ac98 introduced the new behavior of persistently
storing the show-hidden setting whenever it changes.
This, however, caused an update cycle where NautilusDirectory
tracked the show-hidden change and invalidates the mime types
of the files, sending the apropriate ::file-changed signals.
When NautilusView receives the signals, it unconditionally
updates the action states, which sets the show-hidden action
again, causing another change on the setting and re-triggering
the NautilusDirectory signals, which are detected by NautilusView
and perpetuating the cycle.
Fix that by only storing the show-hidden setting when it
differs from the current one.
NautilusWindowSlot currently manages the floating bar,
requiring access to the underlying model of NautilusView
and making the code even more coupled and adding more
complexity to the codebase.
Fix that by delegating the management of the floating
bar to NautilusView itself, and turn NautilusView a
GtkOverlay subclass in order to facilitate the transition.
NautilusWindowSlot is the class responsible for managing
the empty views, causing even more code coupling and
blurring the lines of functionality of each class. Also,
it requires that the slot access the underlying model
behind NautilusView, something we're avoiding in order
to get Nautilus ready for future modifications.
Fix that by delegating to NautilusView the responsability
to manage the empty views, and not NautilusWindowSlot.
I put a new attribute, but allow_stop is actually meaning the
view is busy. So use that attribute and adjust its behaviour
a little to fix some corner cases.