Support a 'clear' operation on SGBinding.
Needed to bug-fix a problem with the menubar on Mac - post-3.0 I will change the behaviour of SGBinding's destructor to avoid the property copies in other use-cases.
This commit is contained in:
parent
0428adff03
commit
7184828a58
@ -47,6 +47,14 @@ SGBinding::~SGBinding()
|
|||||||
_arg->getParent()->removeChild(_arg->getName(), _arg->getIndex(), false);
|
_arg->getParent()->removeChild(_arg->getName(), _arg->getIndex(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SGBinding::clear()
|
||||||
|
{
|
||||||
|
_command = NULL;
|
||||||
|
_arg.clear();
|
||||||
|
_setting.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SGBinding::read(const SGPropertyNode* node, SGPropertyNode* root)
|
SGBinding::read(const SGPropertyNode* node, SGPropertyNode* root)
|
||||||
{
|
{
|
||||||
@ -149,3 +157,11 @@ SGBindingList readBindingList(const simgear::PropertyList& aNodes, SGPropertyNod
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void clearBindingList(const SGBindingList& aBindings)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH(SGBinding_ptr b, aBindings) {
|
||||||
|
b->clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -59,6 +59,14 @@ public:
|
|||||||
virtual ~SGBinding ();
|
virtual ~SGBinding ();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clear internal state of the binding back to empty. This is useful
|
||||||
|
* if you don't want the 'remove on delete' behaviour of the
|
||||||
|
* destructor.
|
||||||
|
*/
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the command name.
|
* Get the command name.
|
||||||
*
|
*
|
||||||
@ -154,4 +162,9 @@ void fireBindingListWithOffset(const SGBindingList& aBindings, double offset, do
|
|||||||
*/
|
*/
|
||||||
SGBindingList readBindingList(const simgear::PropertyList& aNodes, SGPropertyNode* aRoot);
|
SGBindingList readBindingList(const simgear::PropertyList& aNodes, SGPropertyNode* aRoot);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* call clear() on every binding in a list
|
||||||
|
*/
|
||||||
|
void clearBindingList(const SGBindingList& aBindings);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user