diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-25 09:49:02 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-04-25 09:49:02 -0400 |
commit | f8a37b197ffb18daf5be7ae74ec4d8b9058f55c5 (patch) | |
tree | d84c0f23e8ea460e84c277d69df4735f11af5a24 /libs | |
parent | fd7ac62ca5a44f68b6701f21d9296cb19f0ebdc6 (diff) |
tweak enter/leave code, remove debug output
Diffstat (limited to 'libs')
-rw-r--r-- | libs/canvas/canvas.cc | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index d799b6d7fc..5987a136db 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -351,14 +351,26 @@ GtkCanvas::enter_leave_items (Duple const & point, int state) vector<Item const *> items; _root.add_items_at_point (point, items); + GdkEventCrossing enter_event; + enter_event.type = GDK_ENTER_NOTIFY; + enter_event.window = get_window()->gobj(); + enter_event.send_event = 0; + enter_event.subwindow = 0; + enter_event.mode = GDK_CROSSING_NORMAL; + enter_event.detail = GDK_NOTIFY_NONLINEAR; + enter_event.focus = FALSE; + enter_event.state = state; + enter_event.x = point.x; + enter_event.y = point.y; + + GdkEventCrossing leave_event = enter_event; + leave_event.type = GDK_LEAVE_NOTIFY; + leave_event.detail = GDK_NOTIFY_ANCESTOR; + leave_event.subwindow = 0; + if (items.empty()) { if (_current_item) { /* leave event */ - GdkEventCrossing leave_event; - leave_event.type = GDK_LEAVE_NOTIFY; - leave_event.x = point.x; - leave_event.y = point.y; - cerr << "Leaving (without entering)" << _current_item->name << endl; _current_item->Event (reinterpret_cast<GdkEvent*> (&leave_event)); _current_item = 0; } @@ -370,18 +382,6 @@ GtkCanvas::enter_leave_items (Duple const & point, int state) * we have entered it */ - GdkEventCrossing enter_event; - enter_event.type = GDK_ENTER_NOTIFY; - enter_event.window = get_window()->gobj(); - enter_event.send_event = 0; - enter_event.subwindow = 0; - enter_event.mode = GDK_CROSSING_NORMAL; - enter_event.detail = GDK_NOTIFY_NONLINEAR; - enter_event.focus = FALSE; - enter_event.state = state; - enter_event.x = point.x; - enter_event.y = point.y; - for (vector<Item const*>::const_reverse_iterator i = items.rbegin(); i != items.rend(); ++i) { Item const * new_item = *i; @@ -396,20 +396,13 @@ GtkCanvas::enter_leave_items (Duple const & point, int state) if (_current_item) { /* leave event */ - GdkEventCrossing leave_event = enter_event; - leave_event.type = GDK_LEAVE_NOTIFY; - leave_event.detail = GDK_NOTIFY_ANCESTOR; - leave_event.subwindow = 0; - cerr << "Leaving " << _current_item->name << endl; _current_item->Event (reinterpret_cast<GdkEvent*> (&leave_event)); } if (new_item && _current_item != new_item) { /* enter event */ - cerr << "Entering (" << new_item->name << ") " << new_item->whatami() << endl; - new_item->Event (reinterpret_cast<GdkEvent*> (&enter_event)); - _current_item = new_item; + _current_item->Event (reinterpret_cast<GdkEvent*> (&enter_event)); break; } |