From 91554083e04154d254572a1ea441f57dc0a3ec0a Mon Sep 17 00:00:00 2001 From: Martin Fuchs Date: Sat, 28 Feb 2004 13:45:32 +0000 Subject: [PATCH] remember last foreground window when switching desktops svn path=/branches/lean-explorer/; revision=8437 --- reactos/subsys/system/explorer/desktop/desktop.cpp | 5 +++++ reactos/subsys/system/explorer/globals.h | 1 + 2 files changed, 6 insertions(+) diff --git a/reactos/subsys/system/explorer/desktop/desktop.cpp b/reactos/subsys/system/explorer/desktop/desktop.cpp index 1698c8268d1..44b4323b0f5 100644 --- a/reactos/subsys/system/explorer/desktop/desktop.cpp +++ b/reactos/subsys/system/explorer/desktop/desktop.cpp @@ -35,6 +35,7 @@ #include "../externals.h" #include "../taskbar/desktopbar.h" +#include "../taskbar/taskbar.h" // for PM_GET_LAST_ACTIVE #include "../explorer_intres.h" @@ -85,6 +86,7 @@ void Desktops::SwitchToDesktop(int idx) windows.clear(); EnumWindows(SwitchDesktopEnumFct, (LPARAM)&windows); + old_desktop._hwndForeground = (HWND)SendMessage(g_Globals._hwndDesktopBar, PM_GET_LAST_ACTIVE, 0, 0); // hide all windows we found for(WindowSet::iterator it=windows.begin(); it!=windows.end(); ++it) @@ -94,6 +96,9 @@ void Desktops::SwitchToDesktop(int idx) for(WindowSet::iterator it=desktop._windows.begin(); it!=desktop._windows.end(); ++it) ShowWindowAsync(*it, SW_SHOW); + if (desktop._hwndForeground) + SetForegroundWindow(desktop._hwndForeground); + desktop._windows.clear(); _current_desktop = idx; diff --git a/reactos/subsys/system/explorer/globals.h b/reactos/subsys/system/explorer/globals.h index 32c4d17c96f..faa610c0c9d 100644 --- a/reactos/subsys/system/explorer/globals.h +++ b/reactos/subsys/system/explorer/globals.h @@ -149,6 +149,7 @@ typedef pair MinimizeStruct; struct Desktop { set _windows; + WindowHandle _hwndForeground; list _minimized; }; typedef Desktop DesktopRef;