qa: Simplify main window activation logic
[quassel.git] / src / uisupport / graphicalui.cpp
index 6136ecf..33b0d87 100644 (file)
 #include "graphicalui.h"
 
 #include "actioncollection.h"
-#include "uisettings.h"
 #include "contextmenuactionprovider.h"
 #include "toolbaractionprovider.h"
+#include "uisettings.h"
 
 #ifdef Q_WS_X11
-#  include <QX11Info>
+#    include <QX11Info>
 #endif
 
-QWidget *GraphicalUi::_mainWidget = 0;
-QHash<QString, ActionCollection *> GraphicalUi::_actionCollections;
-ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0;
-ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = 0;
-UiStyle *GraphicalUi::_uiStyle = 0;
+QWidget* GraphicalUi::_mainWidget = nullptr;
+QHash<QString, ActionCollection*> GraphicalUi::_actionCollections;
+ContextMenuActionProvider* GraphicalUi::_contextMenuActionProvider = nullptr;
+ToolBarActionProvider* GraphicalUi::_toolBarActionProvider = nullptr;
+UiStyle* GraphicalUi::_uiStyle = nullptr;
 
-
-GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent), Singleton<GraphicalUi>(this)
+GraphicalUi::GraphicalUi(QObject* parent)
+    : AbstractUi(parent)
+    , Singleton<GraphicalUi>(this)
 {
     Q_INIT_RESOURCE(pics);
     Q_INIT_RESOURCE(hicolor_icons);
@@ -56,7 +57,6 @@ GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent), Singleton<Graphi
 #endif
 }
 
-
 void GraphicalUi::init()
 {
 #ifdef Q_OS_WIN
@@ -64,12 +64,11 @@ void GraphicalUi::init()
 #endif
 }
 
-
-ActionCollection *GraphicalUi::actionCollection(const QString &category, const QString &translatedCategory)
+ActionCollection* GraphicalUi::actionCollection(const QString& category, const QString& translatedCategory)
 {
     if (_actionCollections.contains(category))
         return _actionCollections.value(category);
-    ActionCollection *coll = new ActionCollection(_mainWidget);
+    auto* coll = new ActionCollection(_mainWidget);
 
     if (!translatedCategory.isEmpty())
         coll->setProperty("Category", translatedCategory);
@@ -82,53 +81,45 @@ ActionCollection *GraphicalUi::actionCollection(const QString &category, const Q
     return coll;
 }
 
-
-QHash<QString, ActionCollection *> GraphicalUi::actionCollections()
+QHash<QString, ActionCollection*> GraphicalUi::actionCollections()
 {
     return _actionCollections;
 }
 
-
 void GraphicalUi::loadShortcuts()
 {
-    foreach(ActionCollection *coll, actionCollections())
-    coll->readSettings();
+    foreach (ActionCollection* coll, actionCollections())
+        coll->readSettings();
 }
 
-
 void GraphicalUi::saveShortcuts()
 {
     ShortcutSettings s;
     s.clear();
-    foreach(ActionCollection *coll, actionCollections())
-    coll->writeSettings();
+    foreach (ActionCollection* coll, actionCollections())
+        coll->writeSettings();
 }
 
-
-void GraphicalUi::setMainWidget(QWidget *widget)
+void GraphicalUi::setMainWidget(QWidget* widget)
 {
     _mainWidget = widget;
 }
 
-
-void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider *provider)
+void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider* provider)
 {
     _contextMenuActionProvider = provider;
 }
 
-
-void GraphicalUi::setToolBarActionProvider(ToolBarActionProvider *provider)
+void GraphicalUi::setToolBarActionProvider(ToolBarActionProvider* provider)
 {
     _toolBarActionProvider = provider;
 }
 
-
-void GraphicalUi::setUiStyle(UiStyle *style)
+void GraphicalUi::setUiStyle(UiStyle* style)
 {
     _uiStyle = style;
 }
 
-
 void GraphicalUi::disconnectedFromCore()
 {
     _contextMenuActionProvider->disconnectedFromCore();
@@ -136,8 +127,7 @@ void GraphicalUi::disconnectedFromCore()
     AbstractUi::disconnectedFromCore();
 }
 
-
-bool GraphicalUi::eventFilter(QObject *obj, QEvent *event)
+bool GraphicalUi::eventFilter(QObject* obj, QEvent* event)
 {
 #ifdef Q_OS_WIN
     if (obj == mainWidget() && event->type() == QEvent::ActivationChange) {
@@ -147,7 +137,6 @@ bool GraphicalUi::eventFilter(QObject *obj, QEvent *event)
     return AbstractUi::eventFilter(obj, event);
 }
 
-
 // NOTE: Window activation stuff seems to work just fine in Plasma 5 without requiring X11 hacks.
 // TODO: Evaluate cleaning all this up once we can get rid of Qt4/KDE4
 
@@ -155,47 +144,33 @@ bool GraphicalUi::eventFilter(QObject *obj, QEvent *event)
 
 bool GraphicalUi::checkMainWidgetVisibility(bool perform)
 {
+    bool needsActivation{true};
+
 #ifdef Q_OS_WIN
     // the problem is that we lose focus when the systray icon is activated
     // and we don't know the former active window
     // therefore we watch for activation event and use our stopwatch :)
     if (GetTickCount() - _dwTickCount < 300) {
         // we were active in the last 300ms -> hide it
-        if (perform)
-            minimizeRestore(false);
-        return false;
+        needsActivation = false;
     }
-    else {
-        if (perform)
-            minimizeRestore(true);
-        return true;
-    }
-
 #else
-
-    if (!mainWidget()->isVisible() || mainWidget()->isMinimized() || !mainWidget()->isActiveWindow()) {
-        if (perform)
-            minimizeRestore(true);
-        return true;
-    }
-    else {
-        if (perform)
-            minimizeRestore(false);
-        return false;
+    if (mainWidget()->isVisible() && !mainWidget()->isMinimized() && mainWidget()->isActiveWindow()) {
+        needsActivation = false;
     }
-
 #endif
 
-    return true;
+    if (perform) {
+        minimizeRestore(needsActivation);
+    }
+    return needsActivation;
 }
 
-
 bool GraphicalUi::isMainWidgetVisible()
 {
     return !instance()->checkMainWidgetVisibility(false);
 }
 
-
 void GraphicalUi::minimizeRestore(bool show)
 {
     if (show)
@@ -204,7 +179,6 @@ void GraphicalUi::minimizeRestore(bool show)
         hideMainWidget();
 }
 
-
 void GraphicalUi::activateMainWidget()
 {
 #ifdef Q_WS_X11
@@ -228,7 +202,6 @@ void GraphicalUi::activateMainWidget()
 #endif
 }
 
-
 void GraphicalUi::hideMainWidget()
 {
     if (instance()->isHidingMainWidgetAllowed())
@@ -239,7 +212,6 @@ void GraphicalUi::hideMainWidget()
 #endif
 }
 
-
 void GraphicalUi::toggleMainWidget()
 {
     instance()->checkMainWidgetVisibility(true);