Bug 447558 - "Files linked to the current activity" makes desktops of other activities show nothing before restarting plasmashell
Summary: "Files linked to the current activity" makes desktops of other activities sho...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Folder (show other bugs)
Version: master
Platform: openSUSE Linux
: NOR normal
Target Milestone: 1.0
Assignee: Marco Martin
URL:
Keywords:
: 447159 450056 452816 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-12-27 02:00 UTC by Fushan Wen
Modified: 2022-06-27 03:06 UTC (History)
8 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.25


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Fushan Wen 2021-12-27 02:00:56 UTC
SUMMARY
If I set "Files linked to the current activity" to one activity and switch to any other activity, though the desktop is set to show Desktop folder,  there is nothing on the desktop until I restart plasmashell.

STEPS TO REPRODUCE
1. Prepare two activities.
2. Set the desktop in one activity (A) to show "Files linked to the current activity", the other (B) "Desktop folder".
3. Switch between the two activities.

OBSERVED RESULT
Desktop folder is not shown on the desktop of B.

EXPECTED RESULT
Desktop folder shows normally on the desktop of B.

SOFTWARE/OS VERSIONS
Information for package plasma5-desktop:
----------------------------------------
Repository     : unstable-kde-frameworks
Name           : plasma5-desktop
Version        : 5.23.80git.20211225T014202~2cef3c07b-ku.109.1
Arch           : x86_64
Vendor         : obs://build.opensuse.org/KDE:Unstable
Installed Size : 8.5 MiB
Installed      : Yes
Status         : up-to-date
Source package : plasma5-desktop-5.23.80git.20211225T014202~2cef3c07b-ku.109.1.src
Summary        : The KDE Plasma Workspace Components
Comment 1 Paul Worrall 2021-12-27 10:10:54 UTC
Reproduced on 5.23.  

I needed to add step 2½:  Select activity A and use Dolphin to link a file to the current activity (the file appears on the desktop of activity A as expected).  

Operating System: KDE neon 5.23
KDE Plasma Version: 5.23.4
KDE Frameworks Version: 5.89.0
Qt Version: 5.15.3
Kernel Version: 5.11.0-43-generic (64-bit)
Graphics Platform: X11
Processors: 2 × AMD A6-6400K APU with Radeon(tm) HD Graphics
Memory: 7.7 GiB of RAM
Graphics Processor: AMD CEDAR
Comment 2 Fushan Wen 2022-01-01 06:37:37 UTC
The problem is in `m_screenMapper->removeScreen(m_screen, oldUrl);`. It does not consider different activities.
Comment 3 Bug Janitor Service 2022-01-01 10:46:52 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/775
Comment 4 Fushan Wen 2022-01-13 08:00:11 UTC
*** Bug 447159 has been marked as a duplicate of this bug. ***
Comment 5 Fushan Wen 2022-01-18 10:13:20 UTC
Git commit 7f09fb161188a4615af00dce23a8356935f42f00 by Fushan Wen.
Committed on 18/01/2022 at 10:12.
Pushed by fusionfuture into branch 'master'.

screenmapper: Remember activity ID in screen mapping

This commit adds an extra string to screenmapper to remember the
activity ID corresponding to the screen ID. Now screenmapper can
correctly handle different activites, and desktops of different
activities can correctly show their items.

The problem

When the user sets "Files linked to the current activity" on one
activity (A) and switches to any other activity (B), though the desktop
on activity B is set to "Show Desktop folder",  there is nothing on
the desktop until the user restarts plasmashell.

The cause

In screenmapper.cpp, `removeScreen()` only checkes for the screen ID,
but two activities can share the same screen ID. Then if both the two
activities are set to "Show desktop folder", then in `setUrl()`

1. After the user changes the desktop folder option on one of the two activities,
   `removeScreen()` will remove all item records related to the screen
   ID and **the old URL (desktop:/)**.
2. But `addScreen()` will only add back item records for the current activity
   because `addScreen()` will directly return if `m_availableScreens`
   already contains the screen ID (which is added from the current activity).
3. Thus items on the desktop of the other activity incorrectly disappears.

The fix

1. When calling `addScreen()` or `removeScreen()` from FolderModel, also
   consider the activity corresponding to the FolderModel, which is the
   current activity when the FolderModel is initialized.
2. Provide a migrator for the old configuration entries because an extra
   record is added.

M  +1    -0    containments/desktop/plugins/folder/CMakeLists.txt
M  +9    -8    containments/desktop/plugins/folder/autotests/foldermodeltest.cpp
M  +1    -0    containments/desktop/plugins/folder/autotests/foldermodeltest.h
M  +3    -2    containments/desktop/plugins/folder/autotests/positionertest.cpp
M  +1    -0    containments/desktop/plugins/folder/autotests/positionertest.h
M  +48   -47   containments/desktop/plugins/folder/autotests/screenmappertest.cpp
M  +1    -0    containments/desktop/plugins/folder/autotests/screenmappertest.h
M  +16   -14   containments/desktop/plugins/folder/foldermodel.cpp
M  +5    -0    containments/desktop/plugins/folder/foldermodel.h
M  +118  -60   containments/desktop/plugins/folder/screenmapper.cpp
M  +32   -12   containments/desktop/plugins/folder/screenmapper.h

https://invent.kde.org/plasma/plasma-desktop/commit/7f09fb161188a4615af00dce23a8356935f42f00
Comment 6 Oleg Solovyov 2022-02-14 15:03:25 UTC
Reproducible in 5.24: please backport
Comment 7 Fushan Wen 2022-02-16 04:55:08 UTC
*** Bug 450056 has been marked as a duplicate of this bug. ***
Comment 8 Nate Graham 2022-04-21 14:37:26 UTC
*** Bug 452816 has been marked as a duplicate of this bug. ***
Comment 9 Robby Engelmann 2022-05-02 19:20:38 UTC
(In reply to Fushan Wen from comment #5)
> Git commit 7f09fb161188a4615af00dce23a8356935f42f00 by Fushan Wen.
> Committed on 18/01/2022 at 10:12.
> Pushed by fusionfuture into branch 'master'.
....
> 
> https://invent.kde.org/plasma/plasma-desktop/commit/
> 7f09fb161188a4615af00dce23a8356935f42f00

Is this MR integrated in the master branch? If yes, the issue is still occuring here using the master branch builds in openSUSE Tumbleweed
Comment 10 Fushan Wen 2022-06-27 03:06:21 UTC
(In reply to Robby Engelmann from comment #9)
> (In reply to Fushan Wen from comment #5)
> > Git commit 7f09fb161188a4615af00dce23a8356935f42f00 by Fushan Wen.
> > Committed on 18/01/2022 at 10:12.
> > Pushed by fusionfuture into branch 'master'.
> ....
> > 
> > https://invent.kde.org/plasma/plasma-desktop/commit/
> > 7f09fb161188a4615af00dce23a8356935f42f00
> 
> Is this MR integrated in the master branch? If yes, the issue is still
> occuring here using the master branch builds in openSUSE Tumbleweed

This is not caused by the commit. The commit actually fixed the bug. Please see 453110