Elvis Angelaccio [Tue, 10 Sep 2019 23:09:30 +0000 (01:09 +0200)]
DolphinTabWidget: cleanup index-by-URL API usage
Summary:
Follow-up of D23655 where we didn't have time to polish the code:
- add a couple of variables to make the code more clear.
- remove the `get` prefix which we usually don't use in Qt code.
- make the function private since it's very tied to implementation.
- add a new isUrlOpen public method as wrapper.
Nate Graham [Sat, 24 Aug 2019 20:33:00 +0000 (14:33 -0600)]
Fix ascending/descending choosers getting unchecked when re-selecting the same sort order
Summary:
When you select the same sort order that's already selected, the currently-checked
sort order description (the human-readable ascending/descending items) gets unchecked
in `slotSortTriggered()` yet the ascending/descending items items only get checked in
`slotSortOrderChanged()`. Because the order hasn't gotten changed, neither one gets
checked again.
This patch fixes the problem by not unchecking them in the first place.
BUG: 411223
FIXED-IN: 19.08.2
Test Plan:
1. Right-click > Sort By > Click the currently-selected sort order
2. Right-click > Sort By > See that the item for the current ascending/descending setting has not been changed
Unbreak context menu showing when right clicking on an empty area
In D22149, a request was made to remove a variable assignment ("action",
on line 389 in src/dolphincontextmenu.cpp. However the change went too
far, and it actually removed the exec() call, not just the assignment
which should have stayed.
This resulted in the context menu not being shown at all.
Adding back exec(m_pos) at least allows for the context menu to show.
Making sure that DBus objects are all created before the service
Summary:
Currently the DBus service is created before the MainWindow DBus object is
created. This can cause hangs if another service makes calls to a a method
in an object that's not been initialised, when the service is already published.
This patch defers the creation of the service until all DBus objects are
created.
Test Plan:
Tested in KDevelop. Have "open new folders in tabs" feature enabled.
Open several folders with Dolphin at once. Before this patch
there would be noticeable hanging. With this patch all tabs instantly open with
no hanging.
Reset progress bar text when directory loading starts
Dolphin shows a different text for whether it is loading the directory or currently sorting its contents.
However, when entering a folder that causes sort criteria to change (e.g. because of different view properties in that folder),
the status bar text is changed to "Sorting..." while it is still actually loading the folder.
When loading a directory starts, reset any status bar text to ensure "Loading..." is displayed in this case.
Nate Graham [Sun, 1 Sep 2019 21:01:57 +0000 (15:01 -0600)]
Add "Add to Places" action to file menu
Summary:
It's recommended that actions available in context menus be available in the main menu
as well for discoverability's sake. This patch does so for the "Add to Places" action.
The action is moved over to the main window, and accessed in the context menu via the
actionCollection it lives in.
BUG: 390757
FIXED-IN: 19.08.0
Test Plan:
- Action still works
- Action still appears in context menu when relevant
- Action in the File menu only becomes enabled when only a single directory is selected or nothing is selected
Summary:
Make search action toggle the searchbar instead of just launching it.
The search action in dolphin did only bring up the search bar, but to close it again you had to go to the closing button on the same searchbar.
This behavior in inconsistent with other dolphin actions which toggle panels or tools.
Test Plan:
- Enable the search mode: the searchbar appears and the toolbar button gets checked
- Press the search button again, and it goes back to normal mode.
- The search button state is coherent with the searchbox
- Coherence is kept when changing to a split view or different tab
- Shorcut <Ctrl-F> does not close the searchbar, but moves the focus to it.
Make non-empty textual columns come first in sorting
Summary:
Current behavior of dolphin in sorting of files with textual columns (e.g. tags) is to show files without this particular textual column (e.g. without tags) first.
This patch changes this behavior so that dolphin shows the files with some value before the files without any value for chosen sorting method.
BUG: 410538
Test Plan:
Sorting by name (isn't affected by the patch): https://i.imgur.com/eqbYwyZ.png
Sorting by textual column ("tags" in this particular example),
old version (non-tagged files and folders come first): https://i.imgur.com/5KLLujU.png
patched version (tagged files and folders come first): https://i.imgur.com/oUAeZ2z.png
Kai Uwe Broulik [Wed, 28 Aug 2019 07:46:58 +0000 (09:46 +0200)]
Don't store view properties on network shares
Entering a folder will have Dolphin determine whether it can store the view properties in a .directory file within the folder or
in a generic config location.
It does so by checking for permissions on the file and parent dir causing various stat calls that potentially block on a slow mount.
Also, the config reading thereafter can be very slow.
Moreover, network shares are typically shared between users, so one user's view properties shouldn't affect or be overwritten
by this Dolphin instance.
It doesn't resolve symlinks but is surely an improvement over the status quo.
Kai Uwe Broulik [Tue, 27 Aug 2019 11:26:26 +0000 (13:26 +0200)]
Always periodically dispatch pending items
"Local" URLs can also be slow.
This might jeopardize loading large local directories where a resorting could take place but imho it's better than leaving the user
wondering when files will finally show up. However, it takes some time for KDirLister to initially signal items having been added,
and only then our 2 second timer starts.
Also, stop the timer when loading has completed.
Test Plan:
Reproduce steps as given in bug report. Observe the exected result.
Used qdbusviewer and ShowFolders method to observe that no regressions occured
in the "open new folders in tabs" feature.
Andrey Yashkin [Sun, 11 Aug 2019 11:11:37 +0000 (13:11 +0200)]
Fix an issue with focus lost after closing terminal panel
Summary:
After leaving terminal with Ctrl-D or exit commands the input focus isn't set back to the folder view.
The problem appears, because `TerminalPanel::isHiddenInVisibleWindow` returns not what it supposed to return,
since when the terminal process exits, `m_terminal` is set to nullptr.
I moved unwanted checks from it inside `TerminalPanel::dockVisibilityChanged`
This change also exposes a crash in `DolphinMainWindow::slotTerminalPanelVisibilityChanged()`,
which was previously working only by luck.
Now we check whether `m_activeViewContainer` is not null before using it.
BUG: 407979
FIXED-IN: 19.11.80
Test Plan:
1. Open Dolphin
2. Press F4 to open the terminal panel
3. Type exit<Enter> or press Ctrl-D
4. Check current focus widget
Elvis Angelaccio [Sun, 11 Aug 2019 10:10:43 +0000 (12:10 +0200)]
Do not match daemonized dolphin instances: part 2
Summary:
`dolphin --daemon` does not have the `/dolphin/Dolphin_1` dbus path,
because it doesn't have any DolphinMainWindow.
Checking if the QDBusInterface is valid is not enough, we also need to look for dbus errors.
This should have been part of commit 7df5fc8edb54153f. Not sure how I missed it.
BUG: 408244
FIXED-IN: 19.08.0
Test Plan:
1. Make sure the new "Open new folders in tabs" setting is enabled.
2. Run `dolphin --deamon` and make sure is the only dolphin process around.
3. Call the `org.freedesktop.FileManager1.ShowFolders` method from QDbusViewer.
Wolfgang Bauer [Wed, 7 Aug 2019 16:08:57 +0000 (18:08 +0200)]
Fix build with cmake < 3.7
`VERSION_GREATER_EQUAL` was introduced in cmake 3.7, but the specified
minimum version is 3.0.
So use `NOT VERSION_LESS` instead to still support older cmake versions
too.
Summary:
Instantly hide tooltip shown over an element when a key is pressed.
Currently, when pressing an alphanum key to select a different file,
the tooltip continues to cover much of the window - often hiding that newly selected file from view.
Fix dir change when show hidden terminal panel with running program in it
Summary: Terminal panel doesn't change its working directory, while any procces is running in it. However, if you hide it and show again the program will get a string with a //cd path// command.
Test Plan:
1. Open dolphin
2. Press F4
3. Start any process like gnu nano
4. Press F4 two more times
Summary:
When opening a new tab in the background and switching to that tab the focus is set on the location bar instead of the files view. If you switch back to the original tab and then to the new tab again focus will be set on the files view. The problem is caused by creation of //DolphinTabPage// in an active state which leads to skipping by //return// in //DolphinView::setActive(bool active)// without setting the focus on the view. This patch fixes this defect.
BUG: 407604
FIXED-IN: 19.11.80
Test Plan:
1. Open a new tab in the background
2. Switch to the new tab
3. Check current focus widget by the up/down arrows on the keyboard with and without changes.
servicemenuinstaller: Run installation scripts with cwd in their parent directories
Summary:
Otherwise, if cwd is set to the unpacked dir root, some service menus
fail to install.
Test Plan:
- Successfully Installed and uninstalled the "Color Folder" service menu from "Configure Dolphin..." -> service menus -> KNewStuff.
- ./test_run.rb still passes all its tests.
Nicolas Fella [Sat, 22 Jun 2019 15:52:35 +0000 (17:52 +0200)]
Use more human-readable sort order descriptions
Summary:
Anecdotal evidence shows that ascending/descending regularly takes people longer to process than necessary. This patch implements more human-friendly sort order descriptions, in particular:
A-Z/Z-A for text
Newest first/oldest-first for time
Lowest first/highest first for rating
smallest first/largest first for sizes
If there is no string for a particular role defined it will fall back to Ascending/Descending.
I'm aware that not every language uses A-Z. In this case the translator can pick any string that represents the concept of text sorting
Felix Ernst [Sun, 23 Jun 2019 19:19:49 +0000 (21:19 +0200)]
Add "What's This?" to nearly everything in the main window
Summary:
This commit adds "What's This?" help to nearly everything in the
Dolphin main window (panels, views, buttons, ...). It adds the "?"
to the title bar so this help can easily be called.
For links in those help texts to work the WhatsThisClickedEvents are
handled in the main window class. This doesn't work for menus because
events from them aren't forwarded to the main window for some
reason so EventFilters are installed for the Control button menus.
Modifying the "Help" menu of KXmlGui is deprecated so no EventFilter
can be installed in the menubar. Therefore help texts without links
are provided for the menubar.
Test Plan:
Check if the event handling might make any problems.
Check for any big mistakes in the help messages.
This would mach the same feature in the open/save dialog (although not equivalent)
{F6696456}
FEATURE: 378613
FIXED-IN: 19.08.0
GUI: New information panel context menu option
Test Plan:
Without auto play
- in dolphin with the information panel opened, and the auto media play feature is disabled (right on the information panel)
- hover over media files
- the behavior is the same as before the patch
With auto play
- in dolphin with the information panel opened, and the auto media play feature is enabled
- hover over media files
- media is played automatically
- hover over another media file, the new media is previewed
Adding option to open externally called folder in a new tab
Summary:
Adds an option to open externally called folder in a new tab.
By default this option is enabled
Test Plan:
If option selected:
1. All valid arguments passed to Dolphin should be opened in tabs of an instance(s) (if it exists). Duplicate tabs just change activation to current tab.
If option not selected:
1. All calls to Dolphin result in a new instance being opened
This option does not require Dolphin to be restarted to take effect.
Nate Graham [Sun, 23 Jun 2019 10:27:06 +0000 (12:27 +0200)]
Improve README documentation
Summary:
Previously, README contained nothing but a link to userbase. A separate HACKING.md
file had non-technical developer documentation, but nothing technical to guide
people in the right direction.
This patch consolidates all information in the README file and adds technical
information about how to develop Dolphin.
Currently Dolphin only opens a new instance of itself in the following two scenarios:
1. No other Dolphin instances ( D21666 deals with not matching daemonized instances) are currently running.
2. A new instance is explicitly asked for via: `dolphin --new-window`
A third scenario is needed to fix this bug:
3. If no URLs are passed in as arguments then open a new instance.
This patch adds this third scenario.
Test Plan:
STEPS TO REPRODUCE
1. Open Dolphin
2. Right-click on Dolphin's Task Manager Entry and click "Start New Instance"
3. A new instance is created.
As my system stuff is not built on master I am unable to replicate the bug (and can't confirm whether this fixes it), hence I'll rely on @ngraham to confirm whether this patch fixes the issue.
Tranter Madi [Tue, 4 Jun 2019 08:49:39 +0000 (15:49 +0700)]
Scroll when pressing PageUp/PageDown
Summary:
Add `PageUp/PageDown` to the `navigationPressed` variable.
Remove the `m_view->firstVisibleIndex()` and `m_view->lastVisibleIndex()` tests because sometimes it does not work correctly.
BUG: 407118
Test Plan:
Press PageUp/PageDOwn: it scrolls
Press Up/DOwn: it always scrolls
Thomas Posch [Mon, 3 Jun 2019 19:52:10 +0000 (21:52 +0200)]
Tighter match own service when trying to find suitable window to open path in.
Summary:
Current implementation matches org.kde.dolphin-.*PID while trying to exclude itself from the list of running instances.
With this fix applied only org.kde.dolphin-PID is matched.
Test Plan: Open dolphin twice. Observe only one window.
Open externally called files/directories in new tabs
Summary:
FEATURE: 183429
FIXED-IN: 19.08.0
GUI: new cli argument --new-window
Externally called files/directories are opened in a a new tab of an instance of Dolphin that already exists. If any of the given URIs are already open in a tab, then those tabs are activated instead of a new tab being opened. If there is no instance then the files/directories are opened in a new window. The newly opened file/directory has its tab activated, and consequently, the window is also activated.
When the user clicks "Open In New Window" or "Detach Tab", the files/directories are opened in a new window.
Test Plan:
[Manual]
Before testing, set the default file manager in system settings as the newly built Dolphin executable.
One must also include the new dolphin executable in the $PATH, otherwise some functions will attempt to open the system dolphin instead of the new one.
Furthermore, running two different versions of Dolphin (in particular, where one does not have this patch included) can result in bugs appearing, in particular, new tabs not opening as old instances will not recognise the DBus commands sent to it. However, I see no reason why a user will have two different versions of Dolphin (apart from people like us :D).
Open directories with the help of auxillary programs (i.e. a browser). The files/directories should appear in a new window if an instance does not exist. If an existence already exists, then a new tab should be opened and activated in that instance and the window activated.
Use QDBusViewer to open folders/items by calling the ShowFolders/ShowItems methods in org.freedesktop.FileManager1 of the Dolphin instance.
When a user chooses to "Open In New Window"/"Detach Tab" then the files/directories should be opened in a new window.
Nate Graham [Sun, 26 May 2019 03:32:13 +0000 (21:32 -0600)]
When filter bar is focused, switch to view when tab key is pressed
Summary:
Various people have requested that the tab key move keyboard focus from the filter bar's
text edit field to the main view. It already does this when the Enter and return keys
are pressed, but apparently this is not very intuitive and people expect Tab to work too.
This patch makes that behavior possible by moving the Lock button to the left of the
text edit field, and re-arranging the code so that the filter bar is initialized first.
This works because Qt assigns tab ordering by default according to the order of widget
construction. So if we simply construct the main view right after the filter bar, then
the tab ordering is set up this way automatically.
BUG: 403379
BUG: 403356
FIXED-IN: 19.08.0
Test Plan:
1. Activate Filter bar
2. Hit Tab key
3. View has become focused
4. Play around in Dolphin for a while and notice no regressions or crashes