diff --git a/shell/shellcorona.cpp b/shell/shellcorona.cpp index 1797cc6dc..33c9443b9 100644 --- a/shell/shellcorona.cpp +++ b/shell/shellcorona.cpp @@ -165,6 +165,8 @@ void ShellCorona::init() connect(this, &ShellCorona::containmentAdded, this, &ShellCorona::handleContainmentAdded); + + QAction *dashboardAction = actions()->addAction(QStringLiteral("show dashboard")); QObject::connect(dashboardAction, &QAction::triggered, this, &ShellCorona::setDashboardShown); dashboardAction->setText(i18n("Show Desktop")); @@ -179,6 +181,21 @@ void ShellCorona::init() dashboardAction->setData(Plasma::Types::ControlAction); KGlobalAccel::self()->setGlobalShortcut(dashboardAction, Qt::CTRL | Qt::Key_F12); + QAction *panelAction = actions()->addAction(QStringLiteral("show panel")); + QObject::connect(panelAction, &QAction::triggered, + this, &ShellCorona::togglePanelVisibility); + panelAction->setText(i18n("Toggle Panel")); + // connect(KWindowSystem::self(), &KWindowSystem::showingDesktopChanged, [panelAction](bool showing) { + // panelAction->setText(showing ? i18n("Hide Desktop") : i18n("Show Desktop")); + // panelAction->setChecked(showing); + // }); + + // panelAction->setAutoRepeat(true); + // panelAction->setCheckable(true); + // panelAction->setIcon(QIcon::fromTheme(QStringLiteral("panel-show"))); + // panelAction->setData(Plasma::Types::ControlAction); + KGlobalAccel::self()->setGlobalShortcut(panelAction, Qt::CTRL + Qt::Key_F11); + checkAddPanelAction(); connect(KSycoca::self(), &KSycoca::databaseChanged, this, &ShellCorona::checkAddPanelAction); @@ -1220,7 +1237,17 @@ QList ShellCorona::panelsForScreen(QScreen *screen) const return ret; } -DesktopView *ShellCorona::desktopForScreen(QScreen *screen) const +void ShellCorona::togglePanelVisibility() +{ + for (auto it = m_panelViews.constBegin(), end = m_panelViews.constEnd(); it != end; ++it) { + if (it.value()->screen() != qGuiApp->primaryScreen()) { + continue; + } + it.value()->setVisible(!it.value()->isVisible()); + } +} + +DesktopView *ShellCorona::desktopForScreen(QScreen* screen) const { DesktopView *view = m_desktopViewForScreen.value(screen); //An output may have been renamed, fall back to a linear check @@ -2431,5 +2458,4 @@ void ShellCorona::refreshCurrentShell() // Desktop corona handler -#include "moc_shellcorona.cpp" #include "shellcorona.moc" diff --git a/shell/shellcorona.h b/shell/shellcorona.h index be99c99f3..7b87ad9e4 100644 --- a/shell/shellcorona.h +++ b/shell/shellcorona.h @@ -224,6 +224,7 @@ protected Q_SLOTS: void showAlternativesForApplet(Plasma::Applet *applet); + void togglePanelVisibility(); private Q_SLOTS: void createWaitingPanels(); void handleContainmentAdded(Plasma::Containment *c);