aboutsummaryrefslogtreecommitdiff
path: root/backends/vkeybd/virtual-keyboard-parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/vkeybd/virtual-keyboard-parser.cpp')
-rw-r--r--backends/vkeybd/virtual-keyboard-parser.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/backends/vkeybd/virtual-keyboard-parser.cpp b/backends/vkeybd/virtual-keyboard-parser.cpp
index 971b0c2bd7..bb575d64c1 100644
--- a/backends/vkeybd/virtual-keyboard-parser.cpp
+++ b/backends/vkeybd/virtual-keyboard-parser.cpp
@@ -134,19 +134,17 @@ bool VirtualKeyboardParser::parserCallback_Mode() {
if (_parseMode == kParseFull) {
// if full parse then add new mode to keyboard
-
if (_keyboard->_modes.contains(name))
return parserError("Mode '%s' has already been defined", name.c_str());
VirtualKeyboard::Mode mode;
mode.name = name;
_keyboard->_modes[name] = mode;
- _mode = &(_keyboard->_modes[name]);
+ }
- if (name == _initialModeName)
- _keyboard->_initialMode = _mode;
- } else
- _mode = &(_keyboard->_modes[name]);
+ _mode = &(_keyboard->_modes[name]);
+ if (name == _initialModeName)
+ _keyboard->_initialMode = _mode;
String resolutions = modeNode->values["resolutions"];
StringTokenizer tok (resolutions, " ,");
@@ -189,6 +187,8 @@ bool VirtualKeyboardParser::parserCallback_Mode() {
_mode->bitmapName.clear();
_mode->image = 0;
_mode->imageMap.removeAllAreas();
+ delete _mode->displayArea;
+ _mode->displayArea = 0;
}
}