Simple scheme for hidding ToolbarBox subpalettes #1300

This commit is contained in:
Aleksey Lim 2009-09-09 17:11:58 +00:00
parent ff2dd6cc0e
commit c69bbe3341

View File

@ -188,7 +188,7 @@ class _ToolbarPalette(PaletteWindow):
PaletteWindow.__init__(self, **kwargs) PaletteWindow.__init__(self, **kwargs)
self.toolbar_box = None self.toolbar_box = None
self.set_border_width(0) self.set_border_width(0)
self._focus = 0 self._has_focus = False
group = palettegroup.get_group('default') group = palettegroup.get_group('default')
group.connect('popdown', self.__group_popdown_cb) group.connect('popdown', self.__group_popdown_cb)
@ -196,26 +196,23 @@ class _ToolbarPalette(PaletteWindow):
def on_invoker_enter(self): def on_invoker_enter(self):
PaletteWindow.on_invoker_enter(self) PaletteWindow.on_invoker_enter(self)
self._handle_focus(+1) self._set_focus(True)
def on_invoker_leave(self): def on_invoker_leave(self):
PaletteWindow.on_invoker_leave(self) PaletteWindow.on_invoker_leave(self)
self._handle_focus(-1) self._set_focus(False)
def on_enter(self, event): def on_enter(self, event):
PaletteWindow.on_enter(self, event) PaletteWindow.on_enter(self, event)
self._handle_focus(+1) self._set_focus(True)
def on_leave(self, event): def on_leave(self, event):
PaletteWindow.on_enter(self, event) PaletteWindow.on_enter(self, event)
self._handle_focus(-1) self._set_focus(False)
def _handle_focus(self, delta): def _set_focus(self, new_focus):
self._focus += delta self._has_focus = new_focus
if self._focus not in (0, 1): if not self._has_focus:
logging.error('_Palette._focus=%s not in (0, 1)', self._focus)
if self._focus == 0:
group = palettegroup.get_group('default') group = palettegroup.get_group('default')
if not group.is_up(): if not group.is_up():
self.popdown() self.popdown()
@ -235,7 +232,7 @@ class _ToolbarPalette(PaletteWindow):
PaletteWindow.popup(self, immediate) PaletteWindow.popup(self, immediate)
def __group_popdown_cb(self, group): def __group_popdown_cb(self, group):
if self._focus == 0: if not self._has_focus:
self.popdown(immediate=True) self.popdown(immediate=True)