summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/canvas/canvas.cc10
-rw-r--r--libs/canvas/canvas/canvas.h3
2 files changed, 12 insertions, 1 deletions
diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc
index eb40f785dd..fb06b06b97 100644
--- a/libs/canvas/canvas.cc
+++ b/libs/canvas/canvas.cc
@@ -729,6 +729,15 @@ GtkCanvas::deliver_event (GdkEvent* event)
return false;
}
+void
+GtkCanvas::item_shown_or_hidden (Item* item)
+{
+ if (item == current_tooltip_item) {
+ stop_tooltip_timeout ();
+ }
+ Canvas::item_shown_or_hidden (item);
+}
+
/** Called when an item is being destroyed.
* @param item Item being destroyed.
* @param bounding_box Last known bounding box of the item.
@@ -1136,6 +1145,7 @@ GtkCanvas::on_map ()
void
GtkCanvas::on_unmap ()
{
+ stop_tooltip_timeout ();
Gtk::EventBox::on_unmap();
#ifdef __APPLE__
if (_nsglview) {
diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h
index ec66f71025..3c94ea4cf6 100644
--- a/libs/canvas/canvas/canvas.h
+++ b/libs/canvas/canvas/canvas.h
@@ -97,7 +97,7 @@ public:
/** Called when an item is being destroyed */
virtual void item_going_away (Item *, Rect) {}
- void item_shown_or_hidden (Item *);
+ virtual void item_shown_or_hidden (Item *);
void item_visual_property_changed (Item*);
void item_changed (Item *, Rect);
void item_moved (Item *, Rect);
@@ -240,6 +240,7 @@ public:
private:
void item_going_away (Item *, Rect);
+ void item_shown_or_hidden (Item *);
bool send_leave_event (Item const *, double, double) const;
Cairo::RefPtr<Cairo::Surface> canvas_image;