summaryrefslogtreecommitdiff
path: root/libs/canvas
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-04-17 01:45:25 +0200
committerRobin Gareus <robin@gareus.org>2017-04-17 01:45:25 +0200
commitaff92a019d0f27b4ec6fd92ab78ece9172bec9cc (patch)
tree9c79d87d1d0c0bb42031c1abe41151bb88275308 /libs/canvas
parent976e03c15ccc0f2939507a06eea02a8bfb439e57 (diff)
Stop tooltip timeout when a canvas-widget or item is hidden.
Diffstat (limited to 'libs/canvas')
-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;