From 923217b4ed5aeca6950d0d56b0baa88efb13eac0 Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Wed, 11 Feb 2009 14:23:43 +0800 Subject: [PATCH] Make languagebar extend to left. --- ui/gtk/handle.py | 13 +++++++++++++ ui/gtk/languagebar.py | 19 +++++++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/ui/gtk/handle.py b/ui/gtk/handle.py index 327a018..4f4c625 100644 --- a/ui/gtk/handle.py +++ b/ui/gtk/handle.py @@ -24,6 +24,17 @@ import gtk.gdk as gdk import gobject class Handle(gtk.EventBox): + __gsignals__ = { + "move-begin" : ( + gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + ()), + "move-end" : ( + gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + ()), + } + def __init__ (self): super(Handle, self).__init__() self.set_visible_window(False) @@ -51,6 +62,7 @@ class Handle(gtk.EventBox): x, y = toplevel.get_position() self.__press_pos = event.x_root - x, event.y_root - y self.window.set_cursor(gdk.Cursor(gdk.FLEUR)) + self.emit("move-begin") return True return False @@ -60,6 +72,7 @@ class Handle(gtk.EventBox): del self.__press_pos del self.__workarea self.window.set_cursor(gdk.Cursor(gdk.LEFT_PTR)) + self.emit("move-end") return True return False diff --git a/ui/gtk/languagebar.py b/ui/gtk/languagebar.py index 7a8a106..3546ef7 100644 --- a/ui/gtk/languagebar.py +++ b/ui/gtk/languagebar.py @@ -60,22 +60,25 @@ class LanguageBar(gtk.Toolbar): self.__properties = [] self.__toplevel = gtk.Window(gtk.WINDOW_POPUP) + self.__toplevel.connect("size-allocate", self.__toplevel_size_allocate_cb) self.__toplevel.add(self) root = gdk.get_default_root_window() try: workarea = root.property_get("_NET_WORKAREA")[2] - right, bottom = workarea[2], workarea[3] + right, bottom = workarea[0] + workarea[2], workarea[1] + workarea[3] except: right, bottom = root.get_size() - self.__position = right - 200, bottom - 40 + self.__position = right - 20, bottom - 20 self.__toplevel.move(*self.__position) def __create_ui(self): # create move handle self.__handle = gtk.ToolItem() - self.__handle.add(Handle()) + handle = Handle() + self.__handle.add(handle) self.insert(self.__handle, -1) + handle.connect("move-end", self.__handle_move_end_cb) # create input methods menu prop = ibus.Property(key = "", type = ibus.PROP_TYPE_TOGGLE, icon = "ibus", tooltip = _("Switch engine")) @@ -96,9 +99,17 @@ class LanguageBar(gtk.Toolbar): def __im_menu_deactivate_cb(self, menu): self.__im_menu.set_active(False) + def __handle_move_end_cb(self, handle): + x, y = self.__toplevel.get_position() + w, h = self.__toplevel.get_size() + self.__position = x + w, y + h + + def __toplevel_size_allocate_cb(self, toplevel, allocation): + x, y = self.__position + self.__toplevel.move(x - allocation.width, y - allocation.height) + def __remove_properties(self): # reset all properties - map(lambda i: i.destroy(), self.__properties) self.__properties = [] -- 2.7.4