Ticket #4065: toolkit_toggle_state.patch

File toolkit_toggle_state.patch, 3.9 KB (added by erikos, 11 years ago)

Adding a toggle-palette property to the invoker

  • src/sugar3/graphics/palette.py

    diff --git a/src/sugar3/graphics/palette.py b/src/sugar3/graphics/palette.py
    index 284c84b..fe4440b 100644
    a b class Palette(PaletteWindow): 
    179179        PaletteWindow._setup_widget(self)
    180180        self._widget.connect('destroy', self.__destroy_cb)
    181181
    182     def _invoker_right_click_cb(self, invoker):
    183         self.popup(immediate=True, state=self.SECONDARY)
    184 
    185182    def __destroy_cb(self, palette):
    186183        self._secondary_anim.stop()
    187184        self.popdown(immediate=True)
  • src/sugar3/graphics/palettewindow.py

    diff --git a/src/sugar3/graphics/palettewindow.py b/src/sugar3/graphics/palettewindow.py
    index 4d45dbf..3be7fab 100644
    a b class PaletteWindow(GObject.GObject): 
    510510                'mouse-leave', self._invoker_mouse_leave_cb))
    511511            self._invoker_hids.append(self._invoker.connect(
    512512                'right-click', self._invoker_right_click_cb))
     513            self._invoker_hids.append(self._invoker.connect(
     514                'toggle-state', self._invoker_toggle_state_cb))
    513515
    514516    def get_invoker(self):
    515517        return self._invoker
    class PaletteWindow(GObject.GObject): 
    626628        self.on_invoker_leave()
    627629
    628630    def _invoker_right_click_cb(self, invoker):
    629         self.popup(immediate=True)
     631        self.popup(immediate=True, state=1)
     632
     633    def _invoker_toggle_state_cb(self, invoker):
     634        if self.is_up():
     635            self.popdown(immediate=True)
     636        else:
     637            self.popup(immediate=True, state=1)
    630638
    631639    def __enter_notify_cb(self, widget):
    632640        self.on_enter()
    class Invoker(GObject.GObject): 
    706714        'mouse-enter': (GObject.SignalFlags.RUN_FIRST, None, ([])),
    707715        'mouse-leave': (GObject.SignalFlags.RUN_FIRST, None, ([])),
    708716        'right-click': (GObject.SignalFlags.RUN_FIRST, None, ([])),
     717        'toggle-state': (GObject.SignalFlags.RUN_FIRST, None, ([])),
    709718        'focus-out': (GObject.SignalFlags.RUN_FIRST, None, ([])),
    710719    }
    711720
    class Invoker(GObject.GObject): 
    731740        self._cursor_y = -1
    732741        self._palette = None
    733742        self._cache_palette = True
     743        self._toggle_palette = False
    734744
    735745    def attach(self, parent):
    736746        self.parent = parent
    class Invoker(GObject.GObject): 
    917927        self._ensure_palette_exists()
    918928        self.emit('right-click')
    919929
     930    def notify_toggle_state(self):
     931        self._ensure_palette_exists()
     932        self.emit('toggle-state')
     933
    920934    def get_palette(self):
    921935        return self._palette
    922936
    class Invoker(GObject.GObject): 
    953967    to True.
    954968    """
    955969
     970    def get_toggle_palette(self):
     971        return self._toggle_palette
     972
     973    def set_toggle_palette(self, toggle_palette):
     974        self._toggle_palette = toggle_palette
     975
     976    toggle_palette = GObject.property(type=object, setter=set_toggle_palette,
     977                                      getter=get_toggle_palette)
     978    """Whether the invoker will popup/popdown the Palette on
     979    button left click/touch tap. Defaults to False.
     980    """
     981
    956982    def __palette_popdown_cb(self, palette):
    957983        if not self.props.cache_palette:
    958984            self.set_palette(None)
    class WidgetInvoker(Invoker): 
    10401066            self.notify_mouse_leave()
    10411067
    10421068    def __button_release_event_cb(self, widget, event):
    1043         if event.button == 3:
     1069        if event.button == 1:
     1070            if self.props.toggle_palette:
     1071                self.notify_toggle_state()
     1072        elif event.button == 3:
    10441073            self.notify_right_click()
    10451074            return True
    10461075        else:
    class CursorInvoker(Invoker): 
    11151144        return False
    11161145
    11171146    def __button_release_event_cb(self, button, event):
     1147        if event.button == 1:
     1148            if self.props.toggle_palette:
     1149                self.notify_toggle_state()
    11181150        if event.button == 3:
    11191151            self.notify_right_click()
    11201152            return True