Fix the cmd-arrow left/right for go back/forward actions. Truncate the modifiers
to just the part that describes the modifier keys in general. What's left should be exactly B_COMMAND_KEY. This fixes the workspace switching short-cut to trigger page history navigation WebPositive. git-svn-id: http://svn.haiku-os.org/webpositive/webkit/trunk@408 94f232f2-1747-11df-bad5-a5bfde151594
This commit is contained in:
committed by
Alexandre Deckner
parent
a26e66b548
commit
0ef19ef7e1
@@ -366,15 +366,21 @@ void
|
|||||||
BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
|
BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
|
||||||
{
|
{
|
||||||
const char* bytes;
|
const char* bytes;
|
||||||
int32 modifiers;
|
uint32 modifiers;
|
||||||
if ((message->what == B_KEY_DOWN || message->what == B_UNMAPPED_KEY_DOWN)
|
if ((message->what == B_KEY_DOWN || message->what == B_UNMAPPED_KEY_DOWN)
|
||||||
&& message->FindString("bytes", &bytes) == B_OK
|
&& message->FindString("bytes", &bytes) == B_OK
|
||||||
&& message->FindInt32("modifiers", &modifiers) == B_OK) {
|
&& message->FindInt32("modifiers", (int32*)&modifiers) == B_OK) {
|
||||||
if (target == fURLInputGroup->TextView()) {
|
|
||||||
|
modifiers = modifiers & 0x000000ff;
|
||||||
|
if (bytes[0] == B_LEFT_ARROW && modifiers == B_COMMAND_KEY)
|
||||||
|
PostMessage(GO_BACK);
|
||||||
|
else if (bytes[0] == B_RIGHT_ARROW && modifiers == B_COMMAND_KEY)
|
||||||
|
PostMessage(GO_FORWARD);
|
||||||
|
else if (target == fURLInputGroup->TextView()) {
|
||||||
// Handle B_RETURN in the URL text control. This is the easiest
|
// 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
|
// 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
|
// address bar, as opposed to trying to load whatever is in there
|
||||||
// the text control just goes out of focus.
|
// when the text control just goes out of focus.
|
||||||
if (bytes[0] == B_RETURN) {
|
if (bytes[0] == B_RETURN) {
|
||||||
// Do it in such a way that the user sees the Go-button go down.
|
// Do it in such a way that the user sees the Go-button go down.
|
||||||
fURLInputGroup->GoButton()->SetValue(B_CONTROL_ON);
|
fURLInputGroup->GoButton()->SetValue(B_CONTROL_ON);
|
||||||
@@ -383,10 +389,6 @@ BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
|
|||||||
snooze(1000);
|
snooze(1000);
|
||||||
fURLInputGroup->GoButton()->SetValue(B_CONTROL_OFF);
|
fURLInputGroup->GoButton()->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);
|
BWebWindow::DispatchMessage(message, target);
|
||||||
|
|||||||
Reference in New Issue
Block a user