When something is selected, we pre-generate the drag image so that it's ready if the user starts a drag. But this is asynchronous, and while it's generally very fast, a determined with swift fingers can start the drag before it's ready. There's two major ways that this can happen: - The user has just moved one or more files, and tries to drag them again. In this case, they're still selected, the old dragImage is reused, but as they start from a different position now, the hotspot adjustment may put it ways away from the pointer. - The user clicks and drags an icon that was not previously selected. In this case, there's no image at all, and the icon just vanishes while dragging. Both are somewhat challenging to reproduce, but I've found the second is easiest immediately after plasmashell start. But I've reproduced both outside of that situation as well. We do two things to fix this: for the first, we generate the dragImage not just when the selection changes, but also when icons are moved - this way it should be ready if the user starts dragging again. Second, we track on the delegate whether the image is being generated, and skip starting the drag if it's not. This is fast enough that it should be ready once the next pixel is reached, so for the user there's no perceptible difference - effectively just a marginally larger startDragDistance, but it makes sure that when the drag starts, the icon does not vanish. BUG: 527529 |
||
|---|---|---|
| .gitlab/merge_request_templates | ||
| .reuse | ||
| .well-known | ||
| appiumtests | ||
| applets | ||
| attica-kde | ||
| cmake/modules | ||
| containments | ||
| design | ||
| desktoppackage | ||
| doc | ||
| emojier | ||
| imports/activitymanager | ||
| kaccess | ||
| kcms | ||
| kconf_update | ||
| kded | ||
| knetattach | ||
| layout-templates | ||
| LICENSES | ||
| po | ||
| runners | ||
| sddm-theme | ||
| solid-device-automounter | ||
| toolboxes | ||
| .contextProperties.ini | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .kde-ci.yml | ||
| CMakeLists.txt | ||
| CODEMAP.md | ||
| config-workspace.h.cmake | ||
| ConfigureChecks.cmake | ||
| COPYING.DOC | ||
| kde-mimeapps.list | ||
| logo.png | ||
| Mainpage.dox | ||
| org.kde.plasmashell.metainfo.xml | ||
| README.md | ||
Plasma Desktop
Plasma for the desktop form factor. This repository contains code for many of the widgets, KCMs, and other parts of the Plasma Desktop.
See the CODEMAP to get an idea of the layout of this repository.
See Also
This repository contains only components specific to the desktop form factor. Components which are more generic can be found elsewhere under the Plasma group or in individual repositories. For example:
- Plasma Workspace contains more generic code shared between Desktop, Mobile, and other form factors of Plasma. If you can't find what you're looking for in plasma-desktop, look here first.
- libplasma includes the building blocks for Plasma widgets.
- Plasma NetworkManager Applet has code for the network manager widget.
- Plasma PulseAudio Applet is where the code for the PulseAudio KCM and widget lives.
- Plasma Add-ons is the home of the rest of the widgets that aren't in plasma-desktop, plasma-workspace, or another specific repository. For example: Web Browser, Comics, and Sticky Notes.
Building
The easiest way to make changes and test Plasma Desktop during development is to build it with kde-builder.
Contributing
Like other projects in the KDE ecosystem, contributions are welcome from all. This repository is managed on KDE Invent, our GitLab instance.
- Want to contribute code? See the GitLab wiki page for a tutorial on how to send a merge request.
- Reporting a bug? Please submit it on the KDE Bugtracking System. Please do not use the Issues tab to report bugs.
- Is there a part of Plasma Desktop that's not translated? See the Getting Involved in Translation wiki page to see how you can help translate!
If you get stuck or need help with anything at all, head over to the KDE New Contributors room on Matrix. For questions specifically about Plasma Desktop, please ask in the KDE Development room. See Matrix for more details.