Ticket #3967: 0001-Show-palette-when-hover-over-links-SL-3967.patch

File 0001-Show-palette-when-hover-over-links-SL-3967.patch, 2.1 KB (added by humitos, 12 years ago)

A first approach

  • palettes.py

    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 _ 
    2424
    2525from gi.repository import Gtk
    2626from gi.repository import Gdk
     27from gi.repository import GObject
    2728from gi.repository import WebKit
    2829
    2930from sugar3.graphics.palette import Palette, Invoker
    class ContentInvoker(Invoker): 
    3839        self._position_hint = self.AT_CURSOR
    3940        self._browser = browser
    4041        self._browser.connect('button-press-event', self.__button_press_cb)
     42        self._browser.connect('hovering-over-link',
     43                              self.__hovering_over_link_cb)
    4144        self.attach(self._browser)
    4245
     46        self._hovering = False
     47        self._hovering_timer = None
     48
    4349    def get_default_position(self):
    4450        return self.AT_CURSOR
    4551
    class ContentInvoker(Invoker): 
    7076    def get_toplevel(self):
    7177        return None
    7278
     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
    7394    def __button_press_cb(self, browser, event):
    7495        if event.button != 3:
    7596            return False