From fd5625ba99a6e13d005313e46802cbea46a6be09 Mon Sep 17 00:00:00 2001 From: crs Date: Wed, 25 Dec 2002 18:44:54 +0000 Subject: [PATCH] Improved handling of screen saver handling when windows 2k is the client and the screen saver is password protected. It used to immediately turn off the screen saver (unintentionally) in that case. --- lib/platform/CMSWindowsScreen.cpp | 9 ++++++++- lib/platform/CMSWindowsScreenSaver.cpp | 10 +++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/platform/CMSWindowsScreen.cpp b/lib/platform/CMSWindowsScreen.cpp index 192d05bc..1b8e74c7 100644 --- a/lib/platform/CMSWindowsScreen.cpp +++ b/lib/platform/CMSWindowsScreen.cpp @@ -473,9 +473,16 @@ CMSWindowsScreen::onPreDispatch(const CEvent* event) if (isCurrentDesktop(desk)) { CloseDesktop(desk); } - else { + else if (!m_screensaver->isActive()) { + // don't switch desktops when the screensaver is + // active. we'd most likely switch to the + // screensaver desktop which would have the side + // effect of forcing the screensaver to stop. switchDesktop(desk); } + else { + CloseDesktop(desk); + } } } return true; diff --git a/lib/platform/CMSWindowsScreenSaver.cpp b/lib/platform/CMSWindowsScreenSaver.cpp index 7ee439d7..df3322a7 100644 --- a/lib/platform/CMSWindowsScreenSaver.cpp +++ b/lib/platform/CMSWindowsScreenSaver.cpp @@ -132,7 +132,7 @@ CMSWindowsScreenSaver::deactivate() bool killed = false; if (!m_is95Family) { // NT runs screen saver in another desktop - HDESK desktop = OpenDesktop("screen-saver", 0, FALSE, + HDESK desktop = OpenDesktop("Screen-saver", 0, FALSE, DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS); if (desktop != NULL) { EnumDesktopWindows(desktop, @@ -146,6 +146,10 @@ CMSWindowsScreenSaver::deactivate() if (!killed) { // find screen saver window and close it HWND hwnd = FindWindow("WindowsScreenSaverClass", NULL); + if (hwnd == NULL) { + // win2k may use a different class + hwnd = FindWindow("Default Screen Saver", NULL); + } if (hwnd != NULL) { PostMessage(hwnd, WM_CLOSE, 0, 0); } @@ -167,7 +171,7 @@ CMSWindowsScreenSaver::isActive() const } else if (m_isNT) { // screen saver runs on a separate desktop - HDESK desktop = OpenDesktop("screen-saver", 0, FALSE, MAXIMUM_ALLOWED); + HDESK desktop = OpenDesktop("Screen-saver", 0, FALSE, MAXIMUM_ALLOWED); if (desktop == NULL && GetLastError() != ERROR_ACCESS_DENIED) { // desktop doesn't exist so screen saver is not running return false; @@ -241,7 +245,7 @@ CMSWindowsScreenSaver::findScreenSaver() { if (!m_is95Family) { // screen saver runs on a separate desktop - HDESK desktop = OpenDesktop("screen-saver", 0, FALSE, MAXIMUM_ALLOWED); + HDESK desktop = OpenDesktop("Screen-saver", 0, FALSE, MAXIMUM_ALLOWED); if (desktop != NULL) { // search CFindScreenSaverInfo info;