#include <globals.h>


Public Member Functions | |
| Desktops () | |
| ~Desktops () | |
| void | init () |
| void | SwitchToDesktop (int idx) |
| void | ToggleMinimize () |
| minimize/restore all windows on the desktop | |
Public Attributes | |
| int | _current_desktop |
Definition at line 240 of file globals.h.
| Desktops::Desktops | ( | ) |
Definition at line 66 of file desktop.cpp.
: _current_desktop(0) { }
| Desktops::~Desktops | ( | ) |
Definition at line 71 of file desktop.cpp.
{
// show all hidden windows
for(iterator it_dsk=begin(); it_dsk!=end(); ++it_dsk)
for(WindowSet::iterator it=it_dsk->_windows.begin(); it!=it_dsk->_windows.end(); ++it)
ShowWindowAsync(*it, SW_SHOW);
}
| void Desktops::init | ( | ) |
Definition at line 79 of file desktop.cpp.
References DESKTOP_COUNT.
Referenced by _tWinMain().
{
resize(DESKTOP_COUNT);
#ifdef _USE_HDESK
DesktopPtr& desktop = (*this)[0];
desktop = DesktopPtr(new Desktop(OpenInputDesktop(0, FALSE, DESKTOP_SWITCHDESKTOP)));
#endif
}

| void Desktops::SwitchToDesktop | ( | int | idx ) |
Definition at line 165 of file desktop.cpp.
References _current_desktop, ExplorerGlobals::_hwndDesktopBar, Desktop::_hwndForeground, Desktop::_windows, g_Globals, HWND, and PM_GET_LAST_ACTIVE.
Referenced by DesktopBar::Command().
{
if (_current_desktop == idx)
return;
Desktop& old_desktop = (*this)[_current_desktop];
WindowSet& windows = old_desktop._windows;
Desktop& desktop = (*this)[idx];
windows.clear();
// collect window handles of all other desktops
WindowSet other_wnds;
for(const_iterator it1=begin(); it1!=end(); ++it1)
for(WindowSet::const_iterator it2=it1->_windows.begin(); it2!=it1->_windows.end(); ++it2)
other_wnds.insert(*it2);
// save currently visible application windows
EnumWindows(SwitchDesktopEnumFct, (LPARAM)&windows);
old_desktop._hwndForeground = (HWND)SendMessage(g_Globals._hwndDesktopBar, PM_GET_LAST_ACTIVE, 0, 0);
// hide all windows of the previous desktop
for(WindowSet::iterator it=windows.begin(); it!=windows.end(); ++it)
ShowWindowAsync(*it, SW_HIDE);
// show all windows of the new desktop
for(WindowSet::iterator it=desktop._windows.begin(); it!=desktop._windows.end(); ++it)
ShowWindowAsync(*it, SW_SHOW);
if (desktop._hwndForeground)
SetForegroundWindow(desktop._hwndForeground);
// remove the window handles of the other desktops from what we found on the previous desktop
for(WindowSet::const_iterator it=other_wnds.begin(); it!=other_wnds.end(); ++it)
windows.erase(*it);
// We don't need to store the window handles of what's now visible the now current desktop.
desktop._windows.clear();
_current_desktop = idx;
}

| void Desktops::ToggleMinimize | ( | ) |
minimize/restore all windows on the desktop
Definition at line 231 of file desktop.cpp.
References _current_desktop.
Referenced by DesktopBar::Command().
{
list<MinimizeStruct>& minimized = (*this)[_current_desktop]._minimized;
if (minimized.empty()) {
EnumWindows(MinimizeDesktopEnumFct, (LPARAM)&minimized);
} else {
for(list<MinimizeStruct>::const_iterator it=minimized.begin(); it!=minimized.end(); ++it)
ShowWindowAsync(it->first, it->second&WS_MAXIMIZE? SW_MAXIMIZE: SW_RESTORE);
minimized.clear();
}
}

Definition at line 253 of file globals.h.
Referenced by QuickLaunchBar::AddShortcuts(), SwitchToDesktop(), and ToggleMinimize().
|
ROS Explorer Source Code Documentation
generated on 02.01.2013 by
|