diff --git a/src/bin/screen_blanker/PasswordWindow.cpp b/src/bin/screen_blanker/PasswordWindow.cpp index 08908d6293..30c278f04c 100644 --- a/src/bin/screen_blanker/PasswordWindow.cpp +++ b/src/bin/screen_blanker/PasswordWindow.cpp @@ -23,7 +23,7 @@ PasswordWindow::PasswordWindow() : BWindow(BRect(100, 100, 400, 230), "Enter Password", B_NO_BORDER_WINDOW_LOOK, kPasswordWindowFeel /* TODO: B_MODAL_APP_WINDOW_FEEL should also behave correctly */, - B_NOT_MOVABLE | B_NOT_CLOSABLE |B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE + B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS, B_ALL_WORKSPACES) { BView* topView = new BView(Bounds(), "topView", B_FOLLOW_ALL, B_WILL_DRAW); diff --git a/src/bin/screen_blanker/ScreenBlanker.cpp b/src/bin/screen_blanker/ScreenBlanker.cpp index e720c7d385..5463e9ba75 100644 --- a/src/bin/screen_blanker/ScreenBlanker.cpp +++ b/src/bin/screen_blanker/ScreenBlanker.cpp @@ -27,7 +27,6 @@ #include -const static uint32 kMsgResumeSaver = 'RSSV'; const static uint32 kMsgTurnOffScreen = 'tofs'; const static uint32 kMsgSuspendScreen = 'suss'; const static uint32 kMsgStandByScreen = 'stbs'; @@ -230,6 +229,7 @@ ScreenBlanker::MessageReceived(BMessage* message) { if (fWindow->Lock()) { HideCursor(); + fPasswordWindow->SetPassword(""); fPasswordWindow->Hide(); fRunner->Resume(); diff --git a/src/bin/screen_blanker/ScreenBlanker.h b/src/bin/screen_blanker/ScreenBlanker.h index b19afd487d..cb607c5771 100644 --- a/src/bin/screen_blanker/ScreenBlanker.h +++ b/src/bin/screen_blanker/ScreenBlanker.h @@ -19,6 +19,9 @@ #include +const static uint32 kMsgResumeSaver = 'RSSV'; + + class ScreenBlanker : public BApplication { public: ScreenBlanker(); diff --git a/src/bin/screen_blanker/ScreenSaverWindow.cpp b/src/bin/screen_blanker/ScreenSaverWindow.cpp index 5f39cfc8c3..81e0632b8d 100644 --- a/src/bin/screen_blanker/ScreenSaverWindow.cpp +++ b/src/bin/screen_blanker/ScreenSaverWindow.cpp @@ -9,6 +9,7 @@ */ +#include "ScreenBlanker.h" #include "ScreenSaverWindow.h" #include @@ -51,6 +52,11 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** target) be_app->PostMessage(B_QUIT_REQUESTED); break; } + } else if (message->what == B_KEY_DOWN) { + // Handle the escape key when the password window is showing + const char *string = NULL; + if (message->FindString("bytes", &string) == B_OK && string[0] == B_ESCAPE) + be_app->PostMessage(kMsgResumeSaver); } return B_DISPATCH_MESSAGE;