summaryrefslogtreecommitdiff
path: root/editor/editor_asset_installer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor_asset_installer.cpp')
-rw-r--r--editor/editor_asset_installer.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/editor/editor_asset_installer.cpp b/editor/editor_asset_installer.cpp
index b43ee0e245..2d29076476 100644
--- a/editor/editor_asset_installer.cpp
+++ b/editor/editor_asset_installer.cpp
@@ -5,8 +5,8 @@
/* GODOT ENGINE */
/* https://godotengine.org */
/*************************************************************************/
-/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
@@ -54,6 +54,27 @@ void EditorAssetInstaller::_update_subitems(TreeItem *p_item, bool p_check, bool
}
}
+void EditorAssetInstaller::_uncheck_parent(TreeItem *p_item) {
+ if (!p_item) {
+ return;
+ }
+
+ bool any_checked = false;
+ TreeItem *item = p_item->get_children();
+ while (item) {
+ if (item->is_checked(0)) {
+ any_checked = true;
+ break;
+ }
+ item = item->get_next();
+ }
+
+ if (!any_checked) {
+ p_item->set_checked(0, false);
+ _uncheck_parent(p_item->get_parent());
+ }
+}
+
void EditorAssetInstaller::_item_edited() {
if (updating) {
return;
@@ -67,7 +88,7 @@ void EditorAssetInstaller::_item_edited() {
String path = item->get_metadata(0);
updating = true;
- if (path == String()) { //a dir
+ if (path == String() || item == tree->get_root()) { //a dir or root
_update_subitems(item, item->is_checked(0), true);
}
@@ -76,6 +97,8 @@ void EditorAssetInstaller::_item_edited() {
item->set_checked(0, true);
item = item->get_parent();
}
+ } else {
+ _uncheck_parent(item->get_parent());
}
updating = false;
}
@@ -159,7 +182,7 @@ void EditorAssetInstaller::open(const String &p_path, int p_depth) {
isdir = true;
}
- int pp = path.find_last("/");
+ int pp = path.rfind("/");
TreeItem *parent;
if (pp == -1) {
@@ -312,7 +335,7 @@ EditorAssetInstaller::EditorAssetInstaller() {
error = memnew(AcceptDialog);
add_child(error);
- get_ok()->set_text(TTR("Install"));
+ get_ok_button()->set_text(TTR("Install"));
set_title(TTR("Package Installer"));
updating = false;