diff --git a/kwinbindings.cpp b/kwinbindings.cpp index af662ea89a..dcc6aad5c6 100644 --- a/kwinbindings.cpp +++ b/kwinbindings.cpp @@ -28,22 +28,13 @@ along with this program. If not, see . // new DEF3 allows to pass data to the action, replacing the %1 argument in the name #define DEF2( name, descr, key, fnSlot ) \ - a = actionCollection->addAction( QStringLiteral(name) ); \ - a->setText( i18n(descr) ); \ - KGlobalAccel::self()->setDefaultShortcut(a, QList() << key); \ - KGlobalAccel::self()->setShortcut(a, QList() << key); \ - connect(a, SIGNAL(triggered(bool)), SLOT(fnSlot)); + initShortcut(QStringLiteral(name), i18n(descr), key, &Workspace::fnSlot); #define DEF( name, key, fnSlot ) \ - DEF2(name, name, key, fnSlot) + initShortcut(QStringLiteral(name), i18n(name), key, &Workspace::fnSlot); #define DEF3( name, key, fnSlot, value ) \ - a = actionCollection->addAction( QStringLiteral(name).arg(value) ); \ - a->setText( i18n(name, value) ); \ - KGlobalAccel::self()->setDefaultShortcut(a, QList() << key); \ - KGlobalAccel::self()->setShortcut(a, QList() << key); \ - a->setData(value); \ - connect(a, SIGNAL(triggered(bool)), SLOT(fnSlot)); + initShortcut(QStringLiteral(name).arg(value), i18n(name, value), key, &Workspace::fnSlot, value); a = actionCollection->addAction(QStringLiteral("Program:kwin")); @@ -51,123 +42,123 @@ a->setText(i18n("System")); a = actionCollection->addAction(QStringLiteral("Group:Navigation")); a->setText(i18n("Navigation")); -DEF(I18N_NOOP("Walk Through Window Tabs"), 0, slotActivateNextTab()); -DEF(I18N_NOOP("Walk Through Window Tabs (Reverse)"), 0, slotActivatePrevTab()); -DEF(I18N_NOOP("Remove Window From Group"), 0, slotUntab()); +DEF(I18N_NOOP("Walk Through Window Tabs"), 0, slotActivateNextTab); +DEF(I18N_NOOP("Walk Through Window Tabs (Reverse)"), 0, slotActivatePrevTab); +DEF(I18N_NOOP("Remove Window From Group"), 0, slotUntab); a = actionCollection->addAction(QStringLiteral("Group:Windows")); a->setText(i18n("Windows")); DEF(I18N_NOOP("Window Operations Menu"), - Qt::ALT + Qt::Key_F3, slotWindowOperations()); + Qt::ALT + Qt::Key_F3, slotWindowOperations); DEF2("Window Close", I18N_NOOP("Close Window"), - Qt::ALT + Qt::Key_F4, slotWindowClose()); + Qt::ALT + Qt::Key_F4, slotWindowClose); DEF2("Window Maximize", I18N_NOOP("Maximize Window"), - 0, slotWindowMaximize()); + 0, slotWindowMaximize); DEF2("Window Maximize Vertical", I18N_NOOP("Maximize Window Vertically"), - 0, slotWindowMaximizeVertical()); + 0, slotWindowMaximizeVertical); DEF2("Window Maximize Horizontal", I18N_NOOP("Maximize Window Horizontally"), - 0, slotWindowMaximizeHorizontal()); + 0, slotWindowMaximizeHorizontal); DEF2("Window Minimize", I18N_NOOP("Minimize Window"), - 0, slotWindowMinimize()); + 0, slotWindowMinimize); DEF2("Window Shade", I18N_NOOP("Shade Window"), - 0, slotWindowShade()); + 0, slotWindowShade); DEF2("Window Move", I18N_NOOP("Move Window"), - 0, slotWindowMove()); + 0, slotWindowMove); DEF2("Window Resize", I18N_NOOP("Resize Window"), - 0, slotWindowResize()); + 0, slotWindowResize); DEF2("Window Raise", I18N_NOOP("Raise Window"), - 0, slotWindowRaise()); + 0, slotWindowRaise); DEF2("Window Lower", I18N_NOOP("Lower Window"), - 0, slotWindowLower()); + 0, slotWindowLower); DEF(I18N_NOOP("Toggle Window Raise/Lower"), - 0, slotWindowRaiseOrLower()); + 0, slotWindowRaiseOrLower); DEF2("Window Fullscreen", I18N_NOOP("Make Window Fullscreen"), - 0, slotWindowFullScreen()); + 0, slotWindowFullScreen); DEF2("Window No Border", I18N_NOOP("Hide Window Border"), - 0, slotWindowNoBorder()); + 0, slotWindowNoBorder); DEF2("Window Above Other Windows", I18N_NOOP("Keep Window Above Others"), - 0, slotWindowAbove()); + 0, slotWindowAbove); DEF2("Window Below Other Windows", I18N_NOOP("Keep Window Below Others"), - 0, slotWindowBelow()); + 0, slotWindowBelow); DEF(I18N_NOOP("Activate Window Demanding Attention"), - Qt::CTRL + Qt::ALT + Qt::Key_A, slotActivateAttentionWindow()); + Qt::CTRL + Qt::ALT + Qt::Key_A, slotActivateAttentionWindow); DEF(I18N_NOOP("Setup Window Shortcut"), - 0, slotSetupWindowShortcut()); + 0, slotSetupWindowShortcut); DEF2("Window Pack Right", I18N_NOOP("Pack Window to the Right"), - 0, slotWindowPackRight()); + 0, slotWindowPackRight); DEF2("Window Pack Left", I18N_NOOP("Pack Window to the Left"), - 0, slotWindowPackLeft()); + 0, slotWindowPackLeft); DEF2("Window Pack Up", I18N_NOOP("Pack Window Up"), - 0, slotWindowPackUp()); + 0, slotWindowPackUp); DEF2("Window Pack Down", I18N_NOOP("Pack Window Down"), - 0, slotWindowPackDown()); + 0, slotWindowPackDown); DEF2("Window Grow Horizontal", I18N_NOOP("Pack Grow Window Horizontally"), - 0, slotWindowGrowHorizontal()); + 0, slotWindowGrowHorizontal); DEF2("Window Grow Vertical", I18N_NOOP("Pack Grow Window Vertically"), - 0, slotWindowGrowVertical()); + 0, slotWindowGrowVertical); DEF2("Window Shrink Horizontal", I18N_NOOP("Pack Shrink Window Horizontally"), - 0, slotWindowShrinkHorizontal()); + 0, slotWindowShrinkHorizontal); DEF2("Window Shrink Vertical", I18N_NOOP("Pack Shrink Window Vertically"), - 0, slotWindowShrinkVertical()); + 0, slotWindowShrinkVertical); DEF2("Window Quick Tile Left", I18N_NOOP("Quick Tile Window to the Left"), - 0, slotWindowQuickTileLeft()); + 0, slotWindowQuickTileLeft); DEF2("Window Quick Tile Right", I18N_NOOP("Quick Tile Window to the Right"), - 0, slotWindowQuickTileRight()); + 0, slotWindowQuickTileRight); DEF2("Window Quick Tile Top Left", I18N_NOOP("Quick Tile Window to the Top Left"), - 0, slotWindowQuickTileTopLeft()); + 0, slotWindowQuickTileTopLeft); DEF2("Window Quick Tile Bottom Left", I18N_NOOP("Quick Tile Window to the Bottom Left"), - 0, slotWindowQuickTileBottomLeft()); + 0, slotWindowQuickTileBottomLeft); DEF2("Window Quick Tile Top Right", I18N_NOOP("Quick Tile Window to the Top Right"), - 0, slotWindowQuickTileTopRight()); + 0, slotWindowQuickTileTopRight); DEF2("Window Quick Tile Bottom Right", I18N_NOOP("Quick Tile Window to the Bottom Right"), - 0, slotWindowQuickTileBottomRight()); + 0, slotWindowQuickTileBottomRight); DEF2("Switch Window Up", I18N_NOOP("Switch to Window Above"), - Qt::META + Qt::ALT + Qt::Key_Up, slotSwitchWindowUp()); + Qt::META + Qt::ALT + Qt::Key_Up, slotSwitchWindowUp); DEF2("Switch Window Down", I18N_NOOP("Switch to Window Below"), - Qt::META + Qt::ALT + Qt::Key_Down, slotSwitchWindowDown()); + Qt::META + Qt::ALT + Qt::Key_Down, slotSwitchWindowDown); DEF2("Switch Window Right", I18N_NOOP("Switch to Window to the Right"), - Qt::META + Qt::ALT + Qt::Key_Right, slotSwitchWindowRight()); + Qt::META + Qt::ALT + Qt::Key_Right, slotSwitchWindowRight); DEF2("Switch Window Left", I18N_NOOP("Switch to Window to the Left"), - Qt::META + Qt::ALT + Qt::Key_Left, slotSwitchWindowLeft()); + Qt::META + Qt::ALT + Qt::Key_Left, slotSwitchWindowLeft); DEF2("Increase Opacity", I18N_NOOP("Increase Opacity of Active Window by 5 %"), - 0, slotIncreaseWindowOpacity()); + 0, slotIncreaseWindowOpacity); DEF2("Decrease Opacity", I18N_NOOP("Decrease Opacity of Active Window by 5 %"), - 0, slotLowerWindowOpacity()); + 0, slotLowerWindowOpacity); a = actionCollection->addAction(QStringLiteral("Group:Window Desktop")); a->setText(i18n("Window & Desktop")); DEF2("Window On All Desktops", I18N_NOOP("Keep Window on All Desktops"), - 0, slotWindowOnAllDesktops()); + 0, slotWindowOnAllDesktops); for (int i = 1; i < 21; ++i) { - DEF3(I18N_NOOP("Window to Desktop %1"), 0, slotWindowToDesktop(), i); + DEF3(I18N_NOOP("Window to Desktop %1"), 0, slotWindowToDesktop, i); } -DEF(I18N_NOOP("Window to Next Desktop"), 0, slotWindowToNextDesktop()); -DEF(I18N_NOOP("Window to Previous Desktop"), 0, slotWindowToPreviousDesktop()); -DEF(I18N_NOOP("Window One Desktop to the Right"), 0, slotWindowToDesktopRight()); -DEF(I18N_NOOP("Window One Desktop to the Left"), 0, slotWindowToDesktopLeft()); -DEF(I18N_NOOP("Window One Desktop Up"), 0, slotWindowToDesktopUp()); -DEF(I18N_NOOP("Window One Desktop Down"), 0, slotWindowToDesktopDown()); +DEF(I18N_NOOP("Window to Next Desktop"), 0, slotWindowToNextDesktop); +DEF(I18N_NOOP("Window to Previous Desktop"), 0, slotWindowToPreviousDesktop); +DEF(I18N_NOOP("Window One Desktop to the Right"), 0, slotWindowToDesktopRight); +DEF(I18N_NOOP("Window One Desktop to the Left"), 0, slotWindowToDesktopLeft); +DEF(I18N_NOOP("Window One Desktop Up"), 0, slotWindowToDesktopUp); +DEF(I18N_NOOP("Window One Desktop Down"), 0, slotWindowToDesktopDown); for (int i = 0; i < 8; ++i) { - DEF3(I18N_NOOP("Window to Screen %1"), 0, slotWindowToScreen(), i); + DEF3(I18N_NOOP("Window to Screen %1"), 0, slotWindowToScreen, i); } -DEF(I18N_NOOP("Window to Next Screen"), 0, slotWindowToNextScreen()); -DEF(I18N_NOOP("Window to Previous Screen"), 0, slotWindowToPrevScreen()); -DEF(I18N_NOOP("Show Desktop"), 0, slotToggleShowDesktop()); +DEF(I18N_NOOP("Window to Next Screen"), 0, slotWindowToNextScreen); +DEF(I18N_NOOP("Window to Previous Screen"), 0, slotWindowToPrevScreen); +DEF(I18N_NOOP("Show Desktop"), 0, slotToggleShowDesktop); for (int i = 0; i < 8; ++i) { - DEF3(I18N_NOOP("Switch to Screen %1"), 0, slotSwitchToScreen(), i); + DEF3(I18N_NOOP("Switch to Screen %1"), 0, slotSwitchToScreen, i); } -DEF(I18N_NOOP("Switch to Next Screen"), 0, slotSwitchToNextScreen()); -DEF(I18N_NOOP("Switch to Previous Screen"), 0, slotSwitchToPrevScreen()); +DEF(I18N_NOOP("Switch to Next Screen"), 0, slotSwitchToNextScreen); +DEF(I18N_NOOP("Switch to Previous Screen"), 0, slotSwitchToPrevScreen); a = actionCollection->addAction(QStringLiteral("Group:Miscellaneous")); a->setText(i18n("Miscellaneous")); -DEF(I18N_NOOP("Kill Window"), Qt::CTRL + Qt::ALT + Qt::Key_Escape, slotKillWindow()); -DEF(I18N_NOOP("Suspend Compositing"), Qt::SHIFT + Qt::ALT + Qt::Key_F12, slotToggleCompositing()); -DEF(I18N_NOOP("Invert Screen Colors"), 0, slotInvertScreen()); +DEF(I18N_NOOP("Kill Window"), Qt::CTRL + Qt::ALT + Qt::Key_Escape, slotKillWindow); +DEF(I18N_NOOP("Suspend Compositing"), Qt::SHIFT + Qt::ALT + Qt::Key_F12, slotToggleCompositing); +DEF(I18N_NOOP("Invert Screen Colors"), 0, slotInvertScreen); #undef DEF #undef DEF2 diff --git a/useractions.cpp b/useractions.cpp index 5b3417f310..d83cf94700 100755 --- a/useractions.cpp +++ b/useractions.cpp @@ -927,6 +927,20 @@ void Workspace::closeActivePopup() m_userActionsMenu->close(); } + +template +void Workspace::initShortcut(const QString &actionName, const QString &description, const QKeySequence &shortcut, Slot slot, const QVariant &data) +{ + QAction *a = keys->addAction(actionName); + a->setText(description); + if (data.isValid()) { + a->setData(data); + } + KGlobalAccel::self()->setDefaultShortcut(a, QList() << shortcut); + KGlobalAccel::self()->setShortcut(a, QList() << shortcut); + connect(a, &QAction::triggered, this, slot); +} + /*! Create the global accel object \c keys. */ diff --git a/workspace.h b/workspace.h index 2d693fb8bc..7fc6d66ead 100644 --- a/workspace.h +++ b/workspace.h @@ -419,6 +419,9 @@ Q_SIGNALS: private: void init(); void initShortcuts(); + template + void initShortcut(const QString &actionName, const QString &description, const QKeySequence &shortcut, + Slot slot, const QVariant &data = QVariant()); void setupWindowShortcut(Client* c); enum Direction { DirectionNorth,