1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-05 12:10:55 +00:00

Allows user to click on error line to jump into error.

This commit is contained in:
Chaosus
2018-11-21 13:56:02 +03:00
parent da0ec37aa9
commit 1129d83272
4 changed files with 36 additions and 6 deletions

View File

@@ -1130,6 +1130,19 @@ void CodeTextEditor::set_edit_state(const Variant &p_state) {
void CodeTextEditor::set_error(const String &p_error) {
error->set_text(p_error);
error->set_tooltip(p_error);
error->set_visible(p_error != "");
}
void CodeTextEditor::set_error_pos(int p_line, int p_column) {
error_line = p_line;
error_column = p_column;
}
void CodeTextEditor::_error_pressed() {
text_editor->cursor_set_line(error_line);
text_editor->cursor_set_column(error_column);
text_editor->center_viewport_to_cursor();
}
void CodeTextEditor::_update_font() {
@@ -1191,6 +1204,7 @@ void CodeTextEditor::_bind_methods() {
ClassDB::bind_method("_code_complete_timer_timeout", &CodeTextEditor::_code_complete_timer_timeout);
ClassDB::bind_method("_complete_request", &CodeTextEditor::_complete_request);
ClassDB::bind_method("_font_resize_timeout", &CodeTextEditor::_font_resize_timeout);
ClassDB::bind_method("_error_pressed", &CodeTextEditor::_error_pressed);
ADD_SIGNAL(MethodInfo("validate_script"));
ADD_SIGNAL(MethodInfo("load_theme_settings"));
@@ -1239,13 +1253,22 @@ CodeTextEditor::CodeTextEditor() {
code_complete_timer->set_wait_time(EDITOR_DEF("text_editor/completion/code_complete_delay", .3f));
error = memnew(Label);
status_bar->add_child(error);
error->set_autowrap(true);
error->set_valign(Label::VALIGN_CENTER);
error_line = 0;
error_column = 0;
Control *error_box = memnew(Control);
status_bar->add_child(error_box);
error_box->set_v_size_flags(SIZE_EXPAND_FILL);
error_box->set_h_size_flags(SIZE_EXPAND_FILL);
error_box->set_clip_contents(true);
error = memnew(LinkButton);
error_box->add_child(error);
error->set_anchors_and_margins_preset(Control::PRESET_CENTER_LEFT);
error->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
error->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
error->add_font_override("font", EditorNode::get_singleton()->get_gui_base()->get_font("status_source", "EditorFonts"));
error->set_h_size_flags(SIZE_EXPAND_FILL); //required for it to display, given now it's clipping contents, do not touch
error->connect("pressed", this, "_error_pressed");
find_replace_bar->connect("error", error, "set_text");
status_bar->add_child(memnew(Label)); //to keep the height if the other labels are not visible