Nate Graham [Thu, 26 Sep 2019 18:31:05 +0000 (12:31 -0600)]
Expose full set of script execution options in settings window
Summary:
Right now the script execution setting is a checkbox, capable only of handling boolean
input. This is not appropriate because there are actually three options available.
Accordingly, this patch replaces the checkbox with a combobox (to save space compared
to radio buttons) that clearly exposes all three options.
- All three options do what they say they'll do
- All options get saved properly
- The combobox displays the correct option when the window is loaded
- The {nav Defaults} button resets it to "always ask" as expected
David Hallas [Thu, 11 Apr 2019 17:21:41 +0000 (19:21 +0200)]
Add navigation history to forward/back buttons
Summary:
Adds navigation history to forward/back buttons in the toolbar. This
changes the forward/back buttons in the toolbar to use the
KToolBarPopupAction class which provides access to a drop down menu.
Test Plan:
Browse some folders
Click the back drop down menu and navigate somewhere
Click the forward drop down menu and navigate somewhere
Summary:
Adds the capability to view animated images on the preview in the information panel.
This was a request from a user back in 2009 (https://bugs.kde.org/show_bug.cgi?id=182257), but I think nowadays with stickers/memes and what not, it's even more useful.
It keeps the size default transition of the preview viewer before starting the animation, so that the visual integration is smoother.
[KStandardItemListWidget] Request the pixmap size we want and let the icon loader scale it
I noticed that depending on the configured icon size it would spend a significant amount of time in KPixmapModifier::scale.
I don't see a point in requesting a fixed icon size and then scale it down manually as opposed to having the KIconLoader do the scaling for us.
Especially for SVGs it could then even serve us a properly rendered SVG for this size rather than a scaled down pixmap version.
Nazar Kalinowski [Sun, 15 Sep 2019 18:36:05 +0000 (20:36 +0200)]
Fix wrong window titles
Summary:
BUG: 389135
FIXED-IN: 19.11.80
Currently dolphin shows a folder's name instead of a "place" name if the current path has trailing slash and place's name doesn't, or vice versa.
This patch fixes this behavior, so that dolphin always shows a "place" name.
The QUrl::FullyEncoded string conversion is required because that's how
the places model stores the places URLs in the XML bookmarks file.
Test Plan:
Test configuration: https://imgur.com/a/U4zBp8c
Before (wrong window titles are in red): https://imgur.com/a/dB4xRwo
After (all window titles are correct): https://imgur.com/a/W7virBn
Nate Graham [Fri, 6 Sep 2019 16:08:58 +0000 (10:08 -0600)]
Clean up hamburger menu and viewport and single-folder context menus
Summary:
Dolphin's hamburger and context menus have grown organically over time,
becoming a bit messy and somewhat visually overwhelming. This makes them
harder to parse and more intimidating to use.
This patch cleans up the hamburger menu and viewport and single-folder context
menus to group items more logically, and remove items that aren't actually relevant
to the context.
The hamburger menu part of the patch is fairly significant, and draws from the
principle of only showing actions with a global scope that are not already accessible
from another visible method (e.g. via the default toolbar). In the end, it manages to be
shorter than the current hamburger menu with expose actions that are more relevant.
A visible method to display context-specific actions should be explored separately
(see https://bugs.kde.org/show_bug.cgi?id=411500).
Depends on D23945
Test Plan:
Before, hamburger menu: {F7334178}
After, hamburger menu: {F7350958}
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.