X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;fp=src%2Fqtui%2Fmainwin.cpp;h=3505ba4a9c8b027320d3705bb71fccee61e481e7;hb=ac4ff7a1ffdc58f3e6efd37ba6e61ecaa6d51644;hp=a7306b83630dbd5884b95a3e5b07f464e422367f;hpb=e5729ea1e89934d0fde5883d6f41b2126b7b39d6;p=quassel.git diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index a7306b83..3505ba4a 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -380,13 +380,13 @@ void MainWin::setupActions() 0, 0))->setCheckable(true); #ifdef HAVE_KDE - QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(toggleFullscreen()), this, coll); + QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll); #else QAction *fullScreenAct = new Action(SmallIcon("view-fullscreen"), tr("&Full Screen Mode"), coll, - this, SLOT(toggleFullscreen()), QKeySequence(Qt::Key_F11)); + this, SLOT(onFullScreenToggled()), QKeySequence(Qt::Key_F11)); fullScreenAct->setCheckable(true); #endif - coll->addAction("ToggleFullscreen", fullScreenAct); + coll->addAction("ToggleFullScreen", fullScreenAct); // Settings QAction *configureShortcutsAct = new Action(SmallIcon("configure-shortcuts"), tr("Configure &Shortcuts..."), coll, @@ -915,7 +915,7 @@ void MainWin::setupTopicWidget() void MainWin::setupViewMenuTail() { _viewMenu->addSeparator(); - _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullscreen")); + _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullScreen")); } @@ -1353,12 +1353,24 @@ void MainWin::showShortcutsDlg() } -void MainWin::toggleFullscreen() +void MainWin::onFullScreenToggled() { - if (isFullScreen()) - showNormal(); + // Relying on QWidget::isFullScreen is discouraged, see the KToggleFullScreenAction docs + // Also, one should not use showFullScreen() or showNormal(), as those reset all other window flags + + QAction *action = QtUi::actionCollection("General")->action("ToggleFullScreen"); + if (!action) + return; + +#ifdef HAVE_KDE + KToggleFullScreenAction *kAct = static_cast(action); + kAct->setFullScreen(this, kAct->isChecked()); +#else + if (action->isChecked()) + setWindowState(windowState() | Qt::WindowFullScreen); else - showFullScreen(); + setWindowState(windowState() & ~Qt::WindowFullScreen); +#endif }