[bitbake-devel] [PATCH 4/6] ui/crumbs/persistenttooltip: try to reflect WM close button position
Xu, Dongxiao
dongxiao.xu at intel.com
Tue Mar 20 05:59:09 UTC 2012
On Mon, 2012-03-19 at 17:18 -0700, Joshua Lock wrote:
> 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.
>
> Signed-off-by: Joshua Lock <josh at linux.intel.com>
Acked-by: Dongxiao Xu <dongxiao.xu at intel.com>
> ---
> lib/bb/ui/crumbs/persistenttooltip.py | 24 +++++++++++++++++++++++-
> 1 files changed, 23 insertions(+), 1 deletions(-)
>
> diff --git a/lib/bb/ui/crumbs/persistenttooltip.py b/lib/bb/ui/crumbs/persistenttooltip.py
> index 0167363..bae697e 100644
> --- a/lib/bb/ui/crumbs/persistenttooltip.py
> +++ b/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)
>
More information about the bitbake-devel
mailing list