[prev in list] [next in list] [prev in thread] [next in thread]
List: haiku-commits
Subject: [haiku-commits] r42521 - haiku/trunk/src/servers/input
From: pulkomandy () pulkomandy ! ath ! cx
Date: 2011-07-31 14:45:55
Message-ID: 20110731144556.4FB2E681F0 () vmsvn ! haiku-os ! org
[Download RAW message or body]
Author: pulkomandy
Date: 2011-07-31 16:45:55 +0200 (Sun, 31 Jul 2011)
New Revision: 42521
Changeset: https://dev.haiku-os.org/changeset/42521
Ticket: https://dev.haiku-os.org/ticket/6468
Modified:
haiku/trunk/src/servers/input/InputServer.cpp
Log:
* Don't eat alt+space if there is only one input method available (the shortcut is \
meant to switch input methods) Makes it useable in applications and less confusing. \
Fixes #6468.
Modified: haiku/trunk/src/servers/input/InputServer.cpp
===================================================================
--- haiku/trunk/src/servers/input/InputServer.cpp 2011-07-31 02:15:21 UTC (rev 42520)
+++ haiku/trunk/src/servers/input/InputServer.cpp 2011-07-31 14:45:55 UTC (rev 42521)
@@ -1016,12 +1016,17 @@
gInputMethodListLocker.Lock();
int32 index = gInputMethodList.IndexOf(fActiveMethod);
+ int32 oldIndex = index;
+
index += (direction ? 1 : -1);
if (index < -1)
index = gInputMethodList.CountItems() - 1;
if (index >= gInputMethodList.CountItems())
index = -1;
+
+ if (index == oldIndex)
+ return B_BAD_INDEX;
BInputServerMethod *method = &gKeymapMethod;
@@ -1460,6 +1465,9 @@
// we scan for Alt+Space key down events which means we change
// to next input method
// (pressing "shift" will let us switch to the previous method)
+
+ // If there is only one input method, SetNextMethod will return
+ // B_BAD_INDEX and the event will be forwarded to the user.
PRINT(("SanitizeEvents: %lx, %x\n", fKeyInfo.modifiers,
fKeyInfo.key_states[KEY_Spacebar >> 3]));
@@ -1470,12 +1478,13 @@
if (((fKeyInfo.modifiers & B_COMMAND_KEY) != 0 && byte == ' ')
|| byte == B_HANKAKU_ZENKAKU) {
- SetNextMethod(!(fKeyInfo.modifiers & B_SHIFT_KEY));
-
- // this event isn't sent to the user
- events.RemoveItemAt(index);
- delete event;
- continue;
+ if (SetNextMethod(!(fKeyInfo.modifiers & B_SHIFT_KEY)) == B_OK)
+ {
+ // this event isn't sent to the user
+ events.RemoveItemAt(index);
+ delete event;
+ continue;
+ }
}
break;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic