diff --git a/headers/os/interface/Window.h b/headers/os/interface/Window.h index e8ca9b16d7..66f1ba9fb8 100644 --- a/headers/os/interface/Window.h +++ b/headers/os/interface/Window.h @@ -82,6 +82,7 @@ enum { B_QUIT_ON_WINDOW_CLOSE = 0x00100000, B_SAME_POSITION_IN_ALL_WORKSPACES = 0x00200000, B_AUTO_UPDATE_SIZE_LIMITS = 0x00400000, + B_CLOSE_ON_ESCAPE = 0x00800000 }; #define B_CURRENT_WORKSPACE 0 diff --git a/src/kits/interface/Window.cpp b/src/kits/interface/Window.cpp index d247c05b1c..85586cdb0e 100644 --- a/src/kits/interface/Window.cpp +++ b/src/kits/interface/Window.cpp @@ -3138,6 +3138,15 @@ BWindow::_HandleKeyDown(BMessage* event) return true; } + // Optionally close window when the escape key is pressed + if (key == B_ESCAPE && (Flags() & B_CLOSE_ON_ESCAPE) != 0) { + BMessage message(B_QUIT_REQUESTED); + message.AddBool("shortcut", true); + + PostMessage(&message); + return true; + } + // Handle shortcuts if ((modifiers & B_COMMAND_KEY) != 0) { // Command+q has been pressed, so, we will quit