summaryrefslogtreecommitdiffstats
path: root/editor/plugins/visual_shader_editor_plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'editor/plugins/visual_shader_editor_plugin.cpp')
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp53
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);