Merge pull request #28205 from mikolasan/26937-hide-popup-menu

Hide popup menu when OptionButton is hidden
This commit is contained in:
Rémi Verschelde 2019-04-29 17:28:49 +02:00 committed by GitHub
commit 7e87a410fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 0 deletions

View File

@ -776,6 +776,12 @@ void ColorPickerButton::_notification(int p_what) {
if (p_what == MainLoop::NOTIFICATION_WM_QUIT_REQUEST && popup) {
popup->hide();
}
if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
if (popup && !is_visible_in_tree()) {
popup->hide();
}
}
}
void ColorPickerButton::set_pick_color(const Color &p_color) {

View File

@ -91,6 +91,16 @@ bool MenuButton::is_switch_on_hover() {
return switch_on_hover;
}
void MenuButton::_notification(int p_what) {
if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
if (!is_visible_in_tree()) {
popup->hide();
}
}
}
void MenuButton::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_popup"), &MenuButton::get_popup);

View File

@ -52,6 +52,7 @@ class MenuButton : public Button {
void _gui_input(Ref<InputEvent> p_event);
protected:
void _notification(int p_what);
static void _bind_methods();
public:

View File

@ -72,6 +72,11 @@ void OptionButton::_notification(int p_what) {
Point2 ofs(size.width - arrow->get_width() - get_constant("arrow_margin"), int(Math::abs((size.height - arrow->get_height()) / 2)));
arrow->draw(ci, ofs, clr);
} else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
if (!is_visible_in_tree()) {
popup->hide();
}
}
}