Save/restore renderer settings in view state.
This commit is contained in:
@@ -109,10 +109,11 @@ public:
|
|||||||
fValue(NULL),
|
fValue(NULL),
|
||||||
fValueHandler(NULL),
|
fValueHandler(NULL),
|
||||||
fTableCellRenderer(NULL),
|
fTableCellRenderer(NULL),
|
||||||
|
fLastRendererSettings(),
|
||||||
|
fCastedType(NULL),
|
||||||
fComponentPath(NULL),
|
fComponentPath(NULL),
|
||||||
fIsPresentationNode(isPresentationNode),
|
fIsPresentationNode(isPresentationNode),
|
||||||
fHidden(false),
|
fHidden(false)
|
||||||
fCastedType(NULL)
|
|
||||||
{
|
{
|
||||||
fNodeChild->AcquireReference();
|
fNodeChild->AcquireReference();
|
||||||
}
|
}
|
||||||
@@ -214,6 +215,16 @@ public:
|
|||||||
fCastedType->AcquireReference();
|
fCastedType->AcquireReference();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const BMessage& GetLastRendererSettings() const
|
||||||
|
{
|
||||||
|
return fLastRendererSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetLastRendererSettings(const BMessage& settings)
|
||||||
|
{
|
||||||
|
fLastRendererSettings = settings;
|
||||||
|
}
|
||||||
|
|
||||||
TypeComponentPath* GetPath() const
|
TypeComponentPath* GetPath() const
|
||||||
{
|
{
|
||||||
return fComponentPath;
|
return fComponentPath;
|
||||||
@@ -324,11 +335,12 @@ private:
|
|||||||
Value* fValue;
|
Value* fValue;
|
||||||
ValueHandler* fValueHandler;
|
ValueHandler* fValueHandler;
|
||||||
TableCellValueRenderer* fTableCellRenderer;
|
TableCellValueRenderer* fTableCellRenderer;
|
||||||
|
BMessage fLastRendererSettings;
|
||||||
|
Type* fCastedType;
|
||||||
ChildList fChildren;
|
ChildList fChildren;
|
||||||
TypeComponentPath* fComponentPath;
|
TypeComponentPath* fComponentPath;
|
||||||
bool fIsPresentationNode;
|
bool fIsPresentationNode;
|
||||||
bool fHidden;
|
bool fHidden;
|
||||||
Type* fCastedType;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ModelNode* fNext;
|
ModelNode* fNext;
|
||||||
@@ -1075,6 +1087,14 @@ VariablesView::VariableTableModel::ValueNodeValueChanged(ValueNode* valueNode)
|
|||||||
modelNode->SetValueHandler(valueHandler);
|
modelNode->SetValueHandler(valueHandler);
|
||||||
modelNode->SetTableCellRenderer(renderer);
|
modelNode->SetTableCellRenderer(renderer);
|
||||||
|
|
||||||
|
// we have to restore renderer settings here since until this point
|
||||||
|
// we don't yet know what renderer is in use.
|
||||||
|
if (renderer != NULL) {
|
||||||
|
Settings* settings = renderer->GetSettings();
|
||||||
|
if (settings != NULL)
|
||||||
|
settings->RestoreValues(modelNode->GetLastRendererSettings());
|
||||||
|
}
|
||||||
|
|
||||||
// notify table model listeners
|
// notify table model listeners
|
||||||
NotifyNodeChanged(modelNode);
|
NotifyNodeChanged(modelNode);
|
||||||
}
|
}
|
||||||
@@ -1987,6 +2007,12 @@ VariablesView::_AddViewStateDescendentNodeInfos(VariablesViewState* viewState,
|
|||||||
VariablesViewNodeInfo nodeInfo;
|
VariablesViewNodeInfo nodeInfo;
|
||||||
nodeInfo.SetNodeExpanded(fVariableTable->IsNodeExpanded(path));
|
nodeInfo.SetNodeExpanded(fVariableTable->IsNodeExpanded(path));
|
||||||
nodeInfo.SetCastedType(node->GetCastedType());
|
nodeInfo.SetCastedType(node->GetCastedType());
|
||||||
|
TableCellValueRenderer* renderer = node->TableCellRenderer();
|
||||||
|
if (renderer != NULL) {
|
||||||
|
Settings* settings = renderer->GetSettings();
|
||||||
|
if (settings != NULL)
|
||||||
|
nodeInfo.SetRendererSettings(settings->Message());
|
||||||
|
}
|
||||||
|
|
||||||
status_t error = viewState->SetNodeInfo(node->GetVariable()->ID(),
|
status_t error = viewState->SetNodeInfo(node->GetVariable()->ID(),
|
||||||
node->GetPath(), nodeInfo);
|
node->GetPath(), nodeInfo);
|
||||||
@@ -2033,6 +2059,11 @@ VariablesView::_ApplyViewStateDescendentNodeInfos(VariablesViewState* viewState,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we don't have a renderer yet so we can't apply the settings
|
||||||
|
// at this stage. Store them on the model node so we can lazily
|
||||||
|
// apply them once the value is retrieved.
|
||||||
|
node->SetLastRendererSettings(nodeInfo->GetRendererSettings());
|
||||||
|
|
||||||
fVariableTable->SetNodeExpanded(path, nodeInfo->IsNodeExpanded());
|
fVariableTable->SetNodeExpanded(path, nodeInfo->IsNodeExpanded());
|
||||||
|
|
||||||
// recurse
|
// recurse
|
||||||
|
|||||||
Reference in New Issue
Block a user