[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