22 #include "showdesktop.moc"
26 #include <KWindowSystem>
34 ShowDesktop::ShowDesktop()
36 , showingDesktop(false)
39 kWinModule = KWindowSystem::self();
42 connect(kWinModule, SIGNAL(currentDesktopChanged(
int)),
43 SLOT(slotCurrentDesktopChanged(
int)));
44 connect(kWinModule, SIGNAL(windowChanged(WId,uint)),
45 SLOT(slotWindowChanged(WId,uint)));
48 void ShowDesktop::slotCurrentDesktopChanged(
int)
54 #define NET_ALL_TYPES_MASK (NET::AllTypesMask)
56 #define NET_ALL_TYPES_MASK (-1LU)
59 void ShowDesktop::slotWindowChanged(WId w,
unsigned int dirty)
65 if (dirty & NET::XAWMState) {
66 NETWinInfo inf(QX11Info::display(), w, QX11Info::appRootWindow(),
67 NET::XAWMState | NET::WMWindowType);
70 if ((windowType == NET::Normal || windowType == NET::Unknown)
71 && inf.mappingState() == NET::Visible) {
73 iconifiedList.clear();
74 showingDesktop =
false;
82 if (b == showingDesktop)
return;
87 iconifiedList.clear();
88 const QList<WId> windows = kWinModule->windows();
89 foreach(WId w, windows) {
90 NETWinInfo info(QX11Info::display(), w, QX11Info::appRootWindow(),
91 NET::XAWMState | NET::WMDesktop);
92 if (info.mappingState() == NET::Visible &&
93 (info.desktop() == NETWinInfo::OnAllDesktops
94 || info.desktop() == (int) kWinModule->currentDesktop())
96 iconifiedList.append(w);
101 foreach(WId w, iconifiedList) {
102 KWindowSystem::minimizeWindow(w,
false);
105 foreach(WId w, iconifiedList) {
106 KWindowSystem::unminimizeWindow(w,
false);
static ShowDesktop * self()
#define NET_ALL_TYPES_MASK
void showDesktop(bool show)
Singleton class that handles desktop access (minimizing all windows)
void desktopShown(bool shown)