Browse Source

Add a function that enables all the variables in a data model to be marked dirty (#289)

EhWhoAmI 3 years ago
parent
commit
48aacadd77

+ 1 - 0
Include/RmlUi/Core/DataModelHandle.h

@@ -47,6 +47,7 @@ public:
 
 
 	bool IsVariableDirty(const String& variable_name);
 	bool IsVariableDirty(const String& variable_name);
 	void DirtyVariable(const String& variable_name);
 	void DirtyVariable(const String& variable_name);
+	void DirtyAllVariables();
 
 
 	explicit operator bool() { return model; }
 	explicit operator bool() { return model; }
 
 

+ 7 - 0
Source/Core/DataModel.cpp

@@ -341,6 +341,13 @@ bool DataModel::IsVariableDirty(const String& variable_name) const
 	return dirty_variables.count(variable_name) == 1;
 	return dirty_variables.count(variable_name) == 1;
 }
 }
 
 
+void DataModel::DirtyAllVariables() {
+	dirty_variables.reserve(variables.size());
+	for (const auto& variable : variables) {
+		dirty_variables.emplace(variable.first);
+	}
+}
+
 bool DataModel::CallTransform(const String& name, Variant& inout_result, const VariantList& arguments) const
 bool DataModel::CallTransform(const String& name, Variant& inout_result, const VariantList& arguments) const
 {
 {
 	if (transform_register)
 	if (transform_register)

+ 1 - 0
Source/Core/DataModel.h

@@ -68,6 +68,7 @@ public:
 
 
 	void DirtyVariable(const String& variable_name);
 	void DirtyVariable(const String& variable_name);
 	bool IsVariableDirty(const String& variable_name) const;
 	bool IsVariableDirty(const String& variable_name) const;
+	void DirtyAllVariables();
 
 
 	bool CallTransform(const String& name, Variant& inout_result, const VariantList& arguments) const;
 	bool CallTransform(const String& name, Variant& inout_result, const VariantList& arguments) const;
 
 

+ 4 - 0
Source/Core/DataModelHandle.cpp

@@ -43,6 +43,10 @@ void DataModelHandle::DirtyVariable(const String& variable_name) {
 	model->DirtyVariable(variable_name);
 	model->DirtyVariable(variable_name);
 }
 }
 
 
+void DataModelHandle::DirtyAllVariables() {
+	model->DirtyAllVariables();
+}
+
 
 
 DataModelConstructor::DataModelConstructor() : model(nullptr), type_register(nullptr) {}
 DataModelConstructor::DataModelConstructor() : model(nullptr), type_register(nullptr) {}