Ticket #1102: dslo1102_2.patch

File dslo1102_2.patch, 3.8 KB (added by sayamindu, 15 years ago)

Revised patch

  • src/sugar/graphics/window.py

    diff --git a/src/sugar/graphics/window.py b/src/sugar/graphics/window.py
    index e82b3b9..f58fe90 100644
    a b import gtk 
    2424
    2525from sugar.graphics.icon import Icon
    2626
     27_UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT = 2
     28
    2729class UnfullscreenButton(gtk.Window):
    2830
    2931    def __init__(self):
    class Window(gtk.Window): 
    8284        self.connect('realize', self.__window_realize_cb)
    8385        self.connect('window-state-event', self.__window_state_event_cb)
    8486        self.connect('key-press-event', self.__key_press_cb)
    85        
     87
    8688        self.toolbox = None
    8789        self._alerts = []
    8890        self.canvas = None
    class Window(gtk.Window): 
    9698        self._event_box = gtk.EventBox()
    9799        self._hbox.pack_start(self._event_box)
    98100        self._event_box.show()
    99        
     101        self._event_box.add_events(gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.POINTER_MOTION_MASK)
     102        self._event_box.connect('motion-notify-event', self.__motion_notify_cb)
     103
    100104        self.add(self._vbox)
    101105        self._vbox.show()
    102106
    class Window(gtk.Window): 
    105109        self._unfullscreen_button.set_transient_for(self)
    106110        self._unfullscreen_button.connect_button_press(
    107111            self.__unfullscreen_button_pressed)
     112        self._unfullscreen_button_timeout_id = None
    108113
    109114    def set_canvas(self, canvas):
    110115        if self.canvas:
    class Window(gtk.Window): 
    179184            if self.props.enable_fullscreen_mode:
    180185                self._unfullscreen_button.show()
    181186
     187                if self._unfullscreen_button_timeout_id is not None:
     188                    gobject.source_remove(self._unfullscreen_button_timeout_id)
     189                    self._unfullscreen_button_timeout_id = None
     190
     191                self._unfullscreen_button_timeout_id = \
     192                    gobject.timeout_add_seconds( \
     193                        _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \
     194                        self.__unfullscreen_button_timeout_cb)
     195
    182196        else:
    183197            if self.toolbox is not None:
    184198                self.toolbox.show()
    class Window(gtk.Window): 
    189203            if self.props.enable_fullscreen_mode:
    190204                self._unfullscreen_button.hide()
    191205
     206                if self._unfullscreen_button_timeout_id:
     207                    gobject.source_remove(self._unfullscreen_button_timeout_id)
     208                    self._unfullscreen_button_timeout_id = None
     209
    192210    def __key_press_cb(self, widget, event):
    193211        key = gtk.gdk.keyval_name(event.keyval)
    194212        if event.state & gtk.gdk.MOD1_MASK:
    class Window(gtk.Window): 
    204222    def __unfullscreen_button_pressed(self, widget, event):
    205223        self.unfullscreen()
    206224
     225    def __motion_notify_cb(self, widget, event):
     226        if self._is_fullscreen and self.props.enable_fullscreen_mode:
     227            if not self._unfullscreen_button.props.visible:
     228                self._unfullscreen_button.show()
     229            else:
     230                # Reset the timer
     231                if self._unfullscreen_button_timeout_id is not None:
     232                    gobject.source_remove(self._unfullscreen_button_timeout_id)
     233                    self._unfullscreen_button_timeout_id = None
     234
     235                self._unfullscreen_button_timeout_id = \
     236                    gobject.timeout_add_seconds( \
     237                        _UNFULLSCREEN_BUTTON_VISIBILITY_TIMEOUT, \
     238                        self.__unfullscreen_button_timeout_cb)
     239        return True
     240
     241    def __unfullscreen_button_timeout_cb(self):
     242        self._unfullscreen_button.hide()
     243        self._unfullscreen_button_timeout_id = None
     244        return False
     245
    207246    def set_enable_fullscreen_mode(self, enable_fullscreen_mode):
    208247        self._enable_fullscreen_mode = enable_fullscreen_mode
    209248