https://bugs.kde.org/show_bug.cgi?id=447558

Fushan Wen <qydwhotm...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/plasma-desktop/commit/7f
                   |                            |09fb161188a4615af00dce23a83
                   |                            |56935f42f00

--- Comment #5 from Fushan Wen <qydwhotm...@gmail.com> ---
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

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to