mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-07-11 22:03:01 -06:00
bazaar: Property: const not practical, PropEdit local AccessorMap issue
git-svn-id: svn://ultimatepp.org/upp/trunk@3900 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
1de1a82e41
commit
f9476b32bb
4 changed files with 17 additions and 11 deletions
|
|
@ -5,17 +5,25 @@ NAMESPACE_UPP
|
|||
void PropEditCtrl::UpdateCtrl()
|
||||
{
|
||||
ClearMap();
|
||||
am.Clear();
|
||||
oam.Clear();
|
||||
if(!ctrl) return;
|
||||
|
||||
//init local accessor map
|
||||
//prefer the dynamic access
|
||||
//fall back to the static accessors from Props<>
|
||||
AccessorMap* am = NULL;
|
||||
GetAccessorMapI* ami = dynamic_cast<GetAccessorMapI*>(ctrl);
|
||||
if(ami) am <<= ami->GetAccessorMap();
|
||||
else if(!Props<Ctrl>::SetupAccessorMap(*ctrl, am)) return;
|
||||
if(ami)
|
||||
am = &ami->GetAccessorMap();
|
||||
else
|
||||
{
|
||||
oam.Create();
|
||||
if(!Props<Ctrl>::SetupAccessorMap(*ctrl, *oam))
|
||||
return;
|
||||
am = ~oam;
|
||||
}
|
||||
|
||||
SetMap(&am);
|
||||
ASSERT(am);
|
||||
SetMap(am);
|
||||
|
||||
for(int i = 0; i < avae.GetCount(); i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -19,13 +19,12 @@ public:
|
|||
virtual void SetData(const Value& v) { SetCtrl(RawValue<Ctrl*>::Extract(v)); }
|
||||
|
||||
void OnAction();
|
||||
const AccessorMap& GetAccessorMap() const { return am; }
|
||||
|
||||
protected:
|
||||
void UpdateCtrl();
|
||||
|
||||
Ctrl* ctrl;
|
||||
AccessorMap am;
|
||||
One<AccessorMap> oam;
|
||||
};
|
||||
|
||||
class PropEdit : public WithCloserKeys<PopUpC>
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ void PropKeeper<KLASS>::Init() \
|
|||
class GetAccessorMapI
|
||||
{
|
||||
public:
|
||||
virtual const AccessorMap& GetAccessorMap() const = 0;
|
||||
virtual AccessorMap& GetAccessorMap() = 0;
|
||||
};
|
||||
|
||||
template<class T, class C = GetAccessorMapI>
|
||||
|
|
@ -229,8 +229,7 @@ class WithAccessorMap : public C
|
|||
{
|
||||
public:
|
||||
WithAccessorMap() { PropKeeper<T>::SetupAccessorMap((T&)(*this), am); }
|
||||
virtual const AccessorMap& GetAccessorMap() const { return am; }
|
||||
protected:
|
||||
virtual AccessorMap& GetAccessorMap() { return am; }
|
||||
AccessorMap am;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ void AccessorMapCtrl::UpdateMap()
|
|||
if(ValueAccessorInstance* vi = dynamic_cast<ValueAccessorInstance*>(&a))
|
||||
{
|
||||
//special ValueAccessors, need their own editor
|
||||
Value q = vi->TypeOf(); //defines which editor
|
||||
String q = vi->TypeOf(); //defines which editor
|
||||
|
||||
Instancer<ValueAccessorEdit>::MapType& map = Instancer<ValueAccessorEdit>::Map();
|
||||
int ix = map.Find(q);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue