diff options
Diffstat (limited to 'editor/plugins/visual_shader_editor_plugin.cpp')
-rw-r--r-- | editor/plugins/visual_shader_editor_plugin.cpp | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp index bf8dab92f8..c378bf315b 100644 --- a/editor/plugins/visual_shader_editor_plugin.cpp +++ b/editor/plugins/visual_shader_editor_plugin.cpp @@ -2148,6 +2148,7 @@ String VisualShaderEditor::_get_description(int p_idx) { void VisualShaderEditor::_update_options_menu() { node_desc->set_text(""); + highend_label->set_visible(false); members_dialog->get_ok_button()->set_disabled(true); members->clear(); @@ -2312,6 +2313,8 @@ void VisualShaderEditor::_update_options_menu() { item->select(0); node_desc->set_text(options[i].description); is_first_item = false; + + members_dialog->get_ok_button()->set_disabled(false); } switch (options[i].return_type) { case VisualShaderNode::PORT_TYPE_SCALAR: @@ -4924,7 +4927,7 @@ void VisualShaderEditor::_show_members_dialog(bool at_mouse_pos, VisualShaderNod Vector2 difference = (dialog_rect.get_end() - window_rect.get_end()).maxf(0); members_dialog->set_position(members_dialog->get_position() - difference); - callable_mp((Control *)node_filter, &Control::grab_focus).call_deferred(); // Still not visible. + node_filter->grab_focus(); node_filter->select_all(); } @@ -4947,6 +4950,8 @@ void VisualShaderEditor::_show_add_varying_dialog() { add_varying_dialog->set_position(graph->get_screen_position() + varying_button->get_position() + Point2(5 * EDSCALE, 65 * EDSCALE)); add_varying_dialog->popup(); + varying_name->grab_focus(); + // 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(add_varying_dialog->get_position(), add_varying_dialog->get_size()); @@ -4958,6 +4963,8 @@ void VisualShaderEditor::_show_remove_varying_dialog() { remove_varying_dialog->set_position(graph->get_screen_position() + varying_button->get_position() + Point2(5 * EDSCALE, 65 * EDSCALE)); remove_varying_dialog->popup(); + varyings->grab_focus(); + // 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(remove_varying_dialog->get_position(), remove_varying_dialog->get_size()); @@ -4965,11 +4972,14 @@ void VisualShaderEditor::_show_remove_varying_dialog() { remove_varying_dialog->set_position(remove_varying_dialog->get_position() - difference); } -void VisualShaderEditor::_sbox_input(const Ref<InputEvent> &p_ie) { - Ref<InputEventKey> ie = p_ie; - if (ie.is_valid() && (ie->get_keycode() == Key::UP || ie->get_keycode() == Key::DOWN || ie->get_keycode() == Key::ENTER || ie->get_keycode() == Key::KP_ENTER)) { - members->gui_input(ie); - node_filter->accept_event(); +void VisualShaderEditor::_sbox_input(const Ref<InputEvent> &p_event) { + // Redirect navigational key events to the tree. + Ref<InputEventKey> key = p_event; + if (key.is_valid()) { + if (key->is_action("ui_up", true) || key->is_action("ui_down", true) || key->is_action("ui_page_up") || key->is_action("ui_page_down")) { + members->gui_input(key); + node_filter->accept_event(); + } } } @@ -5700,9 +5710,6 @@ void VisualShaderEditor::_member_selected() { } } -void VisualShaderEditor::_member_unselected() { -} - void VisualShaderEditor::_member_create() { TreeItem *item = members->get_selected(); if (item != nullptr && item->has_meta("id")) { @@ -5987,6 +5994,7 @@ Variant VisualShaderEditor::get_drag_data_fw(const Point2 &p_point, Control *p_f Label *label = memnew(Label); label->set_text(it->get_text(0)); + label->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); set_drag_preview(label); return d; } @@ -6092,7 +6100,6 @@ void VisualShaderEditor::_show_preview_text() { } else { code_preview_window->popup(); } - _preview_size_changed(); if (pending_update_preview) { _update_preview(); @@ -6105,14 +6112,9 @@ void VisualShaderEditor::_show_preview_text() { void VisualShaderEditor::_preview_close_requested() { code_preview_showed = false; - code_preview_window->hide(); code_preview_button->set_pressed(false); } -void VisualShaderEditor::_preview_size_changed() { - code_preview_vbox->set_custom_minimum_size(code_preview_window->get_size()); -} - static ShaderLanguage::DataType _visual_shader_editor_get_global_shader_uniform_type(const StringName &p_variable) { RS::GlobalShaderParameterType gvt = RS::get_singleton()->global_shader_parameter_get_type(p_variable); return (ShaderLanguage::DataType)RS::global_shader_uniform_type_get_shader_datatype(gvt); @@ -6460,12 +6462,12 @@ VisualShaderEditor::VisualShaderEditor() { // CODE PREVIEW /////////////////////////////////////// - code_preview_window = memnew(Window); + code_preview_window = memnew(AcceptDialog); code_preview_window->set_title(TTR("Generated Shader Code")); code_preview_window->set_visible(code_preview_showed); - code_preview_window->set_exclusive(true); - code_preview_window->connect("close_requested", callable_mp(this, &VisualShaderEditor::_preview_close_requested)); - code_preview_window->connect("size_changed", callable_mp(this, &VisualShaderEditor::_preview_size_changed)); + code_preview_window->set_ok_button_text(TTR("Close")); + code_preview_window->connect(SceneStringName(confirmed), callable_mp(this, &VisualShaderEditor::_preview_close_requested)); + code_preview_window->connect("canceled", callable_mp(this, &VisualShaderEditor::_preview_close_requested)); add_child(code_preview_window); code_preview_vbox = memnew(VBoxContainer); @@ -6559,6 +6561,7 @@ VisualShaderEditor::VisualShaderEditor() { parameters->set_hide_folding(false); parameters->set_h_size_flags(SIZE_EXPAND_FILL); parameters->set_v_size_flags(SIZE_EXPAND_FILL); + parameters->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); parameters->connect(SceneStringName(item_selected), callable_mp(this, &VisualShaderEditor::_param_selected)); parameters->connect("nothing_selected", callable_mp(this, &VisualShaderEditor::_param_unselected)); sc->add_child(parameters); @@ -6612,7 +6615,6 @@ VisualShaderEditor::VisualShaderEditor() { members->set_custom_minimum_size(Size2(180 * EDSCALE, 200 * EDSCALE)); members->connect("item_activated", callable_mp(this, &VisualShaderEditor::_member_create)); members->connect(SceneStringName(item_selected), callable_mp(this, &VisualShaderEditor::_member_selected)); - members->connect("nothing_selected", callable_mp(this, &VisualShaderEditor::_member_unselected)); HBoxContainer *desc_hbox = memnew(HBoxContainer); members_vb->add_child(desc_hbox); @@ -6638,21 +6640,20 @@ VisualShaderEditor::VisualShaderEditor() { members_dialog = memnew(ConfirmationDialog); members_dialog->set_title(TTR("Create Shader Node")); - members_dialog->set_exclusive(true); members_dialog->add_child(members_vb); members_dialog->set_ok_button_text(TTR("Create")); - members_dialog->get_ok_button()->connect(SceneStringName(pressed), callable_mp(this, &VisualShaderEditor::_member_create)); + members_dialog->connect(SceneStringName(confirmed), callable_mp(this, &VisualShaderEditor::_member_create)); members_dialog->get_ok_button()->set_disabled(true); members_dialog->connect("canceled", callable_mp(this, &VisualShaderEditor::_member_cancel)); + members_dialog->register_text_enter(node_filter); add_child(members_dialog); // add varyings dialog { add_varying_dialog = memnew(ConfirmationDialog); add_varying_dialog->set_title(TTR("Create Shader Varying")); - add_varying_dialog->set_exclusive(true); add_varying_dialog->set_ok_button_text(TTR("Create")); - add_varying_dialog->get_ok_button()->connect(SceneStringName(pressed), callable_mp(this, &VisualShaderEditor::_varying_create)); + add_varying_dialog->connect(SceneStringName(confirmed), callable_mp(this, &VisualShaderEditor::_varying_create)); add_varying_dialog->get_ok_button()->set_disabled(true); add_child(add_varying_dialog); @@ -6679,6 +6680,7 @@ VisualShaderEditor::VisualShaderEditor() { varying_name->set_custom_minimum_size(Size2(150 * EDSCALE, 0)); varying_name->set_h_size_flags(SIZE_EXPAND_FILL); varying_name->connect(SceneStringName(text_changed), callable_mp(this, &VisualShaderEditor::_varying_name_changed)); + add_varying_dialog->register_text_enter(varying_name); varying_mode = memnew(OptionButton); hb->add_child(varying_mode); @@ -6696,9 +6698,8 @@ VisualShaderEditor::VisualShaderEditor() { { remove_varying_dialog = memnew(ConfirmationDialog); remove_varying_dialog->set_title(TTR("Delete Shader Varying")); - remove_varying_dialog->set_exclusive(true); remove_varying_dialog->set_ok_button_text(TTR("Delete")); - remove_varying_dialog->get_ok_button()->connect(SceneStringName(pressed), callable_mp(this, &VisualShaderEditor::_varying_deleted)); + remove_varying_dialog->connect(SceneStringName(confirmed), callable_mp(this, &VisualShaderEditor::_varying_deleted)); add_child(remove_varying_dialog); VBoxContainer *vb = memnew(VBoxContainer); |