hrev51595 adds 1 changeset to branch 'master'
old head: 164e4f8de42ca0e8a58f27585dab168fdc96b586
new head: a75fc8a7abbaefe8b89283234e00d454a6153314
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=a75fc8a7abba+%5E164e4f8de42c
----------------------------------------------------------------------------
a75fc8a7abba: Keymap: simplification
Call already existing Offset() method instead of reproducing it.
Set fCharsSize in BKeymap::SetToCurrent()
[ John Scipione <jscipione@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev51595
Commit: a75fc8a7abbaefe8b89283234e00d454a6153314
URL: http://cgit.haiku-os.org/haiku/commit/?id=a75fc8a7abba
Author: John Scipione <jscipione@xxxxxxxxx>
Date: Wed Oct 23 23:54:49 2013 UTC
----------------------------------------------------------------------------
1 file changed, 5 insertions(+), 45 deletions(-)
src/kits/shared/Keymap.cpp | 50 +++++-------------------------------------
----------------------------------------------------------------------------
diff --git a/src/kits/shared/Keymap.cpp b/src/kits/shared/Keymap.cpp
index 058195d..65fd7cc 100644
--- a/src/kits/shared/Keymap.cpp
+++ b/src/kits/shared/Keymap.cpp
@@ -122,6 +122,9 @@ BKeymap::SetToCurrent()
memcpy(&fKeys, keys, sizeof(fKeys));
free(keys);
+
+ fCharsSize = sizeof(fChars);
+
return B_OK;
#else // ! __BEOS__
fprintf(stderr, "Unsupported operation on this platform!\n");
@@ -452,58 +455,15 @@ BKeymap::GetModifiedCharacters(const char* in, int32
inModifiers,
if (in == NULL || *in == '\0' || _outList == NULL)
return B_BAD_VALUE;
- int32 inOffset;
- int32 outOffset;
-
for(uint32 i = 0; i < 128; i++) {
- if (inModifiers == 0)
- inOffset = fKeys.normal_map[i];
- else if (inModifiers == B_SHIFT_KEY)
- inOffset = fKeys.shift_map[i];
- else if (inModifiers == B_CONTROL_KEY)
- inOffset = fKeys.control_map[i];
- else if (inModifiers == B_OPTION_KEY)
- inOffset = fKeys.option_map[i];
- else if (inModifiers == (B_OPTION_KEY | B_SHIFT_KEY))
- inOffset = fKeys.option_shift_map[i];
- else if (inModifiers == B_CAPS_LOCK)
- inOffset = fKeys.caps_map[i];
- else if (inModifiers == (B_CAPS_LOCK | B_SHIFT_KEY))
- inOffset = fKeys.caps_shift_map[i];
- else if (inModifiers == (B_OPTION_KEY | B_CAPS_LOCK))
- inOffset = fKeys.option_caps_map[i];
- else if (inModifiers == (B_OPTION_KEY | B_CAPS_LOCK |
B_SHIFT_KEY))
- inOffset = fKeys.option_caps_shift_map[i];
- else
- return B_BAD_VALUE;
-
+ int32 inOffset = Offset(i, inModifiers);
size_t sizeIn = fChars[inOffset++];
if (sizeIn == 0 || memcmp(in, fChars + inOffset, sizeIn) != 0) {
// this character isn't mapped or doesn't match
continue;
}
- if (outModifiers == 0)
- outOffset = fKeys.normal_map[i];
- else if (outModifiers == B_SHIFT_KEY)
- outOffset = fKeys.shift_map[i];
- else if (outModifiers == B_CONTROL_KEY)
- outOffset = fKeys.control_map[i];
- else if (outModifiers == B_OPTION_KEY)
- outOffset = fKeys.option_map[i];
- else if (outModifiers == (B_OPTION_KEY | B_SHIFT_KEY))
- outOffset = fKeys.option_shift_map[i];
- else if (outModifiers == B_CAPS_LOCK)
- outOffset = fKeys.caps_map[i];
- else if (outModifiers == (B_CAPS_LOCK | B_SHIFT_KEY))
- outOffset = fKeys.caps_shift_map[i];
- else if (outModifiers == (B_OPTION_KEY | B_CAPS_LOCK))
- outOffset = fKeys.option_caps_map[i];
- else if (outModifiers == (B_OPTION_KEY | B_CAPS_LOCK |
B_SHIFT_KEY))
- outOffset = fKeys.option_caps_shift_map[i];
- else
- return B_BAD_VALUE;
-
+ int32 outOffset = Offset(i, outModifiers);
size_t sizeOut = fChars[outOffset++];
char* out = (char*)malloc(sizeOut + 1);
if (out == NULL)