summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-08-26 11:59:50 +0200
committerGitHub <noreply@github.com>2022-08-26 11:59:50 +0200
commitac7b5111f548e87b3555afb4f2a83ecd1ffbe85e (patch)
treeb9a3d5c00e9a071ea012e33606bd5c50a8cfb52f
parent7013c68619dcd42d03497b538f141ad585535e08 (diff)
parentcd095ab64ad492ef0a775c3ef5b8fa2aa8d0edd5 (diff)
Merge pull request #64768 from bruvzg/popups_hide_if_visible
-rw-r--r--editor/editor_path.cpp5
-rw-r--r--scene/gui/menu_button.cpp11
-rw-r--r--scene/gui/option_button.cpp5
3 files changed, 16 insertions, 5 deletions
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index 87ebd3e1c1..adbfacd131 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -80,6 +80,11 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
}
void EditorPath::_show_popup() {
+ if (sub_objects_menu->is_visible()) {
+ sub_objects_menu->hide();
+ return;
+ }
+
sub_objects_menu->clear();
Size2 size = get_size();
diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp
index a03db82332..e6e17cc881 100644
--- a/scene/gui/menu_button.cpp
+++ b/scene/gui/menu_button.cpp
@@ -86,6 +86,11 @@ void MenuButton::_popup_visibility_changed(bool p_visible) {
}
void MenuButton::pressed() {
+ if (popup->is_visible()) {
+ popup->hide();
+ return;
+ }
+
emit_signal(SNAME("about_to_popup"));
Size2 size = get_size() * get_viewport()->get_canvas_transform().get_scale();
@@ -103,11 +108,7 @@ void MenuButton::pressed() {
popup->set_current_index(0);
}
- if (popup->is_visible()) {
- popup->hide();
- } else {
- popup->popup();
- }
+ popup->popup();
}
void MenuButton::gui_input(const Ref<InputEvent> &p_event) {
diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp
index 931dffe3bb..881acdbf3a 100644
--- a/scene/gui/option_button.cpp
+++ b/scene/gui/option_button.cpp
@@ -198,6 +198,11 @@ void OptionButton::_selected(int p_which) {
}
void OptionButton::pressed() {
+ if (popup->is_visible()) {
+ popup->hide();
+ return;
+ }
+
Size2 size = get_size() * get_viewport()->get_canvas_transform().get_scale();
popup->set_position(get_screen_position() + Size2(0, size.height * get_global_transform().get_scale().y));
popup->set_size(Size2(size.width, 0));