diff options
-rw-r--r-- | libs/canvas/canvas.cc | 10 | ||||
-rw-r--r-- | libs/canvas/canvas/canvas.h | 3 |
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; |