diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2008-12-12 22:04:22 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2008-12-12 22:04:22 +0000 |
commit | f03a87a132feb525a743de675d0439e981ab329a (patch) | |
tree | 995f4bcb7deb66ebe75924d90ce1727d230bed8e /gtk2_ardour/canvas-flag.h | |
parent | bc89fe0147c04b67141936d109c00dfd4d69cc4b (diff) |
* Prepared CanvasFlag (and thus ChanvasProgramChange) to be able to receive Scroll wheel events
* made changes in editor_canvas_events.cc to forward events to CanvasFlag (against pauls advice), but IMHO it doesnt add complexity to it since it only adds a few trivial lines which do the same which has already been done for CanvasNote and thus shouldnt complicate the merge in any way
git-svn-id: svn://localhost/ardour2/branches/3.0@4314 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/canvas-flag.h')
-rw-r--r-- | gtk2_ardour/canvas-flag.h | 53 |
1 files changed, 50 insertions, 3 deletions
diff --git a/gtk2_ardour/canvas-flag.h b/gtk2_ardour/canvas-flag.h index 23fba78fee..0f45667614 100644 --- a/gtk2_ardour/canvas-flag.h +++ b/gtk2_ardour/canvas-flag.h @@ -15,6 +15,9 @@ class MidiRegionView; namespace Gnome { namespace Canvas { +class CanvasFlagRect; +class CanvasFlagText; + class CanvasFlag : public Group { public: @@ -35,13 +38,15 @@ public: , _line(0) , _rect(0) {} - + virtual ~CanvasFlag(); + virtual bool on_event(GdkEvent* ev); + void set_text(string& a_text); protected: - Text* _text; + CanvasFlagText* _text; double _height; guint _outline_color_rgba; guint _fill_color_rgba; @@ -51,9 +56,51 @@ private: MidiRegionView& _region; SimpleLine* _line; - SimpleRect* _rect; + CanvasFlagRect* _rect; +}; + +class CanvasFlagText: public Text +{ +public: + CanvasFlagText(Group& parent, double x, double y, const Glib::ustring& text) + : Text(parent, x, y, text) { + _parent = dynamic_cast<CanvasFlag*>(&parent); +; + } + + virtual bool on_event(GdkEvent* ev) { + if(_parent) { + return _parent->on_event(ev); + } else { + return false; + } + } + +private: + CanvasFlag* _parent; }; +class CanvasFlagRect: public SimpleRect +{ +public: + CanvasFlagRect(Group& parent, double x1, double y1, double x2, double y2) + : SimpleRect(parent, x1, y1, x2, y2) { + _parent = dynamic_cast<CanvasFlag*>(&parent); + } + + virtual bool on_event(GdkEvent* ev) { + if(_parent) { + return _parent->on_event(ev); + } else { + return false; + } + } + +private: + CanvasFlag* _parent; +}; + + } // namespace Canvas } // namespace Gnome |