|
@@ -2078,6 +2078,7 @@ void VisualShaderEditor::_comment_desc_popup_show(const Point2 &p_position, int
|
|
|
}
|
|
|
comment_desc_change_edit->set_text(node->get_description());
|
|
|
comment_desc_change_popup->set_meta("id", p_node_id);
|
|
|
+ comment_desc_change_popup->reset_size();
|
|
|
comment_desc_change_popup->popup();
|
|
|
comment_desc_change_popup->set_position(p_position);
|
|
|
}
|
|
@@ -3165,7 +3166,7 @@ void VisualShaderEditor::_graph_gui_input(const Ref<InputEvent> &p_event) {
|
|
|
}
|
|
|
|
|
|
menu_point = graph->get_local_mouse_position();
|
|
|
- Point2 gpos = Input::get_singleton()->get_mouse_position();
|
|
|
+ Point2 gpos = get_screen_position() + get_local_mouse_position();
|
|
|
popup_menu->set_position(gpos);
|
|
|
popup_menu->reset_size();
|
|
|
popup_menu->popup();
|
|
@@ -3184,28 +3185,21 @@ void VisualShaderEditor::_show_members_dialog(bool at_mouse_pos, VisualShaderNod
|
|
|
saved_node_pos_dirty = true;
|
|
|
saved_node_pos = graph->get_local_mouse_position();
|
|
|
|
|
|
- Point2 gpos = Input::get_singleton()->get_mouse_position();
|
|
|
- members_dialog->popup();
|
|
|
+ Point2 gpos = get_screen_position() + get_local_mouse_position();
|
|
|
members_dialog->set_position(gpos);
|
|
|
} else {
|
|
|
- members_dialog->popup();
|
|
|
saved_node_pos_dirty = false;
|
|
|
- members_dialog->set_position(graph->get_global_position() + Point2(5 * EDSCALE, 65 * EDSCALE));
|
|
|
+ members_dialog->set_position(graph->get_screen_position() + Point2(5 * EDSCALE, 65 * EDSCALE));
|
|
|
}
|
|
|
+ members_dialog->popup();
|
|
|
|
|
|
- // keep dialog within window bounds
|
|
|
- Size2 window_size = DisplayServer::get_singleton()->window_get_size();
|
|
|
+ // Keep dialog within window bounds.
|
|
|
+ Rect2 window_rect = Rect2(DisplayServer::get_singleton()->window_get_position(), DisplayServer::get_singleton()->window_get_size());
|
|
|
Rect2 dialog_rect = Rect2(members_dialog->get_position(), members_dialog->get_size());
|
|
|
- if (dialog_rect.position.y + dialog_rect.size.y > window_size.y) {
|
|
|
- int difference = dialog_rect.position.y + dialog_rect.size.y - window_size.y;
|
|
|
- members_dialog->set_position(members_dialog->get_position() - Point2(0, difference));
|
|
|
- }
|
|
|
- if (dialog_rect.position.x + dialog_rect.size.x > window_size.x) {
|
|
|
- int difference = dialog_rect.position.x + dialog_rect.size.x - window_size.x;
|
|
|
- members_dialog->set_position(members_dialog->get_position() - Point2(difference, 0));
|
|
|
- }
|
|
|
+ Vector2 difference = (dialog_rect.get_end() - window_rect.get_end()).max(Vector2());
|
|
|
+ members_dialog->set_position(members_dialog->get_position() - difference);
|
|
|
|
|
|
- node_filter->call_deferred(SNAME("grab_focus")); // still not visible
|
|
|
+ node_filter->call_deferred(SNAME("grab_focus")); // Still not visible.
|
|
|
node_filter->select_all();
|
|
|
}
|
|
|
|
|
@@ -3781,10 +3775,10 @@ void VisualShaderEditor::_node_menu_id_pressed(int p_idx) {
|
|
|
_convert_constants_to_uniforms(true);
|
|
|
break;
|
|
|
case NodeMenuOptions::SET_COMMENT_TITLE:
|
|
|
- _comment_title_popup_show(get_global_mouse_position(), selected_comment);
|
|
|
+ _comment_title_popup_show(get_screen_position() + get_local_mouse_position(), selected_comment);
|
|
|
break;
|
|
|
case NodeMenuOptions::SET_COMMENT_DESCRIPTION:
|
|
|
- _comment_desc_popup_show(get_global_mouse_position(), selected_comment);
|
|
|
+ _comment_desc_popup_show(get_screen_position() + get_local_mouse_position(), selected_comment);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|