diff --git a/kwinbindings.cpp b/kwinbindings.cpp --- a/kwinbindings.cpp +++ b/kwinbindings.cpp @@ -52,6 +52,8 @@ DEF(I18N_NOOP("Window Operations Menu"), Qt::ALT + Qt::Key_F3, slotWindowOperations); +DEF(I18N_NOOP("Application Menu"), + Qt::ALT + Qt::SHIFT + Qt::Key_F3, slotWindowApplicationMenu); DEF2("Window Close", I18N_NOOP("Close Window"), Qt::ALT + Qt::Key_F4, slotWindowClose); DEF2("Window Maximize", I18N_NOOP("Maximize Window"), diff --git a/scripting/workspace_wrapper.h b/scripting/workspace_wrapper.h --- a/scripting/workspace_wrapper.h +++ b/scripting/workspace_wrapper.h @@ -314,6 +314,7 @@ void slotLowerWindowOpacity(); void slotWindowOperations(); + void slotWindowApplicationMenu(); void slotWindowClose(); void slotWindowMove(); void slotWindowResize(); diff --git a/scripting/workspace_wrapper.cpp b/scripting/workspace_wrapper.cpp --- a/scripting/workspace_wrapper.cpp +++ b/scripting/workspace_wrapper.cpp @@ -154,6 +154,7 @@ SLOTWRAPPER(slotLowerWindowOpacity) SLOTWRAPPER(slotWindowOperations) +SLOTWRAPPER(slotWindowApplicationMenu) SLOTWRAPPER(slotWindowClose) SLOTWRAPPER(slotWindowMove) SLOTWRAPPER(slotWindowResize) diff --git a/useractions.cpp b/useractions.cpp --- a/useractions.cpp +++ b/useractions.cpp @@ -1687,6 +1687,14 @@ m_userActionsMenu->show(pos, cl); } +void Workspace::slotWindowApplicationMenu() +{ + if (!active_client) { + return; + } + showApplicationMenu(QRect(active_client->clientPos(), QSize()), active_client, 0 /*actionId*/); +} + void Workspace::showApplicationMenu(const QRect &pos, AbstractClient *c, int actionId) { ApplicationMenu::self()->showApplicationMenu(c->geometry().topLeft() + pos.bottomLeft(), c, actionId); diff --git a/workspace.h b/workspace.h --- a/workspace.h +++ b/workspace.h @@ -419,6 +419,7 @@ void slotLowerWindowOpacity(); void slotWindowOperations(); + void slotWindowApplicationMenu(); void slotWindowClose(); void slotWindowMove(); void slotWindowResize();