You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Hide MenuButton / OptionButton popup on click if it's already visible.
This commit is contained in:
@@ -80,6 +80,11 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EditorPath::_show_popup() {
|
void EditorPath::_show_popup() {
|
||||||
|
if (sub_objects_menu->is_visible()) {
|
||||||
|
sub_objects_menu->hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
sub_objects_menu->clear();
|
sub_objects_menu->clear();
|
||||||
|
|
||||||
Size2 size = get_size();
|
Size2 size = get_size();
|
||||||
|
|||||||
@@ -86,6 +86,11 @@ void MenuButton::_popup_visibility_changed(bool p_visible) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MenuButton::pressed() {
|
void MenuButton::pressed() {
|
||||||
|
if (popup->is_visible()) {
|
||||||
|
popup->hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
emit_signal(SNAME("about_to_popup"));
|
emit_signal(SNAME("about_to_popup"));
|
||||||
Size2 size = get_size() * get_viewport()->get_canvas_transform().get_scale();
|
Size2 size = get_size() * get_viewport()->get_canvas_transform().get_scale();
|
||||||
|
|
||||||
@@ -105,12 +110,8 @@ void MenuButton::pressed() {
|
|||||||
popup->set_current_index(0);
|
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) {
|
void MenuButton::gui_input(const Ref<InputEvent> &p_event) {
|
||||||
BaseButton::gui_input(p_event);
|
BaseButton::gui_input(p_event);
|
||||||
|
|||||||
@@ -198,6 +198,11 @@ void OptionButton::_selected(int p_which) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OptionButton::pressed() {
|
void OptionButton::pressed() {
|
||||||
|
if (popup->is_visible()) {
|
||||||
|
popup->hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Size2 size = get_size() * get_viewport()->get_canvas_transform().get_scale();
|
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_position(get_screen_position() + Size2(0, size.height * get_global_transform().get_scale().y));
|
||||||
popup->set_size(Size2(size.width, 0));
|
popup->set_size(Size2(size.width, 0));
|
||||||
|
|||||||
Reference in New Issue
Block a user