@@ -164,7 +164,7 @@ KeypadDrawContext::KeypadDrawContext(int charWidth, int charHeight) :
164164
165165const KeypadImage *KeypadDrawContext::getImage (const RawKey &key) const {
166166 const KeypadImage *result;
167- switch (key. _lower ) {
167+ switch (getKey ( key) ) {
168168 case K_CUT: result = &_cutImage; break ;
169169 case K_COPY: result = &_copyImage; break ;
170170 case K_PASTE: result = &_pasteImage; break ;
@@ -188,6 +188,18 @@ void KeypadDrawContext::toggle() {
188188 _keySet = static_cast <Keyset>((_keySet + 1 ) % kSize );
189189}
190190
191+ KeyCode KeypadDrawContext::getKey (RawKey key) const {
192+ KeyCode keyCode;
193+ switch (_keySet) {
194+ case kLower : keyCode = key._lower ; break ;
195+ case kUpper : keyCode = key._upper ; break ;
196+ case kNumber : keyCode = key._number ; break ;
197+ case kSymbol : keyCode = key._symbol ; break ;
198+ case kSize : keyCode = K_NULL; break ;
199+ }
200+ return keyCode;
201+ }
202+
191203//
192204// Key
193205//
@@ -210,14 +222,7 @@ int Key::color(const KeypadTheme *theme) const {
210222
211223char Key::getKey (const KeypadDrawContext *context) const {
212224 char result;
213- KeyCode keyCode;
214-
215- switch (context->_keySet ) {
216- case kLower : keyCode = _key._lower ; break ;
217- case kUpper : keyCode = _key._upper ; break ;
218- case kNumber : keyCode = _key._number ; break ;
219- case kSymbol : keyCode = _key._symbol ; break ;
220- }
225+ KeyCode keyCode = context->getKey (_key);
221226 switch (keyCode) {
222227 case K_EXT1: result = (char )164 ; break ;
223228 case K_EXT2: result = (char )172 ; break ;
@@ -305,7 +310,7 @@ void Key::onClick(const KeypadDrawContext *context) const {
305310 auto *event = new MAEvent ();
306311 event->type = EVENT_TYPE_KEY_PRESSED;
307312 event->nativeKey = 0 ;
308- switch (_key. _lower ) {
313+ switch (context-> getKey ( _key) ) {
309314 case K_BACKSPACE:
310315 event->key = SB_KEY_BACKSPACE;
311316 break ;
@@ -415,7 +420,7 @@ void Keypad::layout(int x, int y, int w, int h) {
415420 }
416421 Key *key = _keys[index++];
417422 int keyWidth = keyW;
418- if (key->_key ._lower == K_ENTER || key-> _key . _lower == K_HELP || key-> _key . _lower == K_BACKSPACE ) {
423+ if (isRightMargin ( key->_key ._lower ) ) {
419424 keyWidth = _width - xPos;
420425 } else if (row == 0 ) {
421426 keyWidth = _width / cols;
0 commit comments