Fix 2 shortcut bugs, one in Web+, one in S&T
It's really 2 instances of the same bug, we only want to consider a fixed set of modifier keys ignoring the lock keys and left/right keys.
This commit is contained in:
@@ -124,6 +124,10 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const int32 kModifiers = B_SHIFT_KEY | B_COMMAND_KEY
|
||||||
|
| B_CONTROL_KEY | B_OPTION_KEY | B_MENU_KEY;
|
||||||
|
|
||||||
|
|
||||||
static BLayoutItem*
|
static BLayoutItem*
|
||||||
layoutItemFor(BView* view)
|
layoutItemFor(BView* view)
|
||||||
{
|
{
|
||||||
@@ -650,7 +654,7 @@ BrowserWindow::DispatchMessage(BMessage* message, BHandler* target)
|
|||||||
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", &modifierKeys) == B_OK) {
|
&& message->FindInt32("modifiers", &modifierKeys) == B_OK) {
|
||||||
modifierKeys = (int32)((uint32)modifierKeys & 0x000000ff);
|
modifierKeys = (int32)((uint32)modifierKeys & kModifiers);
|
||||||
BTextView* textView = dynamic_cast<BTextView*>(CurrentFocus());
|
BTextView* textView = dynamic_cast<BTextView*>(CurrentFocus());
|
||||||
if (bytes[0] == B_LEFT_ARROW && modifierKeys == B_COMMAND_KEY) {
|
if (bytes[0] == B_LEFT_ARROW && modifierKeys == B_COMMAND_KEY) {
|
||||||
if (textView != NULL)
|
if (textView != NULL)
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ static const int32 kUpArrowKey = 0x57;
|
|||||||
static const int32 kRightArrowKey = 0x63;
|
static const int32 kRightArrowKey = 0x63;
|
||||||
static const int32 kDownArrowKey = 0x62;
|
static const int32 kDownArrowKey = 0x62;
|
||||||
|
|
||||||
|
static const int32 kModifiers = B_SHIFT_KEY | B_COMMAND_KEY
|
||||||
|
| B_CONTROL_KEY | B_OPTION_KEY | B_MENU_KEY;
|
||||||
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -135,7 +138,7 @@ StackAndTile::KeyPressed(uint32 what, int32 key, int32 modifiers)
|
|||||||
// switch to and from stacking and snapping mode
|
// switch to and from stacking and snapping mode
|
||||||
bool wasPressed = fSATKeyPressed;
|
bool wasPressed = fSATKeyPressed;
|
||||||
fSATKeyPressed = (what == B_MODIFIERS_CHANGED
|
fSATKeyPressed = (what == B_MODIFIERS_CHANGED
|
||||||
&& (modifiers & 0xff) == B_OPTION_KEY)
|
&& (modifiers & kModifiers) == B_OPTION_KEY)
|
||||||
|| (what == B_UNMAPPED_KEY_DOWN && key == kRightOptionKey);
|
|| (what == B_UNMAPPED_KEY_DOWN && key == kRightOptionKey);
|
||||||
if (wasPressed && !fSATKeyPressed)
|
if (wasPressed && !fSATKeyPressed)
|
||||||
_StopSAT();
|
_StopSAT();
|
||||||
|
|||||||
Reference in New Issue
Block a user