fix item_edited behavior on Asset Installer.
(cherry picked from commit b0fbde6abd
)
This commit is contained in:
parent
e798cf81c5
commit
ac3ff49ae5
|
@ -55,6 +55,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() {
|
void EditorAssetInstaller::_item_edited() {
|
||||||
|
|
||||||
if (updating)
|
if (updating)
|
||||||
|
@ -67,7 +88,7 @@ void EditorAssetInstaller::_item_edited() {
|
||||||
String path = item->get_metadata(0);
|
String path = item->get_metadata(0);
|
||||||
|
|
||||||
updating = true;
|
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);
|
_update_subitems(item, item->is_checked(0), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,6 +97,8 @@ void EditorAssetInstaller::_item_edited() {
|
||||||
item->set_checked(0, true);
|
item->set_checked(0, true);
|
||||||
item = item->get_parent();
|
item = item->get_parent();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
_uncheck_parent(item->get_parent());
|
||||||
}
|
}
|
||||||
updating = false;
|
updating = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ class EditorAssetInstaller : public ConfirmationDialog {
|
||||||
Map<String, TreeItem *> status_map;
|
Map<String, TreeItem *> status_map;
|
||||||
bool updating;
|
bool updating;
|
||||||
void _update_subitems(TreeItem *p_item, bool p_check, bool p_first = false);
|
void _update_subitems(TreeItem *p_item, bool p_check, bool p_first = false);
|
||||||
|
void _uncheck_parent(TreeItem *p_item);
|
||||||
void _item_edited();
|
void _item_edited();
|
||||||
virtual void ok_pressed();
|
virtual void ok_pressed();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue