┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews
AgeCommit message (Collapse)Author
2024-10-28Overhaul main view accessibilityFelix Ernst
This commit brings the main view of Dolphin into a usable state accessibility-wise. Users of screen readers should have a way better experience while browsing files and folders and navigating along the file system hierarchy. This commit fixes most of the remaining already-identified accessibility issues listed in https://invent.kde.org/teams/accessibility/collaboration/-/issues/28, but not all. Namely, these should now be fixed: 1. Orca should read the element type in dolphin (file, folder, device, link to folder, link to file) 2. Orca should read complete label in icon and compact view mode, currently it only speaks the name, but there could be additional information like the number of elements or the file size. 3. Orca is not able to announce Selecting / Unselecting files in Dolphin. It also never announces how many items are selected in total. (Announcing the total selection can be done by reading out the view element or by pressing the Tab key to get to the status bar with the relevant information.) 4. Dolphin opens on the home directory, but Orca doesn't tell you so. Consider enclosing the area in a frame/panel which updates its accessible name each time you modify the current path by entering or leaving a directory. 5. I don't know what the folder presentation widget is, but it should be presented as a grid view. Currently, we have a terrible experience because the entire row of folders is read at once, with no indication that we can move left and right with the arrows to go between the elements of a row. When I found that out, however, I discovered that when you're on the last icon of the first row and press right arrow, you get to the first icon of the next row, but that's not announced, instead, the whole row is announced at once 6. Orca should announce the current elements instead of "layered pane" when the Folder / File view gets the focus in dolphin 7. Orca reads only name in Table View only of Dolphin 8. Items are sometimes confusingly announced as "collapsed" in contexts in which there is no concept of collapsing/expanding e.g. in icon view mode. A lot of code was moved around and renamed. The three accessibility classes, which all used to be in the same file, are moved into separate files. *Acknowledgement* Thanks to Christian Hempfling and bgt lover for testing as well as originally identifying a lot of the pain points being addressed here. This work is part of a my project funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology. https://kde.org/announcements/2024_ngi_openletter/
2024-10-19Add a sort by duration option for videosSomsubhra Bairi
BUG: 482508 Signed-off-by: Somsubhra Bairi <[email protected]>
2024-10-17kitemlistcontroller: process forward/back buttons when double-clickingWolfgang Müller
Tapping the forward or back mouse buttons quickly enough makes Dolphin interpret the action as a double-click of the button in question and handle it in mouseDoubleClickEvent() instead of its normal button handler. This means that certain button presses might seem delayed or "swallowed" when quickly navigating forwards or backwards through the history. Since a double-click of the forward or back button is currently meaningless, fix this by emitting a normal mouseButtonPressed event for those buttons in the double-click handler and skipping any further event processing. Co-authored-by: Felix Ernst <[email protected]> CCBUG: 485295
2024-10-12KFileItemModel: fix `setData` in the renaming usageJin Liu
The `setData` function is used by inline renaming to update the `text` role (i.e. file name) in the model before actually do the renaming. However, the current implementation only updates `text` and url in KFileItem in this case, leaving the `url` role and the `m_items` cache untouched. This makes the cache incoherent, so `index()` won't find the renamed item. It also makes the `url` role incoherent with the `text` role. This also fixes the problem mentioned in bug #481561 where when inline renaming fails, it still shows the new name. (Because `m_model->index` fails to find the new name and rename it back on job failure.) BUG: 481561
2024-08-28KItemListRoleEditor: minimize resize() occurencesMéven Car
Adjust document width to match its widget width. BUG: 479695
2024-08-23Use QLocale to display localized time role groupJérôme Lécuyer
Use QLocale to format the QDateTime displayed as the role/label of a group. `QDateTime::toString` format the date and month names in English. `QLocale::toString` returns them localized. See the note about day and month names at https://doc.qt.io/qt-6/qdatetime.html#toString BUG: 488088
2024-08-17KStandardItemListWidget: remove obselete commentYifan Zhu
2024-08-16Fix display of filename ampersands in actionsJohn Veness
If you added the "Actions for..." button to the toolbar, filenames that contain "&" would not appear correctly in that button. This MR fixes that, and also the button that appears when using "Delete" with selection mode. BUG: 491684
2024-08-13KStandardItemListWidget: select by number of unicode charsYifan Zhu
Previously during rename, the number of QChar is used for selection, which might be different from number of unicode characters. Test plan: - create the file zz❤️❤️.txt - rename the file - verify that the first 4 characters are correctly selected, which didn't work before the patch. BUG: 466814
2024-07-31Kitemlistcontroller: only accept doubleclick for left mouse buttonMéven Car
Add test for double-click activation. BUG: 485295
2024-07-27Port from KIconLoader::drawOverlays to KIconUtils::addOverlaysNicolas Fella
The latter is what most other projects use
2024-07-22Notify users if authorization is required to proceedFelix Ernst
Previous to this commit entering a folder without read access would show the non-descriptive error message "Could not enter folder". If the user actually is not allowed to view the contents of the folder, this is indeed true and this commit will preserve this message as is. However, if an admin protocol is installed, users can actually view the contents of most folders after authorizing themselves as administrators. So this commit changes the error message in those specific circumstances to instead read "Authorization required to enter this folder." and provide a button to authorize themselves. This button is the "Act as Administrator" action. If no admin protocol is installed, this commit has no effect. The idea for this change came from Harald Sitter. I receive funding for changes like this by the Next Generation Internet Initiative, which (as I understand it) will no longer provide funds for future projects like this if the current EU draft budget goes through as it is.
2024-07-18Port away from deprecated KIconEffect APINicolas Fella
2024-07-17Remove dead codeManuel Alcaraz Zambrano
2024-07-05Add support for Plasma's global smooth scrolling settingNathan Misner
KItemListSmoothScroller now checks whether smooth scrolling is enabled globally and listens for any changes to the setting via DBus.
2024-06-16Prefer en_US, "colour" -> "color"Marius P
2024-05-21Haiku build fixesSchrijvers Luc
Co-authored-by: Gerasim Troeglazov <[email protected]>
2024-05-18Avoid implicitly selecting itemsFelix Ernst
Items should only be selected if the user wants to act on them. However, previous to this commit we sometimes selected items even when there is no reason to assume that the user would like to act on them. Such selections are dangerous because they make it more likely that the user manipulates items by accident which they never even explicitly selected. Example: The "Up" action is used to navigate to the parent folder. This will implicitly select the folder one emerged from after opening the parent folder, so just one accidental press of the Delete key will lead to data loss if the press goes unnoticed. This scenario would have been avoided if no folder had been selected automatically. The above example becomes even more dangerous if the user is acting with elevated privileges. The following implicit selections of items are being removed: - Selecting items that are being activated - Selecting folders one emerges from Even though these items will no longer be selected after these actions, they will still be marked as current. The only downside I see is that our indication of which item is "current" is a lot weaker than the selection highlight, so it might be more difficult to spot which folder one has emerged from. However, this could be counter-acted with some other temporary indication if this really turns out to be a problem. The only downside I see is that our indication of which item is "current" is a lot weaker than the selection highlight, so it might be more difficult to spot which folder one has emerged from. However, this could be counter-acted with some other temporary indication if this really turns out to be a problem. BUG: 424723
2024-05-08view: Add setting to trigger user set action with double clickGeorge Florea Bănuș
Default action is select-all.
2024-04-05KItemListController: don't create rubber band for a right click in an empty ↵Amol Godbole
region Rubber band was being incorrectly created for a right click in an empty region. Handle this case in KItemListController::onPress(). BUG: 484881
2024-04-04kitemlist: don't open dir when double-click on expand arrowMéven Car
BUG: 484688
2024-03-30Fix layout in Compact View mode for RTLEugene Popov
This MR fixes the layout in Compact View mode when items are grouped.
2024-03-30Fix selection marker for RTLEugene Popov
This MR makes the selection marker to be shown on the right in RTL mode.
2024-03-27Better support for RTLEugene Popov
This MR fixes some issues related to RTL scripts: - wrong layout in Compact View mode - broken horizontal scrolling in Icon View and Details View modes - broken navigation with left and right arrow keys in Details View mode BUG: 484012 BUG: 449493
2024-03-25Fix right-mouse click crashes on WindowsJulius Künzel
2024-03-23KItemListView: Improve scrollToItem()Eugene Popov
Prevent an item with a long name from scrolling to the right edge when navigating in Compact View mode.
2024-03-09KItemListController::onPress: remove unused screenPos argumentMéven Car
NO_CHANGELOG
2024-03-08Start autoActivationTimer only if hovering over a directoryAkseli Lahtinen
Before starting autoActivationTimer, check that we're hovering the item on top of a directory. If we don't check for it, the the autoActivationTimer will try to open the hovered item in it's default application, which can be distracting and break the actual action the user was trying to do, like moving the file to a directory. BUG:479960
2024-03-07Add option to completely disable directory size countingNico Kreipke
Dolphin shows the size of directories by listing their contents, which for some users might cause unwanted load on the file system. Depending on the size of the subdirectories in question and how the storage is accessed, this might cause noticeable delays and even freezing. This commit adds a new option under "View -> Content Display" that enables users to set "Folder size:" to "No size", completely disabling directory size counting. Directory size counting is still enabled by default. As a third option for "Folder size" is added, the DirectorySizeCount boolean setting is replaced with a DirectorySizeMode enum setting. The old setting is migrated using a kconf_update script. FEATURE: 477187 GUI:
2024-02-27Fix compile with Qt 6.7nerdopolis turfwalker
2024-02-23Resolve conflict between activateSoonAnimation and hoverSequenceAnimationFelix Ernst
Prior to this commit, the activateSoonAnimation would not play for folders using previews. That was because the hoverSequences of folder previews would always take priority over the activateSoonAnimation. This commit prioritises the activateSoonAnimation for the quick moments in which it is active.
2024-02-23Add drag-open animationFelix Ernst
This commit adds an animation for folders that makes clear that they will open or expand soon. This is the case when the option to open folders during drag operations is enabled and a user drags an item on top of a folder. The animation goes like this: - Replace the folder's icon with the "folder-open" icon - Go back to the folder's original icon - Replace the folder's icon with the "folder-open" icon once more
2024-02-18Add documentationFelix Ernst
2024-02-17Improve DnD handling in read-only dirsJin Liu
1. Places panel and tabbar update drag status in read-only dir 2. Don't create drop job in readonly directories
2024-01-30Improve arrow key navigation for right-to-left languagesFelix Ernst
While using right-to-left languages most of Dolphin is mirrored. However, the logic of what happens when the arrow keys are pressed to move between items in the main view was never adapted to account for that. Basically nothing works as expected because of this. It's more like dealing with a psychopath who misinterprets every command you give: Left is right, right is left, up is most of the time right but sometimes not, down is most the time left but sometimes not. This commit fixes and adapts the logic if a right-to-left layout is used. This fully fixes icon view mode and improves compact view mode, though compact view mode still has more issues which aren't addressed here. This work for the benefit of the minority that use right-to-left languages both in Europe and the world is sponsored by NLnet and the European Commission which I think is beautfiul. BUG: 453933
2024-01-23Slightly refactor count resortingFelix Ernst
The bug fix 8f043b2958477d3fe2ef094b7e42f792f4cf0b02 introduced a secondary code path to trigger a resort of items. However, the previous way to trigger it only required a small bug fix to work and gives us a couple of optimisations for free. This commit removes the secondary code path and fixes the primary one. CCBUG: 473999
2024-01-22Avoid sorting too frequentlyFelix Ernst
d98037745fe6b5efbe9b145da7d20fa2f731b6a6 changed the time from 500 ms to 50 ms. This commit changes it to 100 ms. Information relevant for sorting might change repeatedly. Prior to this commit here we would resort within 50 ms of sorting being requested. If a lot of resorts would be requested in a short time frame, this could lead to the item order changing within the view up to 20 times a second which would lead to a lot of unnecessary movement and make it impossible to read even file names during the repeated sorting. 100 ms is half as bad in that regard. Bigger values might be even better but it is a trade-off.
2024-01-20rolesupdater: set isExpandable to false when dir is emptyMéven Car
Signed-off-by: Méven Car <[email protected]>
2024-01-14DolphinView: Use SingleShot and Queued ConnectionsAmol Godbole
A minor refactor where Qt::SingleShotConnection has been utilized. Also, signal delay using QTimer has been replaced with a Qt::QueuedConnection.
2024-01-13Add setting also hide application/x-trash files when hiding hidden filesMéven Car
BUG: 475805
2024-01-10KItemListRoleEditor: Disable spellcheckingAkseli Lahtinen
No need for spellchecking when renaming folders/filenames. BUG:477897
2023-12-26Do not rely on KIO source-code compat codeAlexander Lohnau
2023-12-25Fix issues if QT_NO_CAST_FROM_ASCII is definedMarius P
Fix issues e.g. "error: ‘QString::QString(const QByteArray&)’ is private within this context".
2023-12-15Resort directory size count after refreshingAkseli Lahtinen
After refreshing the view when size count is selected as the sortRole, count is 0 at first. When the actual count is loaded, the sorting is done according to the count being 0. This can break the sort order and cause view and model to be out of sync. Making sure we always resort all items when the directory size/item count is changed fixes this BUG:473999
2023-12-15Change resortAllItemsInterval to 50msAkseli Lahtinen
Related to https://invent.kde.org/system/dolphin/-/merge_requests/675 Reduces the delay for sorting items when something changes
2023-12-14Dolphin: Remove unused code, fix clazy warningsMéven Car
2023-12-08Do not reset expandability when loading previewsAkseli Lahtinen
Fixes a weird bug with the treeview if one has ``` [PreviewSettings] Plugins=audiothumbnail ``` in their `dolphinrc`. It can be any PreviewSettings plugin, as long as there it at least one. Check the bug report for more, but in short, the bug is reproducible like this: ``` create folder tree inside a test folder with mkdir -p 1/A/B/C/D/E/F/G/H/I mkdir -p 2/A/B/C/D/E/F/G/H/I mkdir -p 3/A/B/C/D/E/F/G/H/I make sure you see the test folder, and expand it expand folder 1, no need to expand all sub folders expand folder 2 collapse and expand test folder 3 loses its expansion arrow if all folders are expanded, only 3 keeps its order if 1 and all its subfolders are expanded, then test is toggled, folder 2 also loses its expansion arrow ``` Video of the bug: ![Screencast_20231207_112700](/uploads/4fad2a62a5a9a67760fa7faa8e3bec40/Screencast_20231207_112700.webm) The path to the bug is: `KFileItemModelRolesUpdater::slotPreviewFailed` -> `KFileItemModelRolesUpdater::applyResolvedRoles` -> `KFileItemModelRolesUpdater::rolesData` -> `KFileItemModelRolesUpdater::startDirectorySizeCounting`. This causes Dolphin with preview plugins enabled trying to count the directories again, and the data gets reset even if there is something there. This then resets the `isExpandable` flag and that breaks the treeview, causing all kinds of issues, like being able to expand non-directories and makes things out of sync. BUG:477607
2023-12-08Do not cache indexes across async tasksDavid Edmundson
Capturing an index is unsafe as it could be out of date when this is processed. The user could have changed directory inserted a file or changed sorting order.
2023-11-21Create thumbnails with scene devicePixelRatioKai Uwe Broulik
2023-11-21views: Use scene devicePixelRatio rather than qAppKai Uwe Broulik
When possible, use the devicePixelRatio from the scene which on Wayland unlike the QApplication will properly support fractional scaling. A KItemViewsUtils class is introduced that can be reused elsewhere.