Fix `MenuBar` hover position scaling properly with the scale factor multiplier

This commit is contained in:
Emmanouil Papadeas 2023-12-18 18:07:34 +02:00
parent 2d0ee20ff3
commit e864b26e54
4 changed files with 4 additions and 43 deletions

View File

@ -181,24 +181,7 @@ void MenuBar::_popup_visibility_changed(bool p_visible) {
}
if (switch_on_hover) {
Window *wnd = Object::cast_to<Window>(get_viewport());
if (wnd) {
mouse_pos_adjusted = wnd->get_position();
if (wnd->is_embedded()) {
Window *wnd_parent = Object::cast_to<Window>(wnd->get_parent()->get_viewport());
while (wnd_parent) {
if (!wnd_parent->is_embedded()) {
mouse_pos_adjusted += wnd_parent->get_position();
break;
}
wnd_parent = Object::cast_to<Window>(wnd_parent->get_parent()->get_viewport());
}
}
set_process_internal(true);
}
set_process_internal(true);
}
}
@ -334,8 +317,7 @@ void MenuBar::_notification(int p_what) {
// Handled by OS.
return;
}
Vector2 pos = DisplayServer::get_singleton()->mouse_get_position() - mouse_pos_adjusted - get_global_position();
Vector2 pos = get_local_mouse_position();
if (pos == old_mouse_pos) {
return;
}

View File

@ -71,7 +71,6 @@ class MenuBar : public Control {
int selected_menu = -1;
int active_menu = -1;
Vector2i mouse_pos_adjusted;
Vector2i old_mouse_pos;
ObjectID shortcut_context;

View File

@ -57,24 +57,7 @@ void MenuButton::_popup_visibility_changed(bool p_visible) {
}
if (switch_on_hover) {
Window *wnd = Object::cast_to<Window>(get_viewport());
if (wnd) {
mouse_pos_adjusted = wnd->get_position();
if (wnd->is_embedded()) {
Window *wnd_parent = Object::cast_to<Window>(wnd->get_parent()->get_viewport());
while (wnd_parent) {
if (!wnd_parent->is_embedded()) {
mouse_pos_adjusted += wnd_parent->get_position();
break;
}
wnd_parent = Object::cast_to<Window>(wnd_parent->get_parent()->get_viewport());
}
}
set_process_internal(true);
}
set_process_internal(true);
}
}
@ -155,8 +138,7 @@ void MenuButton::_notification(int p_what) {
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
Vector2i mouse_pos = DisplayServer::get_singleton()->mouse_get_position() - mouse_pos_adjusted;
MenuButton *menu_btn_other = Object::cast_to<MenuButton>(get_viewport()->gui_find_control(mouse_pos));
MenuButton *menu_btn_other = Object::cast_to<MenuButton>(get_viewport()->gui_find_control(get_viewport()->get_mouse_position()));
if (menu_btn_other && menu_btn_other != this && menu_btn_other->is_switch_on_hover() && !menu_btn_other->is_disabled() &&
(get_parent()->is_ancestor_of(menu_btn_other) || menu_btn_other->get_parent()->is_ancestor_of(popup))) {

View File

@ -42,8 +42,6 @@ class MenuButton : public Button {
bool disable_shortcuts = false;
PopupMenu *popup = nullptr;
Vector2i mouse_pos_adjusted;
void _popup_visibility_changed(bool p_visible);
protected: