summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorPeng Huang <phuang@phuang.nay.redhat.com>2009-02-11 14:23:43 +0800
committerPeng Huang <phuang@phuang.nay.redhat.com>2009-02-11 14:23:43 +0800
commit923217b4ed5aeca6950d0d56b0baa88efb13eac0 (patch)
tree6b60c964a0610bbe6e63ad25e492998b6487e0f3 /ui
parente24356351f817c873273d11a2efbdc4e47189fff (diff)
downloadibus-923217b4ed5aeca6950d0d56b0baa88efb13eac0.tar.gz
ibus-923217b4ed5aeca6950d0d56b0baa88efb13eac0.tar.xz
ibus-923217b4ed5aeca6950d0d56b0baa88efb13eac0.zip
Make languagebar extend to left.
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk/handle.py13
-rw-r--r--ui/gtk/languagebar.py19
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 = []