瀏覽代碼

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

EhWhoAmI 3 年之前
父節點
當前提交
48aacadd77
共有 4 個文件被更改,包括 13 次插入0 次删除
  1. 1 0
      Include/RmlUi/Core/DataModelHandle.h
  2. 7 0
      Source/Core/DataModel.cpp
  3. 1 0
      Source/Core/DataModel.h
  4. 4 0
      Source/Core/DataModelHandle.cpp

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

@@ -47,6 +47,7 @@ public:
 
 	bool IsVariableDirty(const String& variable_name);
 	void DirtyVariable(const String& variable_name);
+	void DirtyAllVariables();
 
 	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;
 }
 
+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
 {
 	if (transform_register)

+ 1 - 0
Source/Core/DataModel.h

@@ -68,6 +68,7 @@ public:
 
 	void DirtyVariable(const String& variable_name);
 	bool IsVariableDirty(const String& variable_name) const;
+	void DirtyAllVariables();
 
 	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);
 }
 
+void DataModelHandle::DirtyAllVariables() {
+	model->DirtyAllVariables();
+}
+
 
 DataModelConstructor::DataModelConstructor() : model(nullptr), type_register(nullptr) {}