[PATCH 2/3] Fixes for the XklWrapper (#895766)
Vratislav Podzimek
vpodzime at redhat.com
Mon Feb 11 14:05:18 UTC 2013
Xkl.ConfigRec is just a snapshot of X server's configuration so it should be
refreshed before we read it (add_layout and remove_layout methods).
XklEngine.get_current_state().group may be out of range of defined groups
(layouts) if the last group (layout) is removed while being activated.
Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
pyanaconda/keyboard.py | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/pyanaconda/keyboard.py b/pyanaconda/keyboard.py
index fc4914a..1a614b4 100755
--- a/pyanaconda/keyboard.py
+++ b/pyanaconda/keyboard.py
@@ -509,7 +509,12 @@ class XklWrapper(object):
groups_names = self._engine.get_groups_names()
self._engine.stop_listen(Xkl.EngineListenModes.TRACK_KEYBOARD_STATE)
- return groups_names[state.group]
+ #BUG?: state.group may be out of range of groups_names if the last
+ # layout in the list was removed while being activated
+ if state.group < len(groups_names):
+ return groups_names[state.group]
+ else:
+ return groups_names[-1]
def activate_default_layout(self):
"""
@@ -539,6 +544,9 @@ class XklWrapper(object):
"""
+ #update self._rec which is just a snapshot of X server's configuration
+ self._rec.get_from_server(self._engine)
+
#we can get 'layout' or 'layout (variant)'
(layout, variant) = _parse_layout_variant(layout)
@@ -565,6 +573,9 @@ class XklWrapper(object):
"""
+ #update self._rec which is just a snapshot of X server's configuration
+ self._rec.get_from_server(self._engine)
+
#we can get 'layout' or 'layout (variant)'
(layout, variant) = _parse_layout_variant(layout)
--
1.7.11.7
More information about the anaconda-patches
mailing list