From c14f798adf0945d09a72e6706656868f82c65dde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 10 Dec 2013 09:11:16 +0100 Subject: [PATCH] [kwin] Do not use KActionCollection in VirtualDesktops The functionality from KActionCollection is not used at all. It's just for setting the object name. By not using the ActionCollection to create the QAction and connecting the slot, it's also possible to use the new compile time checked connect syntax. --- useractions.cpp | 2 +- virtualdesktops.cpp | 46 +++++++++++++++++++++++---------------------- virtualdesktops.h | 11 ++++------- 3 files changed, 29 insertions(+), 30 deletions(-) diff --git a/useractions.cpp b/useractions.cpp index 83e801928f..9123886a5c 100755 --- a/useractions.cpp +++ b/useractions.cpp @@ -964,7 +964,7 @@ void Workspace::initShortcuts() #ifdef KWIN_BUILD_TABBOX TabBox::TabBox::self()->initShortcuts(actionCollection); #endif - VirtualDesktopManager::self()->initShortcuts(actionCollection); + VirtualDesktopManager::self()->initShortcuts(); m_userActionsMenu->discard(); // so that it's recreated next time } diff --git a/virtualdesktops.cpp b/virtualdesktops.cpp index 4ea96ef7a8..c71f4f7057 100644 --- a/virtualdesktops.cpp +++ b/virtualdesktops.cpp @@ -20,12 +20,12 @@ along with this program. If not, see . *********************************************************************/ #include "virtualdesktops.h" // KDE -#include -#include #include #include #include #include +// Qt +#include namespace KWin { @@ -419,46 +419,48 @@ void VirtualDesktopManager::setNETDesktopLayout(Qt::Orientation orientation, uin emit layoutChanged(width, height); } -void VirtualDesktopManager::initShortcuts(KActionCollection *keys) +void VirtualDesktopManager::initShortcuts() { - QAction *a = keys->addAction(QStringLiteral("Group:Desktop Switching")); - a->setText(i18n("Desktop Switching")); - initSwitchToShortcuts(keys); + initSwitchToShortcuts(); - addAction(keys, QStringLiteral("Switch to Next Desktop"), i18n("Switch to Next Desktop"), SLOT(slotNext())); - addAction(keys, QStringLiteral("Switch to Previous Desktop"), i18n("Switch to Previous Desktop"), SLOT(slotPrevious())); - addAction(keys, QStringLiteral("Switch One Desktop to the Right"), i18n("Switch One Desktop to the Right"), SLOT(slotRight())); - addAction(keys, QStringLiteral("Switch One Desktop to the Left"), i18n("Switch One Desktop to the Left"), SLOT(slotLeft())); - addAction(keys, QStringLiteral("Switch One Desktop Up"), i18n("Switch One Desktop Up"), SLOT(slotUp())); - addAction(keys, QStringLiteral("Switch One Desktop Down"), i18n("Switch One Desktop Down"), SLOT(slotDown())); + addAction(QStringLiteral("Switch to Next Desktop"), i18n("Switch to Next Desktop"), &VirtualDesktopManager::slotNext); + addAction(QStringLiteral("Switch to Previous Desktop"), i18n("Switch to Previous Desktop"), &VirtualDesktopManager::slotPrevious); + addAction(QStringLiteral("Switch One Desktop to the Right"), i18n("Switch One Desktop to the Right"), &VirtualDesktopManager::slotRight); + addAction(QStringLiteral("Switch One Desktop to the Left"), i18n("Switch One Desktop to the Left"), &VirtualDesktopManager::slotLeft); + addAction(QStringLiteral("Switch One Desktop Up"), i18n("Switch One Desktop Up"), &VirtualDesktopManager::slotUp); + addAction(QStringLiteral("Switch One Desktop Down"), i18n("Switch One Desktop Down"), &VirtualDesktopManager::slotDown); } -void VirtualDesktopManager::initSwitchToShortcuts(KActionCollection *keys) +void VirtualDesktopManager::initSwitchToShortcuts() { const QString toDesktop = QStringLiteral("Switch to Desktop %1"); const KLocalizedString toDesktopLabel = ki18n("Switch to Desktop %1"); - addAction(keys, toDesktop, toDesktopLabel, 1, QKeySequence(Qt::CTRL + Qt::Key_F1), SLOT(slotSwitchTo())); - addAction(keys, toDesktop, toDesktopLabel, 2, QKeySequence(Qt::CTRL + Qt::Key_F2), SLOT(slotSwitchTo())); - addAction(keys, toDesktop, toDesktopLabel, 3, QKeySequence(Qt::CTRL + Qt::Key_F3), SLOT(slotSwitchTo())); - addAction(keys, toDesktop, toDesktopLabel, 4, QKeySequence(Qt::CTRL + Qt::Key_F4), SLOT(slotSwitchTo())); + addAction(toDesktop, toDesktopLabel, 1, QKeySequence(Qt::CTRL + Qt::Key_F1), &VirtualDesktopManager::slotSwitchTo); + addAction(toDesktop, toDesktopLabel, 2, QKeySequence(Qt::CTRL + Qt::Key_F2), &VirtualDesktopManager::slotSwitchTo); + addAction(toDesktop, toDesktopLabel, 3, QKeySequence(Qt::CTRL + Qt::Key_F3), &VirtualDesktopManager::slotSwitchTo); + addAction(toDesktop, toDesktopLabel, 4, QKeySequence(Qt::CTRL + Qt::Key_F4), &VirtualDesktopManager::slotSwitchTo); for (uint i = 5; i <= maximum(); ++i) { - addAction(keys, toDesktop, toDesktopLabel, i, QKeySequence(), SLOT(slotSwitchTo())); + addAction(toDesktop, toDesktopLabel, i, QKeySequence(), &VirtualDesktopManager::slotSwitchTo); } } -void VirtualDesktopManager::addAction(KActionCollection *keys, const QString &name, const KLocalizedString &label, uint value, const QKeySequence &key, const char *slot) +void VirtualDesktopManager::addAction(const QString &name, const KLocalizedString &label, uint value, const QKeySequence &key, void (VirtualDesktopManager::*slot)()) { - QAction *a = keys->addAction(name.arg(value), this, slot); + QAction *a = new QAction(this); + a->setObjectName(name.arg(value)); a->setText(label.subs(value).toString()); a->setData(value); + connect(a, &QAction::triggered, this, slot); KGlobalAccel::self()->setShortcut(a, QList() << key); } -void VirtualDesktopManager::addAction(KActionCollection *keys, const QString &name, const QString &label, const char *slot) +void VirtualDesktopManager::addAction(const QString &name, const QString &label, void (VirtualDesktopManager::*slot)()) { - QAction *a = keys->addAction(name, this, slot); + QAction *a = new QAction(this); + a->setObjectName(name); a->setText(label); + connect(a, &QAction::triggered, this, slot); KGlobalAccel::self()->setShortcut(a, QList()); } diff --git a/virtualdesktops.h b/virtualdesktops.h index f81df3e33c..145b638fe4 100644 --- a/virtualdesktops.h +++ b/virtualdesktops.h @@ -28,7 +28,6 @@ along with this program. If not, see . // KDE includes #include -class KActionCollection; class KLocalizedString; class NETRootInfo; @@ -177,7 +176,7 @@ public: **/ uint previous(uint id = 0, bool wrap = true) const; - void initShortcuts(KActionCollection *keys); + void initShortcuts(); /** * @returns The maximum number of desktops that KWin supports. @@ -328,29 +327,27 @@ private: /** * Creates all the global keyboard shortcuts for "Switch To Desktop n" actions. **/ - void initSwitchToShortcuts(KActionCollection *keys); + void initSwitchToShortcuts(); /** * Creates an action and connects it to the @p slot in this Manager. This method is * meant to be used for the case that an additional information needs to be stored in * the action and the label. - * @param keys The ActionCollection used to create the Action * @param name The name of the action to be created * @param label The localized name for the action to be created * @param value An additional value added to the label and to the created action * @param key The global shortcut for the action * @param slot The slot to invoke when the action is triggered **/ - void addAction(KActionCollection *keys, const QString &name, const KLocalizedString &label, uint value, const QKeySequence &key, const char *slot); + void addAction(const QString &name, const KLocalizedString &label, uint value, const QKeySequence &key, void (VirtualDesktopManager::*slot)()); /** * Creates an action and connects it to the @p slot in this Manager. * Overloaded method for the case that no additional value needs to be passed to the action and * no global shortcut is defined by default. - * @param keys The ActionCollection used to create the Action * @param name The name of the action to be created * @param label The localized name for the action to be created * @param slot The slot to invoke when the action is triggered **/ - void addAction(KActionCollection *keys, const QString &name, const QString &label, const char *slot); + void addAction(const QString &name, const QString &label, void (VirtualDesktopManager::*slot)()); uint m_current; uint m_count;