1 import time
, gobject
, gtk
9 def show(self
, parent
):
11 gobject
.source_remove(self
.timeout
)
21 self
.widget
= gtk
.Window(gtk
.WINDOW_POPUP
)
22 self
.widget
.set_app_paintable(True)
23 self
.widget
.set_name('gtk-tooltips')
25 self
.widget
.connect('expose-event', self
.tooltip_draw
)
27 label
= gtk
.Label(self
.get_tooltip_text(self
.item
))
28 label
.set_padding(4, 2)
29 self
.widget
.add(label
)
32 w
, h
= self
.widget
.size_request()
33 screen
= parent
.get_screen()
34 root
= screen
.get_root_window()
35 px
, py
, mask
= gtk
.gdk
.Window
.get_pointer(root
)
37 m
= gtk
.gdk
.screen_get_default().get_monitor_at_point(px
, py
)
42 # Test if pointer is over the tooltip window
43 if py
>= y
and py
<= y
+ h
:
45 self
.widget
.move(x
, y
)
48 self
.widget
.connect('destroy', self
.tooltip_destroyed
)
49 self
.time
= time
.time()
51 def prime(self
, parent
, item
):
56 assert self
.timeout
is None
60 if now
- self
.time
> 2:
65 self
.timeout
= gobject
.timeout_add(delay
, lambda: self
.show(parent
))
67 def tooltip_draw(self
, widget
, ev
):
68 widget
.window
.draw_rectangle(widget
.style
.fg_gc
[widget
.state
],
70 widget
.allocation
.width
- 1,
71 widget
.allocation
.height
- 1)
73 def tooltip_destroyed(self
, widget
):