┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views
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-27ViewProperties: Store view properties in extended file attributesMéven Car
Existing settings are converted. Works on most FS except FAT/exFAT which fallback to .directory files. If the extended file attributes (in ADS in Windows) can't be saved, they are saved to file as before. BUG: 322922 You can see file xattr using for instance for Unix filesystems: getfattr -d /home/meven
2024-10-12dolphinview: when rename dialog finishes, immediately update the model and ↵Jin Liu
the selection On sucessful return of the rename dialog, we update the model and the selection immediately to reflect the new name. This is to avoid the short duration after the rename during which the selection is lost. Currently, after the rename dialog finishes, the selection is briefly lost for about 1 second until the view automatically refreshes. This patch updates the model and selection immediately after the dialog finishes, so the renamed file is still selected. BUG: 481717
2024-10-12dolphinview: after inline renaming, immediately update the selectionJin Liu
Currently, the inline renaming updates the model and the list of selected files (m_selectedUrls) immediately after the user presses enter, but the selection in the view is not immediately updated. This results in the selection to be briefly lost for about 1 second until the view automatically refreshes. This patch updates the selection immediately after the user presses enter, so the renamed file is still selected. BUG: 481717
2024-10-11dolphinview: add error message when renaming failed in dialog modeJin Liu
BUG: 481561
2024-10-08DolphinViewContainer: Delay changing the urlAmol Godbole
KCoreDirLister::itemsDeleted() signal is being emitted twice for the same url. This results in Dolphin displaying an incorrect location. Delay changing the url instead of delaying DolphinView::currentDirectoryRemoved() so that the check for current directory being removed in KFileItemModel::slotItemsDeleted() occurs correctly, while still ensuring that KCoreDirLister is not prematurely modified. BUG: 492277, BUG: 473377
2024-09-15ViewProperties: sort by accesstime for recentlyusedMéven Car
By default. Since recentlyused:/ fills only access time based on the DB data. timeline:/ is also included. CCBUG: 437382
2024-08-19Fix middle-click not following the "Open archives as folder" settingJin Liu
Previous to this commit middle-clicking an archive would always open it in a new tab. This contradicts the recent change d27ee07de7558470ef7b497fbe3d3504ce7cad07 which made it so middle-click would open an item in the second application that is available to open a file. With this commit, middle-clicking will treat the archive like a folder only when GeneralSettings::browseThroughArchives is enabled or when there is no second application available. Otherwise middle-click will open the archive in the second available application.
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-01Revert "DragAndDropHelper::updateDropAction: use StatJob for remote URLs"Felix Ernst
This reverts commit dc149ec5e52f52c514cf362603d05ba8eea506b8. This prevents a crash. One issue identified is that the commit that I am reverting here accesses a QDropEvent at a moment in time in which it might have already been deleted. We cannot check if it exists by that time because we do not control its lifetime and it is not a QObject.
2024-05-08view: Add setting to trigger user set action with double clickGeorge Florea Bănuș
Default action is select-all.
2024-05-04DolphinView: Update selection on newly created item(s)Anthony Fieroni
Adjust paste to url to new KF6 signals BUG: 476670 Signed-off-by: Anthony Fieroni <[email protected]>
2024-04-11viewproperties: remove now obsolete recentdocument referenceMéven Car
2024-04-09Fix saving sort role after change from headerFelix Ernst
This is a partial revert of 5186f09cabf0af4b0683e75b0bcde1061f84a67e. That commit tried to simplify code, however this lead to the saving of view properties being skipped, introducing the linked bug. The issue is that by the time the slotSortRoleChangedFromHeader() method is called, the model already changed its sort role. Therefore the check if the new role is identical to the old sort role fails and no saving would occur. With this partial revert the header will continue to change the sort role itself (which allows a minor optimization of not double sorting when also changing the sort order at the same time). The method slotSortRoleChangedFromHeader() is then only responsible for saving that change in the ViewProperties and telling the SortBy menu in the user interface that the sorting has changed. BUG: 480246
2024-04-04versioncontrol: make observer the sole owner of pluginsMéven Car
Also properly shutdown thread.
2024-03-27Touch up various user-visible stringsTem PQD
This improves consistency among wording. More clarity is achieved by avoiding technical terms or terms with multiple meanings. Notable changes: -Specify full settings path: "Configure Dolphin > View > General" in Show Hidden Files whatsThis -Mention setting to hide files with application/x-trash MIME type in "Show Hidden Files" whatsThis -Mention Split View mode in "Copy/Move to Other View" whatsThis -Reword "Activate Tab" actions to "Go to Tab" (Next, Previous, Last, numbers) -Add "Last Tab" iconText, consistent with "Next Tab" & "Previous Tab" -Update Split View whatsthis to explain how to tell which view is "in focus" visually -Replace "pane" with "view" in split view settings text, and clarify tooltip text -Reword "objects" to "items" in whatsThis texts -Reword "find bar" to "search bar" in Search button whatsThis text
2024-03-24versioncontrol: Prevent a use-after-free in UpdateItemStatesThreadMéven Car
UpdateItemStatesThread kept a pointer reference to m_plugin whose lifetime was tied to VersionControlObserver parents. On application shutdown it could happen the thread is still running when the Observer is destroyed. Make the plugin pointer a weak reference, allowing to stop the thread when the plugin is gone. BUG: 477425
2024-03-12Enable custom view properties for special folders even if "remember for each ↵Jin Liu
folder" is off Special folders include: search, trash, recents, timeline Not including Downloads, although we have a custom view when "remember for each folder" is on. Rational: These folders really need the custom view. So even if the user selects a global view for all "normal" folders, s/he probably still want a custom view for special folders.
2024-02-29DragAndDropHelper::updateDropAction: use StatJob for remote URLsJin Liu
When dragging onto tabs/Places from a remote URL, we don't process the QDropEvent immediately, but start a StatJob and process the event when it finishes. Also, the result of the StatJob is cached for 30 seconds, to avoid starting duplicate jobs.
2024-02-27Fix: can't drop into remote dirJin Liu
KFileItem::isDir() only works when it's created from listDir(), or from a local QUrl. For a remote QUrl, isDir always returns false, so we can't use that in supportsDropping(). As a workaround, now supportsDropping() always returns true in remote dirs -- we don't check if a remote dir is writable when dropping.
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-16Fix: "empty folder" placeholder text eating mouse eventsJin Liu
BUG: 441070
2024-01-14Never emit the fileMiddleClickActivated signal if isTabsForFilesEnabled is trueStefano Crocco
Commit d27ee07d makes it impossible for applications embedding Dolphin part (for example, Konqueror) to react to middle mouse click on a file. If I understand correctly (I'm not familiar with Dolphin code) the `fileMiddleClickActivated` signal is connected with a slot in `DolphinViewContainer`, which is only used by Dolphin itself and not by `DolphinPart`. The result is that middle clicking on a file (except archives) from a Dolphin part has no effect. To avoid this situation, I removed the check for `!archiveProtocolIsEmpty()` in the `else if` condition. This way, if `isTabsForFilesEnabled()` is `true`, which should be true if and only if the view is inside a `DolphinPart`, the `activeTabRequested` or `tabRequested` signal will be emitted, allowing the embedding application to respond however it wants. When the view is inside the Dolphin application, instead, `isTabsForFilesEnabled()` will always be `false`, so the new behavior will be used.
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-13Always automatically choose a new file name while duplicatingEugene Popov
Since now when duplicating items we automatically generate a name for the new item, we can do the same if an item with that name already exists. BUG: 475410
2024-01-06DolphinView: merge update functions into set functionsMéven Car
NO_CHANGELOG
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-18DolphinView: Ensure to update the whole viewState after a job created filesMéven Car
BUG: 476670
2023-11-29Set style to nullptr before painting listviewAkseli Lahtinen
Resolves any possible dangling pointers if application style is changed after toggling the selection mode BUG:477288
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.
2023-11-21dolphinview: Fix right-click on header whilst unfocusedOliver Beard
When the window is unfocused, there's no activeWindow and right-clicking on the header causes the menu to appear with window decorations.
2023-11-21dolphinview: Change case of status bar textOliver Beard
We should use lower case for this text, matching other strings (properties dialog, information panel).
2023-11-11Set show preview shortcut to F12Eric Armbruster
To be consistent with kio open/save dialogs. BUG: 172967
2023-11-08Adapt to KConfigGroup name officially being a QString typeFriedrich W. H. Kossebau
GIT_SILENT
2023-11-06Use DBus to reparse worker configNicolas Fella
See https://phabricator.kde.org/T15956
2023-10-24Merge branch 'master' into kf6Nicolas Fella
2023-10-17KItemListView: add view position in scrollToItem()Amol Godbole
An item, on being scrolled to, is always located at the nearest edge of the view. This is not always convenient. Allow specifying where the item should be positioned with respect to the view in scrollToItem(). BUG: 423884
2023-10-12DolphinView: get rid of writeStateChanged signal in setActive()Amol Godbole
The signal writeStateChanged() was not working because it is not connected to slotWriteStateChanged() slots when the active view changes. Replace the signal with direct calls to the slots. Also, do not delay openRequest signal in DolphinSearchBox::slotSearchTextChanged. It's no longer required. BUG: 440366
2023-10-05Merge branch 'master' into kf6Nate Graham
2023-10-05Fix accessibility ancestor treeFelix Ernst
Before this commit, KItemListViewAccessible would always return nullptr as its parent. This meant that accessibility software would have to guess to which window/hierarchy the KItemListView belongs to. Guessing shouldn't be necessary here. This commit makes sure that the KItemListView always returns a sensible parent in the accessible hierarchy. It does so by explicitly setting the accessible parent for every KItemListView after construction in the DolphinView contructor. Since KItemListView now always knows about its accessible parent, the accessibleInterfaceFactory can always ask the KItemListView for that information when constructing the QAccessibleInterfaces. Fixes https://invent.kde.org/system/dolphin/-/issues/47.
2023-09-10Merge remote-tracking branch 'origin/master' into kf6Méven Car
2023-09-10Replace qAsConst with std::as_constMéven Car
2023-09-10Copy Location: Make sure to export path with native separatorsMéven Car
2023-09-05DolphinView: Reset scrollbars before changing view modeAmol Godbole
When view modes are changed, the scrollbars are not reset. This can cause the scroll area to be moved out of view after changing the view mode, making the view unusable. This commit resets the scrollbars. BUG: 393152
2023-08-29Fix a bunch of clazy warningsMéven Car
2023-08-28Use KMessageBox::warningContinueCancel when appropriateMéven Car
This will prevent saving the "Cancel" + "don't show again" result, which is meaningless.
2023-08-28Clean obsolete ifdefs since dolphin requires KF 5.101+Méven Car
2023-08-23Merge branch 'master' into kf6Méven Car
2023-08-23Allow to not ask again confirmation when opening 5 or more files or terminal ↵Felix Ernst
at once BUG: 473513