void ShowDesktop::slotWindowAdded(WId w) { if (!m_showingDesktop) { return; } NETWinInfo inf(tqt_xdisplay(), w, tqt_xrootwin(), NET::XAWMState | NET::WMWindowType); NET::WindowType windowType = inf.windowType(NET::AllTypesMask); if ((windowType == NET::Normal || windowType == NET::Unknown) && inf.mappingState() == NET::Visible) { TDEConfig twincfg( "twinrc", true ); // see in twin twincfg.setGroup( "Windows" ); if( twincfg.readBoolEntry( "ShowDesktopIsMinimizeAll", false )) { m_iconifiedList.clear(); m_showingDesktop = false; emit desktopShown(false); } else { m_activeWindow = w; showDesktop(false); } } }
void ShowDesktop::slotWindowAdded(WId w) { if (!m_showingDesktop) { return; } NETWinInfo inf(QX11Info::display(), w, QX11Info::appRootWindow(), NET::XAWMState | NET::WMWindowType); NET::WindowType windowType = inf.windowType(NET::AllTypesMask); if ((windowType == NET::Normal || windowType == NET::Unknown) && inf.mappingState() == NET::Visible) { KConfig _kwincfg( "kwinrc" ); KConfigGroup kwincfg(&_kwincfg, "Windows" ); if( kwincfg.readEntry( "ShowDesktopIsMinimizeAll", false )) { m_iconifiedList.clear(); m_showingDesktop = false; emit desktopShown(false); } else { m_activeWindow = w; showDesktop(false); } } }
void ShowDesktop::slotWindowChanged(WId w, unsigned int dirty) { if (!showingDesktop) return; // SELI this needs checking for twin_iii (_NET_SHOWING_DESKTOP) if ( dirty & NET::XAWMState ) { NETWinInfo inf(tqt_xdisplay(), w, tqt_xrootwin(), NET::XAWMState | NET::WMWindowType); #ifdef KDE_3_2 NET::WindowType windowType = inf.windowType(NET_ALL_TYPES_MASK); #else NET::WindowType windowType = inf.windowType(); #endif if ((windowType == NET::Normal || windowType == NET::Unknown) && inf.mappingState() == NET::Visible ) { // a window was deiconified, abort the show desktop mode. iconifiedList.clear(); showingDesktop = false; emit desktopShown( false ); } } }
void ShowDesktop::slotWindowChanged(WId w, unsigned int dirty) { if(!m_showingDesktop) { return; } if(dirty & NET::XAWMState) { NETWinInfo inf(qt_xdisplay(), w, qt_xrootwin(), NET::XAWMState | NET::WMWindowType); NET::WindowType windowType = inf.windowType(NET::AllTypesMask); if((windowType == NET::Normal || windowType == NET::Unknown) && inf.mappingState() == NET::Visible) { // a window was deiconified, abort the show desktop mode. m_iconifiedList.clear(); m_showingDesktop = false; emit desktopShown(false); } } }
void ShowDesktop::showDesktop( bool b ) { if( b == showingDesktop ) return; showingDesktop = b; if ( b ) { // this code should move to KWin after supporting NETWM1.2 iconifiedList.clear(); const TQValueList<WId> windows = kWinModule->windows(); TQValueList<WId>::ConstIterator it; TQValueList<WId>::ConstIterator end( windows.end() ); for ( it=windows.begin(); it!=end; ++it ) { WId w = *it; NETWinInfo info( tqt_xdisplay(), w, tqt_xrootwin(), NET::XAWMState | NET::WMDesktop ); if ( info.mappingState() == NET::Visible && ( info.desktop() == NETWinInfo::OnAllDesktops || info.desktop() == (int) kWinModule->currentDesktop() ) ) { iconifiedList.append( w ); } } // find first, hide later, otherwise transients may get minimized // with the window they're transient for TQValueList<WId>::ConstIterator endInconifiedList( iconifiedList.end() ); for ( it=iconifiedList.begin(); it!=endInconifiedList; ++it ) { KWin::iconifyWindow( *it, false ); } } else { TQValueList<WId>::ConstIterator it; TQValueList<WId>::ConstIterator end( iconifiedList.end() ); for ( it=iconifiedList.begin(); it!=end; ++it ) { KWin::deIconifyWindow( *it, false ); } } emit desktopShown( showingDesktop ); }
void ShowDesktop::showingDesktopChanged( bool showing ) { m_showingDesktop = showing; emit desktopShown(m_showingDesktop); }
void ShowDesktop::showDesktop( bool b ) { if (b == m_showingDesktop) { return; } if( m_wmSupport ) { NETRootInfo i( tqt_xdisplay(), 0 ); i.setShowingDesktop( b ); return; } if (b) { m_activeWindow = Kicker::the()->twinModule()->activeWindow(); m_iconifiedList.clear(); const TQValueList<WId> windows = Kicker::the()->twinModule()->windows(); for (TQValueList<WId>::ConstIterator it = windows.begin(); it != windows.end(); ++it) { WId w = *it; NETWinInfo info( tqt_xdisplay(), w, tqt_xrootwin(), NET::XAWMState | NET::WMDesktop ); if (info.mappingState() == NET::Visible && (info.desktop() == NETWinInfo::OnAllDesktops || info.desktop() == (int)Kicker::the()->twinModule()->currentDesktop())) { m_iconifiedList.append( w ); } } // find first, hide later, otherwise transients may get minimized // with the window they're transient for for (TQValueVector<WId>::Iterator it = m_iconifiedList.begin(); it != m_iconifiedList.end(); ++it) { KWin::iconifyWindow( *it, false ); } // on desktop changes or when a window is deiconified, we abort the show desktop mode connect(Kicker::the()->twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), TQT_SLOT(slotCurrentDesktopChanged(int))); connect(Kicker::the()->twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), TQT_SLOT(slotWindowChanged(WId,unsigned int))); connect(Kicker::the()->twinModule(), TQT_SIGNAL(windowAdded(WId)), TQT_SLOT(slotWindowAdded(WId))); } else { disconnect(Kicker::the()->twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), this, TQT_SLOT(slotCurrentDesktopChanged(int))); disconnect(Kicker::the()->twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), this, TQT_SLOT(slotWindowChanged(WId,unsigned int))); disconnect(Kicker::the()->twinModule(), TQT_SIGNAL(windowAdded(WId)), this, TQT_SLOT(slotWindowAdded(WId))); for (TQValueVector<WId>::ConstIterator it = m_iconifiedList.begin(); it != m_iconifiedList.end(); ++it) { KWin::deIconifyWindow(*it, false); } KWin::forceActiveWindow(m_activeWindow); } m_showingDesktop = b; emit desktopShown(m_showingDesktop); }
void ShowDesktop::showDesktop( bool b ) { if (b == m_showingDesktop) { return; } if( m_wmSupport ) { NETRootInfo i( QX11Info::display(), 0 ); i.setShowingDesktop( b ); return; } if (b) { m_activeWindow = KWindowSystem::activeWindow(); m_iconifiedList.clear(); const QList<WId> windows = KWindowSystem::windows(); QList<WId>::const_iterator itEnd = windows.constEnd(); for (QList<WId>::const_iterator it = windows.constBegin(); it != itEnd; ++it) { WId w = *it; NETWinInfo info( QX11Info::display(), w, QX11Info::appRootWindow(), NET::XAWMState | NET::WMDesktop ); if (info.mappingState() == NET::Visible && (info.desktop() == NETWinInfo::OnAllDesktops || info.desktop() == (int)KWindowSystem::currentDesktop())) { m_iconifiedList.append( w ); } } // find first, hide later, otherwise transients may get minimized // with the window they're transient for QVector<WId>::iterator itEnd2 = m_iconifiedList.end(); for (QVector<WId>::iterator it = m_iconifiedList.begin(); it != itEnd2; ++it) { KWindowSystem::minimizeWindow( *it, false ); } // on desktop changes or when a window is deiconified, we abort the show desktop mode connect(KWindowSystem::self(), SIGNAL(currentDesktopChanged(int)), SLOT(slotCurrentDesktopChanged(int))); connect(KWindowSystem::self(), SIGNAL(windowChanged(WId,unsigned int)), SLOT(slotWindowChanged(WId,unsigned int))); connect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), SLOT(slotWindowAdded(WId))); } else { disconnect(KWindowSystem::self(), SIGNAL(currentDesktopChanged(int)), this, SLOT(slotCurrentDesktopChanged(int))); disconnect(KWindowSystem::self(), SIGNAL(windowChanged(WId,unsigned int)), this, SLOT(slotWindowChanged(WId,unsigned int))); disconnect(KWindowSystem::self(), SIGNAL(windowAdded(WId)), this, SLOT(slotWindowAdded(WId))); QVector<WId>::const_iterator itEnd = m_iconifiedList.constEnd(); for (QVector<WId>::const_iterator it = m_iconifiedList.constBegin(); it != itEnd; ++it) { KWindowSystem::unminimizeWindow(*it, false); } KWindowSystem::forceActiveWindow(m_activeWindow); } m_showingDesktop = b; emit desktopShown(m_showingDesktop); }