From ba049fdab4a47023d6d5ee8b5ff9bbb710afbabb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 24 May 2017 11:58:40 +0100 Subject: Support basic drag-and-drop of DKDMs. --- src/lib/dkdm_wrapper.cc | 2 ++ src/lib/dkdm_wrapper.h | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src/lib') diff --git a/src/lib/dkdm_wrapper.cc b/src/lib/dkdm_wrapper.cc index 316a0581e..809739e06 100644 --- a/src/lib/dkdm_wrapper.cc +++ b/src/lib/dkdm_wrapper.cc @@ -75,6 +75,7 @@ DKDMGroup::add (shared_ptr child) { DCPOMATIC_ASSERT (child); _children.push_back (child); + child->set_parent (dynamic_pointer_cast (shared_from_this ())); } void @@ -83,6 +84,7 @@ DKDMGroup::remove (shared_ptr child) for (list >::iterator i = _children.begin(); i != _children.end(); ++i) { if (*i == child) { _children.erase (i); + child->set_parent (shared_ptr ()); return; } shared_ptr g = dynamic_pointer_cast (*i); diff --git a/src/lib/dkdm_wrapper.h b/src/lib/dkdm_wrapper.h index b877722d9..d3ee2a095 100644 --- a/src/lib/dkdm_wrapper.h +++ b/src/lib/dkdm_wrapper.h @@ -20,18 +20,32 @@ #include #include +#include namespace xmlpp { class Element; } -class DKDMBase +class DKDMGroup; + +class DKDMBase : public boost::enable_shared_from_this { public: virtual std::string name () const = 0; virtual void as_xml (xmlpp::Element *) const = 0; static boost::shared_ptr read (cxml::ConstNodePtr node); + + boost::shared_ptr parent () const { + return _parent; + } + + void set_parent (boost::shared_ptr parent) { + _parent = parent; + } + +private: + boost::shared_ptr _parent; }; class DKDM : public DKDMBase -- cgit v1.2.3