Remove confusing track / group members in TimeSelection struct; time selection
[ardour.git] / gtk2_ardour / interactive-item.h
index 145a592511b65e2b0673cc905f8d5a831910b868..0efe2fea69f81ca9288f6f88c40aad9c0aeed2eb 100644 (file)
@@ -34,6 +34,8 @@ namespace Canvas {
  */
 class InteractiveItem {
 public:
+       virtual ~InteractiveItem() {}
+
        virtual bool on_event(GdkEvent* ev) = 0;
 };
 
@@ -41,48 +43,48 @@ public:
  */
 class InteractiveText : public Text, public InteractiveItem {
 public:
-       InteractiveText(Group& parent, double x, double y, const Glib::ustring& text) 
-               : Text(parent, x, y, text) 
-       {
-               _parent = dynamic_cast<InteractiveItem*>(&parent);
-       }
-       
-       InteractiveText(Group& parent)
-               : Text(parent) 
-       {
-               _parent = dynamic_cast<InteractiveItem*>(&parent);              
-       }
-       
+       InteractiveText(Group& parent, InteractiveItem* parent_item, double x, double y, const Glib::ustring& text)
+               : Text(parent, x, y, text)
+               , _parent_item(parent_item)
+       {}
+
+       InteractiveText(Group& parent, InteractiveItem* parent_item)
+               : Text(parent)
+               , _parent_item(parent_item)
+       {}
+
        bool on_event(GdkEvent* ev) {
-               if(_parent) {
-                       return _parent->on_event(ev);
+               if(_parent_item) {
+                       return _parent_item->on_event(ev);
                } else {
                        return false;
                }
        }
 
 protected:
-       InteractiveItem* _parent;
+       InteractiveItem* _parent_item;
 };
 
 class InteractiveRect: public SimpleRect, public InteractiveItem
 {
 public:
-       InteractiveRect(Group& parent, double x1, double y1, double x2, double y2) 
-               : SimpleRect(parent, x1, y1, x2, y2) {
-               _parent = dynamic_cast<InteractiveItem*>(&parent);
-       }
-       
+       InteractiveRect(Group& parent, InteractiveItem* parent_item,
+                       double x1, double y1, double x2, double y2)
+               : SimpleRect(parent, x1, y1, x2, y2)
+               , _parent_item(parent_item)
+       {}
+
        bool on_event(GdkEvent* ev) {
-               if(_parent) {
-                       return _parent->on_event(ev);
+               if (_parent_item) {
+                       return _parent_item->on_event(ev);
                } else {
                        return false;
                }
        }
 
+
 protected:
-       InteractiveItem* _parent;
+       InteractiveItem* _parent_item;
 };
 
 } /* namespace Canvas */