Make activity popup menu consistent with VD menu

Instead of using a custom widget use normal widget

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This commit is contained in:
Carl Schwan 2021-12-04 17:07:01 +01:00
parent 621c06deda
commit c0447c3681

View file

@ -53,7 +53,7 @@
#include <kconfig.h> #include <kconfig.h>
#include <QMenu> #include <QMenu>
#include <QRegularExpression> #include <QRegularExpression>
#include <QWidgetAction> #include <QAction>
#include <kauthorized.h> #include <kauthorized.h>
#include "killwindow.h" #include "killwindow.h"
@ -719,21 +719,17 @@ void UserActionsMenu::activityPopupAboutToShow()
KActivities::Info activity(id); KActivities::Info activity(id);
QString name = activity.name(); QString name = activity.name();
name.replace('&', "&&"); name.replace('&', "&&");
QWidgetAction *action = new QWidgetAction(m_activityMenu); auto action = m_activityMenu->addAction(name);
QCheckBox *box = new QCheckBox(name, m_activityMenu); action->setCheckable(true);
action->setDefaultWidget(box);
const QString icon = activity.icon(); const QString icon = activity.icon();
if (!icon.isEmpty()) if (!icon.isEmpty()) {
box->setIcon(QIcon::fromTheme(icon)); action->setIcon(QIcon::fromTheme(icon));
box->setBackgroundRole(m_activityMenu->backgroundRole()); }
box->setForegroundRole(m_activityMenu->foregroundRole());
box->setPalette(m_activityMenu->palette());
connect(box, &QCheckBox::clicked, action, &QAction::triggered);
m_activityMenu->addAction(action); m_activityMenu->addAction(action);
action->setData(id); action->setData(id);
if (m_client && !m_client->isOnAllActivities() && m_client->isOnActivity(id)) { if (m_client && !m_client->isOnAllActivities() && m_client->isOnActivity(id)) {
box->setChecked(true); action->setChecked(true);
} }
} }
#endif #endif
@ -793,14 +789,11 @@ void UserActionsMenu::slotToggleOnActivity(QAction *action)
// susequent toggling ("off") would move the client to only that activity. // susequent toggling ("off") would move the client to only that activity.
// bug #330838 -> set all but "on all" off to "force proper usage" // bug #330838 -> set all but "on all" off to "force proper usage"
for (int i = 1; i < m_activityMenu->actions().count(); ++i) { for (int i = 1; i < m_activityMenu->actions().count(); ++i) {
if (QWidgetAction *qwa = qobject_cast<QWidgetAction*>(m_activityMenu->actions().at(i))) { m_activityMenu->actions().at(i)->setChecked(true);
if (QCheckBox *qcb = qobject_cast<QCheckBox*>(qwa->defaultWidget())) {
qcb->setChecked(false);
}
}
} }
} }
} }
#else #else
Q_UNUSED(action) Q_UNUSED(action)
#endif #endif