From 2d50adaf3acda79f5e961ff3463df4ff259ec8b7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 30 Dec 2013 14:02:43 -0500 Subject: [PATCH] ignore invisible items when picking the current item Also left behind some commented debug out that probably deserves a new PBD::Debug bit. --- libs/canvas/canvas.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index 18cf3104fa..313c9f7ae5 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -316,9 +316,9 @@ GtkCanvas::pick_current_item (Duple const & point, int state) Item const * new_item = *i; - /* We ignore groups and we ignore items that ignore events */ + /* We ignore invisible items, groups and items that ignore events */ - if (new_item->ignore_events() || dynamic_cast(new_item) != 0) { + if (!new_item->visible() || new_item->ignore_events() || dynamic_cast(new_item) != 0) { continue; } @@ -454,6 +454,7 @@ GtkCanvas::deliver_enter_leave (Duple const & point, int state) if (_current_item && !_current_item->ignore_events ()) { leave_event.detail = leave_detail; _current_item->Event ((GdkEvent*)&leave_event); + // std::cerr << "LEAVE " << _current_item->whatami() << '/' << _current_item->name << std::endl; } leave_event.detail = GDK_NOTIFY_VIRTUAL; @@ -462,18 +463,21 @@ GtkCanvas::deliver_enter_leave (Duple const & point, int state) for (vector::iterator it = items_to_leave_virtual.begin(); it != items_to_leave_virtual.end(); ++it) { if (!(*it)->ignore_events()) { (*it)->Event ((GdkEvent*)&leave_event); + // std::cerr << "leave " << (*it)->whatami() << '/' << (*it)->name << std::endl; } } for (vector::iterator it = items_to_enter_virtual.begin(); it != items_to_enter_virtual.end(); ++it) { if (!(*it)->ignore_events()) { (*it)->Event ((GdkEvent*)&enter_event); + // std::cerr << "enter " << (*it)->whatami() << '/' << (*it)->name << std::endl; } } if (_new_current_item && !_new_current_item->ignore_events()) { enter_event.detail = enter_detail; _new_current_item->Event ((GdkEvent*)&enter_event); + // std::cerr << "ENTER " << _new_current_item->whatami() << '/' << _new_current_item->name << std::endl; } _current_item = _new_current_item;