Add item auto-highlighting to MenuBar
This commit is contained in:
parent
d3db8bbebd
commit
44c64b912f
@ -60,7 +60,7 @@ void MenuBar::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
if (active_menu >= 0) {
|
if (active_menu >= 0) {
|
||||||
get_menu_popup(active_menu)->hide();
|
get_menu_popup(active_menu)->hide();
|
||||||
}
|
}
|
||||||
_open_popup(selected_menu);
|
_open_popup(selected_menu, true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (p_event->is_action("ui_right") && p_event->is_pressed()) {
|
} else if (p_event->is_action("ui_right") && p_event->is_pressed()) {
|
||||||
@ -82,7 +82,7 @@ void MenuBar::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
if (active_menu >= 0) {
|
if (active_menu >= 0) {
|
||||||
get_menu_popup(active_menu)->hide();
|
get_menu_popup(active_menu)->hide();
|
||||||
}
|
}
|
||||||
_open_popup(selected_menu);
|
_open_popup(selected_menu, true);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -110,7 +110,7 @@ void MenuBar::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuBar::_open_popup(int p_index) {
|
void MenuBar::_open_popup(int p_index, bool p_focus_item) {
|
||||||
ERR_FAIL_INDEX(p_index, menu_cache.size());
|
ERR_FAIL_INDEX(p_index, menu_cache.size());
|
||||||
|
|
||||||
PopupMenu *pm = get_menu_popup(p_index);
|
PopupMenu *pm = get_menu_popup(p_index);
|
||||||
@ -134,6 +134,15 @@ void MenuBar::_open_popup(int p_index) {
|
|||||||
pm->set_parent_rect(Rect2(Point2(screen_pos - pm->get_position()), Size2(screen_size.x, screen_pos.y)));
|
pm->set_parent_rect(Rect2(Point2(screen_pos - pm->get_position()), Size2(screen_size.x, screen_pos.y)));
|
||||||
pm->popup();
|
pm->popup();
|
||||||
|
|
||||||
|
if (p_focus_item) {
|
||||||
|
for (int i = 0; i < pm->get_item_count(); i++) {
|
||||||
|
if (!pm->is_item_disabled(i)) {
|
||||||
|
pm->set_current_index(i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class MenuBar : public Control {
|
|||||||
Vector<PopupMenu *> _get_popups() const;
|
Vector<PopupMenu *> _get_popups() const;
|
||||||
int get_menu_idx_from_control(PopupMenu *p_child) const;
|
int get_menu_idx_from_control(PopupMenu *p_child) const;
|
||||||
|
|
||||||
void _open_popup(int p_index);
|
void _open_popup(int p_index, bool p_focus_item = false);
|
||||||
void _popup_visibility_changed(bool p_visible);
|
void _popup_visibility_changed(bool p_visible);
|
||||||
void _update_submenu(const String &p_menu_name, PopupMenu *p_child);
|
void _update_submenu(const String &p_menu_name, PopupMenu *p_child);
|
||||||
void _clear_menu();
|
void _clear_menu();
|
||||||
|
Loading…
Reference in New Issue
Block a user