From ea77068a8e791816cd78201bbe69af1e3083324d Mon Sep 17 00:00:00 2001 From: stippi Date: Tue, 2 Mar 2010 00:49:48 +0000 Subject: [PATCH] Added shortcuts Cmd-Left/Right for going back/forward. git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@263 94f232f2-1747-11df-bad5-a5bfde151594 --- src/apps/webpositive/BrowserWindow.cpp | 37 +++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/apps/webpositive/BrowserWindow.cpp b/src/apps/webpositive/BrowserWindow.cpp index 0e811e4c8d..3dc03d54de 100644 --- a/src/apps/webpositive/BrowserWindow.cpp +++ b/src/apps/webpositive/BrowserWindow.cpp @@ -281,21 +281,28 @@ BrowserWindow::~BrowserWindow() void BrowserWindow::DispatchMessage(BMessage* message, BHandler* target) { - if (fURLTextControl && message->what == B_KEY_DOWN - && target == fURLTextControl->TextView()) { - // Handle B_RETURN in the URL text control. This is the easiest - // way to react *only* when the user presses the return key in the - // address bar, as opposed to trying to load whatever is in there when - // the text control just goes out of focus. - const char* bytes; - if (message->FindString("bytes", &bytes) == B_OK - && bytes[0] == B_RETURN) { - // Do it in such a way that the user sees the Go-button go down. - fGoButton->SetValue(B_CONTROL_ON); - UpdateIfNeeded(); - fGoButton->Invoke(); - snooze(1000); - fGoButton->SetValue(B_CONTROL_OFF); + const char* bytes; + int32 modifiers; + if ((message->what == B_KEY_DOWN || message->what == B_UNMAPPED_KEY_DOWN) + && message->FindString("bytes", &bytes) == B_OK + && message->FindInt32("modifiers", &modifiers) == B_OK) { + if (fURLTextControl && target == fURLTextControl->TextView()) { + // Handle B_RETURN in the URL text control. This is the easiest + // way to react *only* when the user presses the return key in the + // address bar, as opposed to trying to load whatever is in there when + // the text control just goes out of focus. + if (bytes[0] == B_RETURN) { + // Do it in such a way that the user sees the Go-button go down. + fGoButton->SetValue(B_CONTROL_ON); + UpdateIfNeeded(); + fGoButton->Invoke(); + snooze(1000); + fGoButton->SetValue(B_CONTROL_OFF); + } + } else if (bytes[0] == B_LEFT_ARROW && (modifiers & B_COMMAND_KEY) != 0) { + PostMessage(GO_BACK); + } else if (bytes[0] == B_RIGHT_ARROW && (modifiers & B_COMMAND_KEY) != 0) { + PostMessage(GO_FORWARD); } } BWebWindow::DispatchMessage(message, target);