WebPositive: let escape close the menu.

* Intercept the escape key to mean "stop loading" only when menus are
closed.
This commit is contained in:
Adrien Destugues
2014-04-15 09:17:56 +02:00
parent 8df3fb7035
commit 3eff063958
2 changed files with 12 additions and 1 deletions
+10 -1
View File
@@ -334,6 +334,7 @@ BrowserWindow::BrowserWindow(BRect frame, SettingsMessage* appSettings,
B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS), B_AUTO_UPDATE_SIZE_LIMITS | B_ASYNCHRONOUS_CONTROLS),
fIsFullscreen(false), fIsFullscreen(false),
fInterfaceVisible(false), fInterfaceVisible(false),
fMenusRunning(false),
fPulseRunner(NULL), fPulseRunner(NULL),
fVisibleInterfaceElements(interfaceElements), fVisibleInterfaceElements(interfaceElements),
fContext(context), fContext(context),
@@ -707,7 +708,7 @@ BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
_InvokeButtonVisibly(fFindCloseButton); _InvokeButtonVisibly(fFindCloseButton);
return; return;
} }
} else if (bytes[0] == B_ESCAPE) { } else if (bytes[0] == B_ESCAPE && !fMenusRunning) {
if (modifierKeys == B_COMMAND_KEY) if (modifierKeys == B_COMMAND_KEY)
_ShowInterface(true); _ShowInterface(true);
else { else {
@@ -1125,6 +1126,14 @@ BrowserWindow::MenusBeginning()
{ {
_UpdateHistoryMenu(); _UpdateHistoryMenu();
_UpdateClipboardItems(); _UpdateClipboardItems();
fMenusRunning = true;
}
void
BrowserWindow::MenusEnded()
{
fMenusRunning = false;
} }
+2
View File
@@ -103,6 +103,7 @@ public:
virtual void MessageReceived(BMessage* message); virtual void MessageReceived(BMessage* message);
virtual bool QuitRequested(); virtual bool QuitRequested();
virtual void MenusBeginning(); virtual void MenusBeginning();
virtual void MenusEnded();
virtual void ScreenChanged(BRect screenSize, virtual void ScreenChanged(BRect screenSize,
color_space format); color_space format);
@@ -246,6 +247,7 @@ private:
bool fIsFullscreen; bool fIsFullscreen;
bool fInterfaceVisible; bool fInterfaceVisible;
bool fMenusRunning;
BRect fNonFullscreenWindowFrame; BRect fNonFullscreenWindowFrame;
BMessageRunner* fPulseRunner; BMessageRunner* fPulseRunner;
uint32 fVisibleInterfaceElements; uint32 fVisibleInterfaceElements;