Fix uninitialised variable.
[ardour.git] / gtk2_ardour / canvas-flag.cc
index 232035e4cf914f361c02af95d21627f6b71f009d..1a85cc9644dd2a266f4baaf6b845b17caf11aa45 100644 (file)
@@ -5,16 +5,45 @@
 using namespace Gnome::Canvas;
 using namespace std;
 
-               
-void 
-CanvasFlag::set_text(string& a_text)
+CanvasFlag::CanvasFlag (MidiRegionView& region,
+                        Group&          parent,
+                        double          height,
+                        guint           outline_color_rgba,
+                        guint           fill_color_rgba,
+                        double          x,
+                        double          y)
+       : Group(parent, x, y)
+       , _text(0)
+       , _height(height)
+       , _outline_color_rgba(outline_color_rgba)
+       , _fill_color_rgba(fill_color_rgba)
+       , _region(region)
+       , _line(0)
+       , _rect(0)
 {
-       if (_text) {
-               delete _text;
-               _text = 0;
-       }
-       
-       _text = new Text(*this, 0.0, 0.0, a_text);
+       /* XXX this connection is needed if ::on_event() is changed to actually do anything */
+       signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event));
+}
+
+void
+CanvasFlag::delete_allocated_objects()
+{
+       delete _text;
+       _text = 0;
+
+       delete _line;
+       _line = 0;
+
+       delete _rect;
+       _rect = 0;
+}
+
+void
+CanvasFlag::set_text(const string& a_text)
+{
+       delete_allocated_objects();
+
+       _text = new Text (*this, 0.0, 0.0, std::string(a_text));
        _text->property_justification() = Gtk::JUSTIFY_CENTER;
        _text->property_fill_color_rgba() = _outline_color_rgba;
        double flagwidth  = _text->property_text_width()  + 10.0;
@@ -27,16 +56,33 @@ CanvasFlag::set_text(string& a_text)
        _rect = new SimpleRect(*this, 0.0, 0.0, flagwidth, flagheight);
        _rect->property_outline_color_rgba() = _outline_color_rgba;
        _rect->property_fill_color_rgba() = _fill_color_rgba;
-       _text->lower_to_bottom();
-       _text->raise(2);        
+       _text->raise_to_top();
+
+       /* XXX these two connections are needed if ::on_event() is changed to actually do anything */
+       //_rect->signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event));
+       //_text->signal_event().connect (sigc::mem_fun (*this, &CanvasFlag::on_event));
 }
 
 CanvasFlag::~CanvasFlag()
 {
-       delete _line;
-       delete _rect;
-       if(_text) {
-               delete _text;
-       }
+       delete_allocated_objects();
 }
 
+bool
+CanvasFlag::on_event(GdkEvent* /*ev*/)
+{
+       /* XXX if you change this function to actually do anything, be sure
+          to fix the connections commented out elsewhere in this file.
+       */
+       return false;
+}
+
+void
+CanvasFlag::set_height (double h)
+{
+       _height = h;
+
+       if (_line) {
+               _line->property_y2() = _height;
+       }
+}