From 4a7995e9adeaa45f39e00a2bbe608175e247b122 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Fri, 13 Aug 2021 09:51:03 +0200 Subject: [PATCH] make_sure_is_visible expect result --- openpype/tools/settings/settings/base.py | 5 +++++ .../tools/settings/settings/dict_conditional.py | 10 ++++++---- .../tools/settings/settings/dict_mutable_widget.py | 10 ++++++---- openpype/tools/settings/settings/item_widgets.py | 14 ++++++++------ .../tools/settings/settings/list_item_widget.py | 12 +++++++----- .../tools/settings/settings/list_strict_widget.py | 8 +++++--- 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/openpype/tools/settings/settings/base.py b/openpype/tools/settings/settings/base.py index 0541c36ffe..915a408f4e 100644 --- a/openpype/tools/settings/settings/base.py +++ b/openpype/tools/settings/settings/base.py @@ -372,6 +372,8 @@ class InputWidget(BaseWidget): entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) + return True + return False def update_style(self): has_unsaved_changes = self.entity.has_unsaved_changes @@ -464,6 +466,9 @@ class GUIWidget(BaseWidget): pass def make_sure_is_visible(self, *args, **kwargs): + return False + + def focused_in(self): pass def set_path(self, *args, **kwargs): diff --git a/openpype/tools/settings/settings/dict_conditional.py b/openpype/tools/settings/settings/dict_conditional.py index 222cca03f9..c30159195c 100644 --- a/openpype/tools/settings/settings/dict_conditional.py +++ b/openpype/tools/settings/settings/dict_conditional.py @@ -215,22 +215,24 @@ class DictConditionalWidget(BaseWidget): def make_sure_is_visible(self, path, scroll_to): if not path: - return + return False entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) - return + return True if not path.startswith(entity_path): - return + return False if self.body_widget and not self.body_widget.is_expanded(): self.body_widget.toggle_content(True) QtWidgets.QApplication.processEvents() for input_field in self.input_fields: - input_field.make_sure_is_visible(path, scroll_to) + if input_field.make_sure_is_visible(path, scroll_to): + return True + return False def add_widget_to_layout(self, widget, label=None): if not widget.entity: diff --git a/openpype/tools/settings/settings/dict_mutable_widget.py b/openpype/tools/settings/settings/dict_mutable_widget.py index b733727e4e..5bab74fabf 100644 --- a/openpype/tools/settings/settings/dict_mutable_widget.py +++ b/openpype/tools/settings/settings/dict_mutable_widget.py @@ -318,7 +318,7 @@ class ModifiableDictItem(QtWidgets.QWidget): ) def make_sure_is_visible(self, *args, **kwargs): - self.input_field.make_sure_is_visible(*args, **kwargs) + return self.input_field.make_sure_is_visible(*args, **kwargs) def get_style_state(self): if self.is_invalid: @@ -854,17 +854,19 @@ class DictMutableKeysWidget(BaseWidget): entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) - return + return True if not path.startswith(entity_path): - return + return False if self.body_widget and not self.body_widget.is_expanded(): self.body_widget.toggle_content(True) QtWidgets.QApplication.processEvents() for input_field in self.input_fields: - input_field.make_sure_is_visible(path, scroll_to) + if input_field.make_sure_is_visible(path, scroll_to): + return True + return False def set_entity_value(self): while self.input_fields: diff --git a/openpype/tools/settings/settings/item_widgets.py b/openpype/tools/settings/settings/item_widgets.py index 4d344cb8fc..9c69ee6705 100644 --- a/openpype/tools/settings/settings/item_widgets.py +++ b/openpype/tools/settings/settings/item_widgets.py @@ -159,22 +159,24 @@ class DictImmutableKeysWidget(BaseWidget): def make_sure_is_visible(self, path, scroll_to): if not path: - return + return False entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) - return + return True if not path.startswith(entity_path): - return + return False if self.body_widget and not self.body_widget.is_expanded(): self.body_widget.toggle_content(True) QtWidgets.QApplication.processEvents() - for input_field in self.input_fields: - input_field.make_sure_is_visible(path, scroll_to) + for direct_child in self._direct_children_widgets: + if direct_child.make_sure_is_visible(path, scroll_to): + return True + return False def add_widget_to_layout(self, widget, label=None): if self.checkbox_child and widget.entity is self.checkbox_child: @@ -599,7 +601,7 @@ class PathWidget(BaseWidget): self.input_field.set_entity_value() def make_sure_is_visible(self, *args, **kwargs): - self.input_field.make_sure_is_visible(*args, **kwargs) + return self.input_field.make_sure_is_visible(*args, **kwargs) def hierarchical_style_update(self): self.update_style() diff --git a/openpype/tools/settings/settings/list_item_widget.py b/openpype/tools/settings/settings/list_item_widget.py index 52b96a658f..50630986d6 100644 --- a/openpype/tools/settings/settings/list_item_widget.py +++ b/openpype/tools/settings/settings/list_item_widget.py @@ -119,7 +119,7 @@ class ListItem(QtWidgets.QWidget): ) def make_sure_is_visible(self, *args, **kwargs): - self.input_field.make_sure_is_visible(*args, **kwargs) + return self.input_field.make_sure_is_visible(*args, **kwargs) @property def is_invalid(self): @@ -269,22 +269,24 @@ class ListWidget(InputWidget): def make_sure_is_visible(self, path, scroll_to): if not path: - return + return False entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) - return + return True if not path.startswith(entity_path): - return + return False if self.body_widget and not self.body_widget.is_expanded(): self.body_widget.toggle_content(True) QtWidgets.QApplication.processEvents() for input_field in self.input_fields: - input_field.make_sure_is_visible(path, scroll_to) + if input_field.make_sure_is_visible(path, scroll_to): + return True + return False def _on_entity_change(self): # TODO do less inefficient diff --git a/openpype/tools/settings/settings/list_strict_widget.py b/openpype/tools/settings/settings/list_strict_widget.py index 94a6ff53e2..046b6992f6 100644 --- a/openpype/tools/settings/settings/list_strict_widget.py +++ b/openpype/tools/settings/settings/list_strict_widget.py @@ -67,16 +67,18 @@ class ListStrictWidget(BaseWidget): def make_sure_is_visible(self, path, scroll_to): if not path: - return + return False entity_path = self.entity.path if entity_path == path: self.set_focus(scroll_to) - return + return True if path.startswith(entity_path): for input_field in self.input_fields: - input_field.make_sure_is_visible(path, scroll_to) + if input_field.make_sure_is_visible(path, scroll_to): + return True + return False def add_widget_to_layout(self, widget, label=None): # Horizontally added children