瀏覽代碼

Merge pull request #33465 from rxlecky/list-theme-resources-fix

Fix functions listing all theme resources
Rémi Verschelde 5 年之前
父節點
當前提交
0bfd06a911
共有 1 個文件被更改,包括 35 次插入14 次删除
  1. 35 14
      scene/resources/theme.cpp

+ 35 - 14
scene/resources/theme.cpp

@@ -44,8 +44,11 @@ PoolVector<String> Theme::_get_icon_list(const String &p_type) const {
 
 	get_icon_list(p_type, &il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -57,8 +60,11 @@ PoolVector<String> Theme::_get_stylebox_list(const String &p_type) const {
 
 	get_stylebox_list(p_type, &il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -70,8 +76,11 @@ PoolVector<String> Theme::_get_stylebox_types(void) const {
 
 	get_stylebox_types(&il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -83,8 +92,11 @@ PoolVector<String> Theme::_get_font_list(const String &p_type) const {
 
 	get_font_list(p_type, &il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -96,8 +108,11 @@ PoolVector<String> Theme::_get_color_list(const String &p_type) const {
 
 	get_color_list(p_type, &il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -109,8 +124,11 @@ PoolVector<String> Theme::_get_constant_list(const String &p_type) const {
 
 	get_constant_list(p_type, &il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }
@@ -122,8 +140,11 @@ PoolVector<String> Theme::_get_type_list(const String &p_type) const {
 
 	get_type_list(&il);
 	ilret.resize(il.size());
-	for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
-		ilret.push_back(E->get());
+
+	int i = 0;
+	PoolVector<String>::Write w = ilret.write();
+	for (List<StringName>::Element *E = il.front(); E; E = E->next(), i++) {
+		w[i] = E->get();
 	}
 	return ilret;
 }