X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fgraphicalui.cpp;h=fb4a2c7fdbfe7baee1102ce300e1040cb0d8efac;hp=1bdf047831fb72619e446a876d9b5e8ca265eb53;hb=f18d6c40cd704e26734a77b371ae2c4a284bee38;hpb=c67fec44128f48c1ac2ab7ef2b6f73a27fb67f66 diff --git a/src/uisupport/graphicalui.cpp b/src/uisupport/graphicalui.cpp index 1bdf0478..fb4a2c7f 100644 --- a/src/uisupport/graphicalui.cpp +++ b/src/uisupport/graphicalui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This contains code from KStatusNotifierItem, part of the KDE libs * @@ -35,11 +35,7 @@ # include # include #endif -#ifdef Q_OS_MAC -#include -#endif -GraphicalUi *GraphicalUi::_instance = 0; QWidget *GraphicalUi::_mainWidget = 0; QHash GraphicalUi::_actionCollections; ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0; @@ -47,6 +43,18 @@ ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = 0; UiStyle *GraphicalUi::_uiStyle = 0; bool GraphicalUi::_onAllDesktops = false; +namespace { + +GraphicalUi *_instance{nullptr}; + +} + + +GraphicalUi *GraphicalUi::instance() { + return _instance; +} + + GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) { Q_ASSERT(!_instance); @@ -55,6 +63,9 @@ GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) #ifdef Q_OS_WIN _dwTickCount = 0; #endif +#ifdef Q_OS_MAC + GetFrontProcess(&_procNum); +#endif } @@ -302,9 +313,13 @@ void GraphicalUi::activateMainWidget() // this does not actually work on all platforms... and causes more evil than good // mainWidget()->move(mainWidget()->frameGeometry().topLeft()); // avoid placement policies +#ifdef Q_OS_MAC + SetFrontProcess(&instance()->_procNum); +#else mainWidget()->show(); mainWidget()->raise(); mainWidget()->activateWindow(); +#endif #endif /* HAVE_KDE4 */ } @@ -316,18 +331,13 @@ void GraphicalUi::hideMainWidget() KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents); _onAllDesktops = info.onAllDesktops(); #endif -#ifdef Q_OS_MAC - ProcessSerialNumber pn; -#endif - if (instance()->isHidingMainWidgetAllowed()) { + if (instance()->isHidingMainWidgetAllowed()) #ifdef Q_OS_MAC - GetFrontProcess(&pn); - ShowHideProcess(&pn, false); + ShowHideProcess(&instance()->_procNum, false); #else mainWidget()->hide(); #endif - } }