From ed44862b6ec708d5c8a50c95e84286ca7381fd02 Mon Sep 17 00:00:00 2001
From: Manuel Kaufmann <humitos@gmail.com>
Date: Tue, 2 Oct 2012 12:04:28 -0300
Subject: [PATCH Browse] Show palette when hover over links SL #3967
When the user hovers over a link the same palette that when he/she
clicks over a link is shown.
Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
---
palettes.py | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/palettes.py b/palettes.py
index bbebce8..6fbd750 100644
a
|
b
|
from gettext import gettext as _ |
24 | 24 | |
25 | 25 | from gi.repository import Gtk |
26 | 26 | from gi.repository import Gdk |
| 27 | from gi.repository import GObject |
27 | 28 | from gi.repository import WebKit |
28 | 29 | |
29 | 30 | from sugar3.graphics.palette import Palette, Invoker |
… |
… |
class ContentInvoker(Invoker): |
38 | 39 | self._position_hint = self.AT_CURSOR |
39 | 40 | self._browser = browser |
40 | 41 | self._browser.connect('button-press-event', self.__button_press_cb) |
| 42 | self._browser.connect('hovering-over-link', |
| 43 | self.__hovering_over_link_cb) |
41 | 44 | self.attach(self._browser) |
42 | 45 | |
| 46 | self._hovering = False |
| 47 | self._hovering_timer = None |
| 48 | |
43 | 49 | def get_default_position(self): |
44 | 50 | return self.AT_CURSOR |
45 | 51 | |
… |
… |
class ContentInvoker(Invoker): |
70 | 76 | def get_toplevel(self): |
71 | 77 | return None |
72 | 78 | |
| 79 | def __hovering_over_link_cb(self, web_view, title, uri): |
| 80 | if not self._hovering: |
| 81 | self._hovering = True |
| 82 | self._hovering_timer = GObject.timeout_add( |
| 83 | 500, self._show_link_palette, web_view, title, uri) |
| 84 | else: |
| 85 | self._hovering = False |
| 86 | GObject.source_remove(self._hovering_timer) |
| 87 | self._hovering_timer = None |
| 88 | |
| 89 | def _show_link_palette(self, browser, title, uri): |
| 90 | self.palette = LinkPalette(self._browser, title, uri, None) |
| 91 | self.palette.popup(immediate=True, state=self.palette.SECONDARY) |
| 92 | return False |
| 93 | |
73 | 94 | def __button_press_cb(self, browser, event): |
74 | 95 | if event.button != 3: |
75 | 96 | return False |