X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fgraphicalui.cpp;h=2042fef54c6e1a9c349f51bf7714eb285b4383dc;hp=c05ed403c674130a80a72808ba44d5cf13ae41e4;hb=900cce213a6ed000b7131a05a0dec7d04b35b023;hpb=68878dc8366f2f4a0afe132847aad9a51a80cdbf diff --git a/src/uisupport/graphicalui.cpp b/src/uisupport/graphicalui.cpp index c05ed403..2042fef5 100644 --- a/src/uisupport/graphicalui.cpp +++ b/src/uisupport/graphicalui.cpp @@ -31,23 +31,22 @@ #ifdef Q_WS_X11 # include #endif -#ifdef HAVE_KDE4 -# include -# include -#endif -GraphicalUi *GraphicalUi::_instance = 0; -QWidget *GraphicalUi::_mainWidget = 0; +QWidget *GraphicalUi::_mainWidget = nullptr; QHash GraphicalUi::_actionCollections; -ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0; -ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = 0; -UiStyle *GraphicalUi::_uiStyle = 0; -bool GraphicalUi::_onAllDesktops = false; +ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = nullptr; +ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = nullptr; +UiStyle *GraphicalUi::_uiStyle = nullptr; + -GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) +GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent), Singleton(this) { - Q_ASSERT(!_instance); - _instance = this; + Q_INIT_RESOURCE(pics); + Q_INIT_RESOURCE(hicolor_icons); +#ifdef EMBED_DATA + Q_INIT_RESOURCE(icons); + Q_INIT_RESOURCE(iconthemes); +#endif #ifdef Q_OS_WIN _dwTickCount = 0; @@ -70,7 +69,7 @@ ActionCollection *GraphicalUi::actionCollection(const QString &category, const Q { 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); @@ -172,65 +171,6 @@ bool GraphicalUi::checkMainWidgetVisibility(bool perform) return true; } -#elif defined(HAVE_KDE4) && defined(Q_WS_X11) - KWindowInfo info1 = KWindowSystem::windowInfo(mainWidget()->winId(), NET::XAWMState | NET::WMState | NET::WMDesktop); - // mapped = visible (but possibly obscured) - bool mapped = (info1.mappingState() == NET::Visible) && !info1.isMinimized(); - - // - not mapped -> show, raise, focus - // - mapped - // - obscured -> raise, focus - // - not obscured -> hide - //info1.mappingState() != NET::Visible -> window on another desktop? - if (!mapped) { - if (perform) - minimizeRestore(true); - return true; - } - else { - QListIterator it(KWindowSystem::stackingOrder()); - it.toBack(); - while (it.hasPrevious()) { - WId id = it.previous(); - if (id == mainWidget()->winId()) - break; - - KWindowInfo info2 = KWindowSystem::windowInfo(id, NET::WMDesktop | NET::WMGeometry | NET::XAWMState | NET::WMState | NET::WMWindowType); - - if (info2.mappingState() != NET::Visible) - continue; // not visible on current desktop -> ignore - - if (!info2.geometry().intersects(mainWidget()->geometry())) - continue; // not obscuring the window -> ignore - - if (!info1.hasState(NET::KeepAbove) && info2.hasState(NET::KeepAbove)) - continue; // obscured by window kept above -> ignore - - NET::WindowType type = info2.windowType(NET::NormalMask | NET::DesktopMask - | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask - | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask); - - if (type == NET::Dock || type == NET::TopMenu) - continue; // obscured by dock or topmenu -> ignore - - if (perform) { - KWindowSystem::raiseWindow(mainWidget()->winId()); - KWindowSystem::activateWindow(mainWidget()->winId()); - } - return true; - } - - //not on current desktop? - if (!info1.isOnCurrentDesktop()) { - if (perform) - KWindowSystem::activateWindow(mainWidget()->winId()); - return true; - } - - if (perform) - minimizeRestore(false); // hide - return false; - } #else if (!mainWidget()->isVisible() || mainWidget()->isMinimized() || !mainWidget()->isActiveWindow()) { @@ -267,29 +207,6 @@ void GraphicalUi::minimizeRestore(bool show) void GraphicalUi::activateMainWidget() { -#ifdef HAVE_KDE4 -# ifdef Q_WS_X11 - KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents); - if (_onAllDesktops) { - KWindowSystem::setOnAllDesktops(mainWidget()->winId(), true); - } - else { - KWindowSystem::setCurrentDesktop(info.desktop()); - } - - mainWidget()->move(info.frameGeometry().topLeft()); // avoid placement policies - mainWidget()->show(); - mainWidget()->raise(); - KWindowSystem::raiseWindow(mainWidget()->winId()); - KWindowSystem::activateWindow(mainWidget()->winId()); -# else - mainWidget()->show(); - KWindowSystem::raiseWindow(mainWidget()->winId()); - KWindowSystem::forceActiveWindow(mainWidget()->winId()); -# endif - -#else /* HAVE_KDE4 */ - #ifdef Q_WS_X11 // Bypass focus stealing prevention QX11Info::setAppUserTime(QX11Info::appTime()); @@ -309,18 +226,11 @@ void GraphicalUi::activateMainWidget() mainWidget()->raise(); mainWidget()->activateWindow(); #endif - -#endif /* HAVE_KDE4 */ } void GraphicalUi::hideMainWidget() { -#if defined(HAVE_KDE4) && defined(Q_WS_X11) - KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents); - _onAllDesktops = info.onAllDesktops(); -#endif - if (instance()->isHidingMainWidgetAllowed()) #ifdef Q_OS_MAC ShowHideProcess(&instance()->_procNum, false);