Ticket #3992: 0001-Add-the-long-press-signal-to-the-EventIcon.patch

File 0001-Add-the-long-press-signal-to-the-EventIcon.patch, 2.0 KB (added by erikos, 12 years ago)

Patch for the toolit that adds the long-press eventcontroller to the EventIcon

  • src/sugar3/graphics/icon.py

    From 611df56bcbd25a992226c4a71e426100f5d496f7 Mon Sep 17 00:00:00 2001
    From: Simon Schampijer <simon@laptop.org>
    Date: Tue, 16 Oct 2012 15:28:39 +0200
    Subject: [PATCH toolkit-gtk3] Add the long-press signal to the EventIcon
    
    On a long press the Palette is raised
    ---
     src/sugar3/graphics/icon.py | 22 ++++++++++++++++++++++
     1 file changed, 22 insertions(+)
    
    diff --git a/src/sugar3/graphics/icon.py b/src/sugar3/graphics/icon.py
    index 5863118..be86fb0 100644
    a b from gi.repository import GdkPixbuf 
    3232from gi.repository import Rsvg
    3333import cairo
    3434
     35from gi.repository import SugarGestures
     36
    3537from sugar3.graphics import style
    3638from sugar3.graphics.xocolor import XoColor
    3739from sugar3.util import LRU
    class EventIcon(Gtk.EventBox): 
    497499        from sugar3.graphics.palette import CursorInvoker
    498500        self._palette_invoker = CursorInvoker()
    499501        self._palette_invoker.attach(self)
     502
     503        gesture_controller = SugarGestures.LongPressController()
     504        gesture_controller.connect('pressed', self.__long_pressed_cb)
     505        gesture_controller.attach(self,
     506                                  SugarGestures.EventControllerFlags.NONE)
     507        self._recognized_long_press_event = False
     508        self.connect('button-release-event', self.__button_release_cb)
     509
    500510        self.connect('destroy', self.__destroy_cb)
    501511
    502512    def do_draw(self, cr):
    class EventIcon(Gtk.EventBox): 
    678688
    679689        self.set_palette(Palette(text))
    680690
     691    def __long_pressed_cb(self, controller, x, y):
     692        self._recognized_long_press_event = True
     693        if self.props.palette:
     694            self.props.palette.popup(immediate=True, state=1)
     695
     696    def __button_release_cb(self, widget, event):
     697        if self._recognized_long_press_event:
     698            self._recognized_long_press_event = False
     699            return True
     700        else:
     701            return False
     702
    681703
    682704class CanvasIcon(EventIcon):
    683705    """