From d8b3caa085bad90f021e5102d43deaf653e04c1d Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Tue, 13 Mar 2012 13:06:45 -0700 Subject: ui/crumbs/persistenttooltip: try to reflect WM close button position When the user is running a desktop where the close button is on the left we try to detect that and position the tooltip close button appropriately. Where we can't easily determine this we default to placing the close button on the right. Tested on Ubuntu/Unity and Fedora/Gnome Shell. (Bitbake rev: 09147098a63c33dc05dc39b7fe4da4df8e2dbd4c) Signed-off-by: Joshua Lock Signed-off-by: Richard Purdie --- bitbake/lib/bb/ui/crumbs/persistenttooltip.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'bitbake') diff --git a/bitbake/lib/bb/ui/crumbs/persistenttooltip.py b/bitbake/lib/bb/ui/crumbs/persistenttooltip.py index 0167363380..bae697e0d7 100644 --- a/bitbake/lib/bb/ui/crumbs/persistenttooltip.py +++ b/bitbake/lib/bb/ui/crumbs/persistenttooltip.py @@ -20,6 +20,10 @@ import gobject import gtk +try: + import gconf +except: + pass class PersistentTooltip(gtk.Window): """ @@ -34,6 +38,21 @@ class PersistentTooltip(gtk.Window): def __init__(self, markup): gtk.Window.__init__(self, gtk.WINDOW_POPUP) + # The placement of the close button on the tip should reflect how the + # window manager of the users system places close buttons. Try to read + # the metacity gconf key to determine whether the close button is on the + # left or the right. + # In the case that we can't determine the users configuration we default + # to close buttons being on the right. + __button_right = True + try: + client = gconf.client_get_default() + order = client.get_string("/apps/metacity/general/button_layout") + if order and order.endswith(":"): + __button_right = False + except NameError: + pass + # We need to ensure we're only shown once self.shown = False @@ -65,7 +84,10 @@ class PersistentTooltip(gtk.Window): self.button.set_can_default(True) self.button.grab_focus() self.button.show() - hbox.pack_end(self.button, False, False, 0) + if __button_right: + hbox.pack_end(self.button, False, False, 0) + else: + hbox.pack_start(self.button, False, False, 0) self.set_default(self.button) -- cgit v1.2.3-54-g00ecf