[Pkg-sugar-commit] [sugar-browse-activity] 11/18: add EventListener for 'mouseout' to popdown palette #10407
Jonas Smedegaard
dr at jones.dk
Mon Apr 20 09:47:13 UTC 2015
This is an automated email from the git hooks/post-receive script.
js pushed a commit to tag 108.1
in repository sugar-browse-activity.
commit b6c837134e51c1e799904fc86b40fe5302e9fd74
Author: Simon Schampijer <simon at schampijer.de>
Date: Thu Oct 21 18:44:25 2010 +0200
add EventListener for 'mouseout' to popdown palette #10407
from SL #1314
---
palettes.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/palettes.py b/palettes.py
index 1f3bfc2..d191b49 100644
--- a/palettes.py
+++ b/palettes.py
@@ -20,6 +20,7 @@ import urlparse
from gettext import gettext as _
import gtk
+import gobject
import xpcom
from xpcom import components
from xpcom.components import interfaces
@@ -32,6 +33,23 @@ from sugar.activity import activity
import downloadmanager
+class MouseOutListener(gobject.GObject):
+ _com_interfaces_ = interfaces.nsIDOMEventListener
+
+ __gsignals__ = {
+ 'mouse-out': (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ ([]))
+ }
+
+ def __init__(self, target):
+ gobject.GObject.__init__(self)
+ self._target = target
+
+ def handleEvent(self, event):
+ self.emit('mouse-out')
+
+
class ContentInvoker(Invoker):
_com_interfaces_ = interfaces.nsIDOMEventListener
@@ -39,6 +57,8 @@ class ContentInvoker(Invoker):
Invoker.__init__(self)
self._position_hint = self.AT_CURSOR
self._browser = browser
+ self._mouseout_listener = None
+ self._popdown_handler_id = None
def get_default_position(self):
return self.AT_CURSOR
@@ -54,6 +74,7 @@ class ContentInvoker(Invoker):
return
target = event.target
+
if target.tagName.lower() == 'a':
if target.firstChild:
@@ -76,6 +97,30 @@ class ContentInvoker(Invoker):
self.palette = ImagePalette(title, target.src, target.ownerDocument)
self.notify_right_click()
+ else:
+ return
+
+ if self._popdown_handler_id is not None:
+ self._popdown_handler_id = self.palette.connect( \
+ 'popdown', self.__palette_popdown_cb)
+
+ self._mouseout_listener = MouseOutListener(target)
+ wrapper = xpcom.server.WrapObject(self._mouseout_listener,
+ interfaces.nsIDOMEventListener)
+ target.addEventListener('mouseout', wrapper, False)
+ self._mouseout_listener.connect('mouse-out', self.__moved_out_cb)
+
+ def __moved_out_cb(self, listener):
+ self.palette.popdown()
+
+ def __palette_popdown_cb(self, palette):
+ if self._mouseout_listener is not None:
+ wrapper = xpcom.server.WrapObject(self._mouseout_listener,
+ interfaces.nsIDOMEventListener)
+ self._mouseout_listener._target.removeEventListener('mouseout',
+ wrapper, False)
+ del self._mouseout_listener
+
class LinkPalette(Palette):
def __init__(self, browser, title, url, owner_document):
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-sugar/sugar-browse-activity.git
More information about the pkg-sugar-commit
mailing list