x11client: Replace activityList with m_activityList

KWin does not update activity status when setting `_KDE_NET_WM_ACTIVITIES`
to nullUuid outside of KWin, which causes "All Activities" not working
as expected for KWindowSystem.

`X11Client::activityList` is not kept in sync with
`AbstractClient::m_activityList`. Move `m_activityList` from private to
protected, and use it in `X11Client::readActivities`

BUG: 440496
This commit is contained in:
Fushan Wen 2021-12-16 12:13:06 +08:00
parent 34a0813567
commit 1d0e75bc5c
3 changed files with 7 additions and 7 deletions

View file

@ -1238,6 +1238,8 @@ protected:
void cleanTabBox();
QStringList m_activityList;
private Q_SLOTS:
void shadeHover();
void shadeUnhover();
@ -1265,7 +1267,6 @@ private:
ShadeMode m_shadeMode = ShadeNone;
QVector <VirtualDesktop *> m_desktops;
QStringList m_activityList;
int m_activityUpdatesBlocked = 0;
bool m_blockedActivityUpdatesRequireTransients = false;

View file

@ -2409,16 +2409,16 @@ void X11Client::readActivities(Xcb::StringProperty &property)
if (prop == Activities::nullUuid()) {
//copied from setOnAllActivities to avoid a redundant XChangeProperty.
if (!activityList.isEmpty()) {
activityList.clear();
if (!m_activityList.isEmpty()) {
m_activityList.clear();
updateActivities(true);
}
return;
}
if (prop.isEmpty()) {
//note: this makes it *act* like it's on all activities but doesn't set the property to 'ALL'
if (!activityList.isEmpty()) {
activityList.clear();
if (!m_activityList.isEmpty()) {
m_activityList.clear();
updateActivities(true);
}
return;
@ -2426,7 +2426,7 @@ void X11Client::readActivities(Xcb::StringProperty &property)
newActivitiesList = prop.split(u',');
if (newActivitiesList == activityList)
if (newActivitiesList == m_activityList)
return; //expected change, it's ok.
//otherwise, somebody else changed it. we need to validate before reacting.

View file

@ -448,7 +448,6 @@ private:
Xcb::Window m_client;
Xcb::Window m_wrapper;
Xcb::Window m_frame;
QStringList activityList;
int m_activityUpdatesBlocked;
bool m_blockedActivityUpdatesRequireTransients;
Xcb::Window m_moveResizeGrabWindow;