Do not trigger events on EventIcons when button release is outside - #4863
The industry convention for mouse driven menu options is for them to be activated when two conditions are met: * a button down event occurs with the pointer inside the option, and; * a button up event occurs with the pointer inside the option. This issue was already solved on the PaletteMenuItem, but the EventIcon have the same problem. This change add a 'activate' event, that control that the two conditions are meet. The code in Sugar need use this event instead of button-release-event.
This commit is contained in:
parent
9fc5b49329
commit
a19cf9ed27
@ -557,6 +557,10 @@ class EventIcon(Gtk.EventBox):
|
|||||||
cursor-positioned palette invoker.
|
cursor-positioned palette invoker.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
__gsignals__ = {
|
||||||
|
'activate': (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||||
|
}
|
||||||
|
|
||||||
__gtype_name__ = 'SugarEventIcon'
|
__gtype_name__ = 'SugarEventIcon'
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
@ -569,6 +573,7 @@ class EventIcon(Gtk.EventBox):
|
|||||||
self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK |
|
self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK |
|
||||||
Gdk.EventMask.TOUCH_MASK |
|
Gdk.EventMask.TOUCH_MASK |
|
||||||
Gdk.EventMask.BUTTON_RELEASE_MASK)
|
Gdk.EventMask.BUTTON_RELEASE_MASK)
|
||||||
|
self.connect('button-release-event', self.__button_release_event_cb)
|
||||||
for key, value in kwargs.iteritems():
|
for key, value in kwargs.iteritems():
|
||||||
self.set_property(key, value)
|
self.set_property(key, value)
|
||||||
|
|
||||||
@ -756,6 +761,11 @@ class EventIcon(Gtk.EventBox):
|
|||||||
|
|
||||||
self.set_palette(Palette(text))
|
self.set_palette(Palette(text))
|
||||||
|
|
||||||
|
def __button_release_event_cb(self, icon, event):
|
||||||
|
alloc = self.get_allocation()
|
||||||
|
if 0 < event.x < alloc.width and 0 < event.y < alloc.height:
|
||||||
|
self.emit('activate')
|
||||||
|
|
||||||
|
|
||||||
class CanvasIcon(EventIcon):
|
class CanvasIcon(EventIcon):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user