Fixes multiple VCS plugin calls on single directory update.
Summary:
Fixes multiple VCS plugin beginRetrival()/endRetrival()/itemVersion() calls on single directory update.
When VCS pluging finished gathering directory information VersionControlObserver::slotThreadFinished() calls KFileItemModel::setData() on each entry with appropriate item VCS information.
This in turn emits KFileItemModel::itemsChanged() which is connected with VersionControlObserver::delayedDirectoryVerification() which is starting to gather VCS directory information again.
This commits breaks the vicious circle.
Ismael Asensio [Wed, 8 Jan 2020 23:39:28 +0000 (00:39 +0100)]
(search) Fix searching tags with spaces
Summary:
Tags containing blank spaces were not handled properly in the search widget.
Now we enclose them in quotes and strip the quotes before setting them to the widget.
Nate Graham [Sat, 11 Jan 2020 19:52:46 +0000 (12:52 -0700)]
Use more conventional "Add to Places" text for that action
Summary:
I originally implemented this to show "Add <current folder> to Places" to make the menu
item more clear when invoked from the file menu or the viewport context menu because I
thought it wasn't totally clear that the action would be referring to the folder for the
visible view.
However I think in retrospect that this was a mistake. No other items in the file menu
or the viewport context menu name the current folder like this, so clearly there wasn't
a problem. And then the item's text doesn't match the text for other items.
Thie patch removes that behavior and makes the name match the style of all the other menu
item text.
Ismael Asensio [Sun, 22 Dec 2019 16:46:48 +0000 (17:46 +0100)]
Get rid of -Wdeprecated-copy warning
Summary:
Remove the explicit copy constructor of `KItemListStyleOption`, since it does not
add any logic to what the implicit copy constructor does, but triggers a compiler
warning if we don't overload `operator=` too.
Test Plan:
Compiles without `-Wdeprecated-copy` warning
No behavior changes
2. Start dolphin, navigate to test2/subdir, then in terminal:
$ echo test > test2/subdir/test
Without the patch, test2/subdir/test won't be shown automatically, only after reload (F5).
With the patch applied, test2/subdir/test will be shown automatically.
3. Restart dolphin, navigate to test2/subdir, then in terminal:
$ echo test >> test2/subdir/test
Without the patch, the increased size of test2/subdir/test won't be shown automatically,
only after reload (F5). With the patch applied, it will be shown automatically.
4. Restart dolphin, navigate to test2/subdir, then in terminal:
$ rm test2/subdir/test
Without the patch, test2/subdir/test stays visible, will only disappear after reload (F5).
With the patch applied, it will disappear automatically.
Summary:
Instantly hide tooltip shown over an element when filter bar changes.
Currently the tooltip stays even when filtering causes the file under the mouse to change or disappears entirely.
The tooltip also continues to cover much of the window - hiding the new filtering results from user.
This is an enhancement to D22512
Test Plan:
1. place the mouse pointer over a file to show the tooltip
2. press "/" to activate filter bar
3. type in filter phrase
Ismael Asensio [Sun, 22 Dec 2019 15:59:54 +0000 (16:59 +0100)]
(search) Keep menu open when selecting tags
Summary:
Keeps the `Tags` menu open while selecting and deselecting tags in the
search panel, saving many mouse clicks for multiple tags.
It cannot be done natively on `QMenu` (https://bugreports.qt.io/browse/QTBUG-6635)
but it is a one-liner and I haven't seen any bad behavior so far.
Ismael Asensio [Sun, 15 Dec 2019 22:15:46 +0000 (23:15 +0100)]
Clean-up DolphinFacetsWidget
Summary:
Small refactor patch to clean-up some logic on setter and getter:
- Search terms are previously splitted and set separately, so no need
for extra splitting and `foreach` loop
- Return search terms on a `QStringList` rather than join first
Nate Graham [Wed, 20 Feb 2019 17:05:06 +0000 (10:05 -0700)]
Improve scroll wheel speed by basing it on label height, not icon height
Summary:
Dolphin currently scrolls by the height of three items at a time per "step" when
using a scroll wheel. Because item height is highly variable, this leads to scroll
speed being inconsistent between views, and generally far too fast when using
icon view with icons larger than 22px size.
This patch makes the size of the scroll step based on the text label rather than the
icon size just like D25683, ensuring that the scroll speed does not vary and become
super fast when using large icons in particular.
Test Plan:
Use a mouse with a scroll wheel and scroll in Dolphin item views with list view,
details view, icon view, etc, using different item sizes. Speed should be
consistent in all views now, and also feel consistent with other KDE apps.
Also try with multiple scale factors to make sure the behavior does not change.
No change with high-resolution two-finger touchpad scrolling.
Summary:
Currently, the search url parsing does not detect if the search is based on Content or Filename, and it just keeps the last selection which can be inconsistent with the actual search.
This patch add such detection, and since an advanced user can combine filename and content search (using the keyword `filename:`), now the parsing detects both items and handles the four possible cases:
| Content | Filename | Search text | Search type |
|---|---|------------------------|------------------|
| T | T | abc filename:"xyz" | Content |
| T | F | abc | Content |
| F | T | xyz | Filename |
| F | F | | do not set |
Depends on: D25260
Test Plan: `bin/dolphinquerytest`: Added new test cases for searches with content text and/or filename
Ismael Asensio [Sun, 15 Dec 2019 16:18:18 +0000 (17:18 +0100)]
[dolphin/search] Search by (multiple) tags
Summary:
Adds a tag selector in the extended filters of the search box.
Selected tag or tags are added to the search query along with the other filters (type, date, rating).
FEATURE: 412564
CCBUG: 356062
Test Plan:
- Menu shows the user tags
- Picking any tag/s filters the search to that specific tag/s
Nate Graham [Sat, 14 Dec 2019 13:15:44 +0000 (14:15 +0100)]
Don't overload the word "Properties" to mean multiple things
Summary:
Generally "Properties" refers to information about a selected file. However Dolphin also
uses the word "Properties" in the phrase "View Properties", which refers to the display
style of the view. Since "properties" is a fairly esoteric and technical term to most
users, it would probably be wise to avoid using it in multiple contexts.
Accordingly, this patch changes "view properties" to "view display style".
Test Plan: Look at the settings window, hamburger menu, view menu, and docbook
Nate Graham [Wed, 20 Mar 2019 22:06:28 +0000 (23:06 +0100)]
Add action for focusing Terminal Panel
Summary:
Add an action for focusing and de-focusing the Terminal Panel.
FEATURE: 185096
FIXED-IN 20.04.0
Test Plan:
- Hit {key Ctrl Shift F4} or click {nav Tools > Focus Terminal Panel} or {nav Control > Tools > Focus Terminal Panel}
- If the Terminal Panel was closed, it opens and gains focus
- If the Terminal Panel was open but unfocused, it gains focus
- If the Terminal Panel was open and focused, focus returns to the view
Ismael Asensio [Fri, 15 Nov 2019 22:34:13 +0000 (23:34 +0100)]
fix(search): Fix baloo searchString parsing
Summary:
Fix the parsing of Baloo query `searchString` to represent its parameters properly
in the search box:
# Baloo terms (`rating`, `modified`) are added to the user search text: {F7575590}
# Extra quotes are added to the search text: https://bugs.kde.org/show_bug.cgi?id=412952
This revision supersedes D24422, by making the fixes on the new dolphin query model,
instead of directly on the UI.
BUG: 412952
FIXED IN: 19.11.90
Test Plan:
- `bin/dolphinquerytest` passes without `XFAIL`s
- Dolphin search box is not garbled by search terms or quotes
Elvis Angelaccio [Sun, 24 Nov 2019 18:18:41 +0000 (19:18 +0100)]
Force dbus introspection on the Dolphin_1 object
Summary:
QtDBus caches known interfaces when passing a non-empty interface name
to the QDbusInterface constructor. This is an issue when calling the
FileManager1 methods more than once, because `preferred` could be a
valid interface from the cache, but it would later fail to call the
`openFiles`/`openDirectories` methods on the main window.
By passing an empty interface name, we prevent QtDBus from using the
cache so that we always get an invalid interface when calling the
FileManager1 methods on a daemonized dolphin process (that doesn't have
the Dolphin_1 dbus object).
BUG: 414402
FIXED-IN: 19.12.0
Test Plan:
1. dolphin --daemon
2. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" ""
3. Close the dolphin window that was just opened.
4. Start a normal dolphin process
5. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" ""
6. Close again the dolphin window
7. qdbus org.freedesktop.FileManager1 /org/freedesktop/FileManager1 ShowFolders "/tmp" ""
Elvis Angelaccio [Sun, 24 Nov 2019 13:56:53 +0000 (14:56 +0100)]
Fix accessibility regression on the Dolphin Control button
9cd042a86c removed the text from the Control button without setting an
accessibleName property, which is a regression for screen-reader users.
This breaks the 19.12 string freeze, but since it's the same string we
were translating before 9cd042a86c, hopefully it's not going to be too
much of a burden for translators.
Ismael Asensio [Thu, 14 Nov 2019 21:48:26 +0000 (22:48 +0100)]
test(search): Add test case for baloo parsing model
Summary:
Adds a new test unit for the model which parses baloo search URLs
14/19 tests are set to `XFAIL` on current implementation, as they will be fixed in a final revision.
Ismael Asensio [Wed, 13 Nov 2019 21:48:45 +0000 (22:48 +0100)]
fix(search): Allow to set empty type
Summary:
This small patch allows to set and empty `type` to the extended options, which will set the `Any Type` option (index 0).
It doesn't make any change in current code, since this case is not called, but it helps simplifying follow-up patches.
Test Plan:
No behavior changes with current code.
Calling `setFacetsType(QString())` actually sets the first option (`Any Type`)
Ismael Asensio [Wed, 13 Nov 2019 21:16:35 +0000 (22:16 +0100)]
refactor(search): De-couple baloo URL parsing logic from UI
Summary:
Extracts the logic that parses `baloosearch:` urls into a new model class. The parser logic itself is kept as is.
The search box UI is later updated using the model fields.
This refactor has been proposed by @bruns in the review of D24422, as it largely simplifies the unit tests and further expansion/improvements.
Test Plan:
No behavior changes.
Test case is added in the follow-up revision: D25258
René Bertin [Tue, 12 Nov 2019 16:47:35 +0000 (17:47 +0100)]
make link with LLVM
This patch fixes a link failure when building with the LLVM toolchain
which does not discover the dependency on or pull in the private dolphin
library when linking dolphin itself.
Méven Car [Tue, 12 Nov 2019 12:48:32 +0000 (13:48 +0100)]
Allow dolphin to format DateTime at later stage than KBalooRolesProvider
Summary:
KFileItemListWidgetInformant::roleText expected imageDateTime value to be a QDateTime but KBalooRolesProvider formatted it to QString previously, preventing KFileItemListWidgetInformant::roleText to format properly the imageDateTime
PlacesItemModel: remove redundant set of properties
Summary:
The text, icon and url properties are already set in
`PlacesItem::setBookmark()`, so there is no need to set them here.
The `OnlyInApp` property is part of the KBookmark object that we are
going to set to the place item, so there is no need to set it here either.
Test Plan:
- Open both dolphin and the Plasma file dialog in some app
- Edit the text, url, icon and the "Only show when using this application" checkbox in some place item from the file dialog
- Check whether the place in dolphin keeps getting updated accordingly
Méven Car [Fri, 8 Nov 2019 15:40:08 +0000 (16:40 +0100)]
[Status Bar] Remove file status Timer, add text update delay
Summary:
Currently when hovering over a file we have its name, mimetype type and size display in the status bar for 1 second, after which the status of the folder is displayed.
This patch removes this timer making the status bar behavior more predictable and user friendly.
Instead there is a 50ms delay between when the status bar gets new text to display (for instance mouse hovering or keyboard navigation) and when the status bar displayed text is updated. This is to avoid flickering.
Ismael Asensio [Thu, 7 Nov 2019 00:34:19 +0000 (01:34 +0100)]
Make the search box more compact
Summary:
Reduce the spacing between widgets and remove the content margins on the extended search options to have a more compact and space-saving layout.
Currently, some widgets are not even aligned.
This will be even more important if we remove the toggle button for 'More Options'.
Ismael Asensio [Sun, 3 Nov 2019 22:00:36 +0000 (23:00 +0100)]
Get rid of search "More Options" toggle button
Summary:
With the new compact search filters (type/date/rating) it makes sense to show these options whenever available, and save some horizontal space on the main bar (specially for verbose languages).
These options will be hidden nevertheless if the search is non-indexed or Baloo is disabled.
For some nicer aesthetics D25029 should be also applied.
Ismael Asensio [Sun, 27 Oct 2019 21:38:15 +0000 (22:38 +0100)]
New design for extended search options
Summary:
Replace the arrays of radiobuttons in dolphin search box to more simple dropdown boxes.
This provides a leaner look, saving a lot user space on the main view and it is more consistent with the 'Search tools' in the most known sites (Google, DuckDuckGo, etc.)
There is room for improvement, as `QComboBox` doesn't match perfectly with the tool buttons used avobe, but I think it is an improvement over the current situation.
Méven Car [Sat, 26 Oct 2019 10:53:04 +0000 (12:53 +0200)]
When the selection is deselected, restart the keyboard search from the beginning
Summary:
BUG: 411538
FIXED-IN: 19.12
Test Plan:
Open a directory with 3 files starting with the same letter.
1. Press this letter key twice
2. The second file is selected
3. Deselect the file with the mouse or using Esc
4. Wait 1 second
5. Press the same key again
Alex Miranda [Mon, 21 Oct 2019 19:39:30 +0000 (21:39 +0200)]
Disable keyboard accelerators for the tabs widget
Summary:
Now that there are actions for switching to a specific tab with default
Alt + <number> shortcuts, automatically assigned keyboard accelerators
can result in ambiguous shortcuts when using specific tab names
containing numbers.
Not adding any accelerators for the tabs widget ensures the default
shortcuts work reliably regardless of tab names.
Test Plan:
- Verify there are no ambiguous shortcuts when browsing folders with
names containing only numbers
- Verify other keyboard accelerators still work (menu bar, context menu
and others)
Méven Car [Sun, 20 Oct 2019 10:35:52 +0000 (12:35 +0200)]
Avoid emitting twice twice selectionChanged when keyboard changes the selection, fix slotChangeCurrentItem
Summary:
In KItemListController::slotChangeCurrentItem searchFromNextItem use was bugged :
The two branches of `if (searchFromNextItem)` both looked for the next keyboard with indexForKeyboardSearch(text, currentIndex (the first one with just a +1 modulo).
But when searchFromNextItem is false, we are supposed to start to look for the next indexKeyboard from the start of the list `0`, not from the `currentIndex`
Alex Miranda [Sun, 20 Oct 2019 10:03:10 +0000 (12:03 +0200)]
Fix a bug where "Add to Places" remains disabled
Summary:
Fix a bug where "Add to Places" doesn't get re-enabled in the context
and file menus when nothing is selected after previously selecting a
single file that is not a directory or multiple files.
Test Plan: Verify the action remains enabled when appropiate
Ismael Asensio [Sun, 20 Oct 2019 09:51:59 +0000 (11:51 +0200)]
[dolphin/search] Reset search options when needed
Summary:
Adds a method to reset the options in `facetsWidget` in two cases: when disabled and before parsing a new search URL.
Otherwise, controls for a parameter (ex. `rating`) which are not found in the new URL would stay on the old positions, instead of the default "any".
See D24422
Test Plan: Controls on `facetsWidget` go back to the default in such two cases.
Ismael Asensio [Sun, 20 Oct 2019 09:43:32 +0000 (11:43 +0200)]
[dolphin/search] Fix search behavior when selecting "Your Files"
Summary:
Fix the search box forgetting the location where the user was previously searching into.
To do a search on "All Files" instead of setting the `m_searchPath` to `$HOME`, it checks the button state, so the "From Here" location is not lost.
As an added benefit, selecting "Your Files" when in a non-indexed folder will use the baloo search instead of a fully non-indexed search from $HOME.
This issue is the last remaining one of the series started with D24422, with the purpose of fixing the searchbox parsing and update.
Test Plan:
- Toggle between "From Here/Your Files" and navigate between locations
- The search box remembers the location and keeps a coherent state