def load_layout(self, layout_filename, color_scheme_filename): _logger.info("Loading keyboard layout from " + layout_filename) if (color_scheme_filename): _logger.info("Loading color scheme from " + color_scheme_filename) if self.keyboard: self.keyboard.cleanup() # Fix for LP: #897678, onBoard shifts after changing Language Layout # The idea is to no longer recreate the keyboard widget and # instead just update its contents. This solves a couple of # weird positioning bugs when the keyboard widget changes while # the main window is hidden. # This is messy but works for now. Trunk will have to replace # KeyboardSVG with proper widget-independent loading code. vk = self.get_vk() keyboard = KeyboardSVG(vk, layout_filename, color_scheme_filename) if not self.keyboard: self.keyboard = keyboard layout, color_scheme = keyboard.layout, keyboard.color_scheme keyboard.cleanup() if self.keyboard and keyboard: self.keyboard.vk = vk self.keyboard.layout = layout self.keyboard.color_scheme = color_scheme self.keyboard.initial_update() self.keyboard.update_ui() self.keyboard.redraw() if self._window and self._window.icp: self._window.icp.queue_draw()