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 <josh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock
2012-03-13 13:06:45 -07:00
committed by Richard Purdie
parent 854f3a521a
commit d8b3caa085

View File

@@ -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)