Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Schampijer <simon@laptop.org>2012-10-22 16:42:30 (GMT)
committer Simon Schampijer <simon@laptop.org>2012-10-23 09:28:15 (GMT)
commit1a8f89226b4f979000d80edc7123b7d22b23dc91 (patch)
treed3fb305f98a4bf929512594c8caae9865302756a
parent5ce027390081b93b9882d31ffd579956b1220781 (diff)
Add toggle_palette property for Palette invoker, SL #4065
The property does specify whether the invoker will popup/popdown the Palette on button left click/touch tap. It defaults to False. In the toolbutton we add a property if the tooltip should be popped down on a click, this is set to true to have the same behavior as before. Signed-off-by: Simon Schampijer <simon@laptop.org> Acked-by: Manuel QuiƱones <manuq@laptop.org>
-rw-r--r--src/sugar3/graphics/palette.py3
-rw-r--r--src/sugar3/graphics/palettewindow.py36
-rw-r--r--src/sugar3/graphics/toolbutton.py14
3 files changed, 47 insertions, 6 deletions
diff --git a/src/sugar3/graphics/palette.py b/src/sugar3/graphics/palette.py
index 284c84b..fe4440b 100644
--- a/src/sugar3/graphics/palette.py
+++ b/src/sugar3/graphics/palette.py
@@ -179,9 +179,6 @@ class Palette(PaletteWindow):
PaletteWindow._setup_widget(self)
self._widget.connect('destroy', self.__destroy_cb)
- def _invoker_right_click_cb(self, invoker):
- self.popup(immediate=True, state=self.SECONDARY)
-
def __destroy_cb(self, palette):
self._secondary_anim.stop()
self.popdown(immediate=True)
diff --git a/src/sugar3/graphics/palettewindow.py b/src/sugar3/graphics/palettewindow.py
index 4d45dbf..3be7fab 100644
--- a/src/sugar3/graphics/palettewindow.py
+++ b/src/sugar3/graphics/palettewindow.py
@@ -510,6 +510,8 @@ class PaletteWindow(GObject.GObject):
'mouse-leave', self._invoker_mouse_leave_cb))
self._invoker_hids.append(self._invoker.connect(
'right-click', self._invoker_right_click_cb))
+ self._invoker_hids.append(self._invoker.connect(
+ 'toggle-state', self._invoker_toggle_state_cb))
def get_invoker(self):
return self._invoker
@@ -626,7 +628,13 @@ class PaletteWindow(GObject.GObject):
self.on_invoker_leave()
def _invoker_right_click_cb(self, invoker):
- self.popup(immediate=True)
+ self.popup(immediate=True, state=1)
+
+ def _invoker_toggle_state_cb(self, invoker):
+ if self.is_up():
+ self.popdown(immediate=True)
+ else:
+ self.popup(immediate=True, state=1)
def __enter_notify_cb(self, widget):
self.on_enter()
@@ -706,6 +714,7 @@ class Invoker(GObject.GObject):
'mouse-enter': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'mouse-leave': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'right-click': (GObject.SignalFlags.RUN_FIRST, None, ([])),
+ 'toggle-state': (GObject.SignalFlags.RUN_FIRST, None, ([])),
'focus-out': (GObject.SignalFlags.RUN_FIRST, None, ([])),
}
@@ -731,6 +740,7 @@ class Invoker(GObject.GObject):
self._cursor_y = -1
self._palette = None
self._cache_palette = True
+ self._toggle_palette = False
def attach(self, parent):
self.parent = parent
@@ -917,6 +927,10 @@ class Invoker(GObject.GObject):
self._ensure_palette_exists()
self.emit('right-click')
+ def notify_toggle_state(self):
+ self._ensure_palette_exists()
+ self.emit('toggle-state')
+
def get_palette(self):
return self._palette
@@ -953,6 +967,18 @@ class Invoker(GObject.GObject):
to True.
"""
+ def get_toggle_palette(self):
+ return self._toggle_palette
+
+ def set_toggle_palette(self, toggle_palette):
+ self._toggle_palette = toggle_palette
+
+ toggle_palette = GObject.property(type=object, setter=set_toggle_palette,
+ getter=get_toggle_palette)
+ """Whether the invoker will popup/popdown the Palette on
+ button left click/touch tap. Defaults to False.
+ """
+
def __palette_popdown_cb(self, palette):
if not self.props.cache_palette:
self.set_palette(None)
@@ -1040,7 +1066,10 @@ class WidgetInvoker(Invoker):
self.notify_mouse_leave()
def __button_release_event_cb(self, widget, event):
- if event.button == 3:
+ if event.button == 1:
+ if self.props.toggle_palette:
+ self.notify_toggle_state()
+ elif event.button == 3:
self.notify_right_click()
return True
else:
@@ -1115,6 +1144,9 @@ class CursorInvoker(Invoker):
return False
def __button_release_event_cb(self, button, event):
+ if event.button == 1:
+ if self.props.toggle_palette:
+ self.notify_toggle_state()
if event.button == 3:
self.notify_right_click()
return True
diff --git a/src/sugar3/graphics/toolbutton.py b/src/sugar3/graphics/toolbutton.py
index 265153d..522d653 100644
--- a/src/sugar3/graphics/toolbutton.py
+++ b/src/sugar3/graphics/toolbutton.py
@@ -67,6 +67,7 @@ class ToolButton(Gtk.ToolButton):
GObject.GObject.__init__(self, **kwargs)
+ self._hide_tooltip_on_click = True
self._palette_invoker.attach_tool(self)
if icon_name:
@@ -104,6 +105,17 @@ class ToolButton(Gtk.ToolButton):
tooltip = GObject.property(type=str, setter=set_tooltip,
getter=get_tooltip)
+ def get_hide_tooltip_on_click(self):
+ return self._hide_tooltip_on_click
+
+ def set_hide_tooltip_on_click(self, hide_tooltip_on_click):
+ if self._hide_tooltip_on_click != hide_tooltip_on_click:
+ self._hide_tooltip_on_click = hide_tooltip_on_click
+
+ hide_tooltip_on_click = GObject.property(
+ type=bool, default=True, getter=get_hide_tooltip_on_click,
+ setter=set_hide_tooltip_on_click)
+
def set_accelerator(self, accelerator):
self._accelerator = accelerator
setup_accelerator(self)
@@ -168,5 +180,5 @@ class ToolButton(Gtk.ToolButton):
return False
def do_clicked(self):
- if self.palette:
+ if self._hide_tooltip_on_click and self.palette:
self.palette.popdown(True)