From 8ef8bfc64ffba6d87cdb8ffcd6ecd535e2391641 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 8 Feb 2012 15:03:00 +0000 Subject: use new NoEventSimpleRect for coverage frames and silent frames, so that they don't steal events from notes by passing events directly to the region view parent group git-svn-id: svn://localhost/ardour2/branches/3.0@11474 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/canvas-noevent-rect.h | 44 +++++++++++++++++++++++++++++++++++++++ gtk2_ardour/region_view.cc | 5 +++-- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 gtk2_ardour/canvas-noevent-rect.h diff --git a/gtk2_ardour/canvas-noevent-rect.h b/gtk2_ardour/canvas-noevent-rect.h new file mode 100644 index 0000000000..edfeae670d --- /dev/null +++ b/gtk2_ardour/canvas-noevent-rect.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2009 Paul Davis + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + */ + +#ifndef __gtk2_ardour_canvas_noevent_rect_h__ +#define __gtk2_ardour_canvas_noevent_rect_h__ + +#include "simplerect.h" + +namespace Gnome { namespace Canvas { + +class NoEventSimpleRect : public SimpleRect +{ + public: + NoEventSimpleRect(Group& parent, double x1, double y1, double x2, double y2) + : SimpleRect (parent, x1, y1, x2, y2) {} + NoEventSimpleRect(Group& parent) + : SimpleRect (parent) {} + + double point_vfunc(double, double, int, int, GnomeCanvasItem**) { + /* return a huge value to tell the canvas that we're never the item for an event */ + return 9999999999999.0; + } +}; + +} } /* namespaces */ + +#endif /* __gtk2_ardour_canvas_noevent_text_h__ */ diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index 4db77f030d..a0fd276d12 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -33,6 +33,7 @@ #include "ardour_ui.h" #include "global_signals.h" #include "canvas-noevent-text.h" +#include "canvas-noevent-rect.h" #include "streamview.h" #include "region_view.h" #include "automation_region_view.h" @@ -238,7 +239,7 @@ RegionView::set_silent_frames (const AudioIntervalResult& silences, double /*thr for (AudioIntervalResult::const_iterator i = silences.begin(); i != silences.end(); ++i) { - ArdourCanvas::SimpleRect* cr = new ArdourCanvas::SimpleRect (*group); + ArdourCanvas::SimpleRect* cr = new ArdourCanvas::NoEventSimpleRect (*group); _silent_frames.push_back (cr); /* coordinates for the rect are relative to the regionview origin */ @@ -796,7 +797,7 @@ RegionView::update_coverage_frames (LayerDisplay d) /* start off any new rect, if required */ if (cr == 0 || me != new_me) { - cr = new ArdourCanvas::SimpleRect (*group); + cr = new ArdourCanvas::NoEventSimpleRect (*group); _coverage_frames.push_back (cr); cr->property_x1() = trackview.editor().frame_to_pixel (t - position); cr->property_y1() = 1; -- cgit v1.2.3