Fix non-visible col number in text editor

The issue itself cannot be fully fixed due to the changes in 864c0e8,
but this solution makes the bug less likely to happen (it would only
happen with > 5 digits for line or column, and/or a much bigger font.
Could be further refined by taking the configured font into account...

Fixed #5890.
This commit is contained in:
Rémi Verschelde 2016-07-24 17:11:32 +02:00
parent 308d405c31
commit 60d9373547
2 changed files with 31 additions and 10 deletions

View File

@ -1032,8 +1032,8 @@ void CodeTextEditor::_reset_zoom() {
void CodeTextEditor::_line_col_changed() {
String text = String()+TTR("Line:")+" "+itos(text_editor->cursor_get_line()+1)+", "+TTR("Col:")+" "+itos(text_editor->cursor_get_column());
line_col->set_text(text);
line_nb->set_text(itos(text_editor->cursor_get_line() + 1));
col_nb->set_text(itos(text_editor->cursor_get_column()));
}
void CodeTextEditor::_text_changed() {
@ -1191,6 +1191,7 @@ CodeTextEditor::CodeTextEditor() {
HBoxContainer *status_bar = memnew( HBoxContainer );
status_mc->add_child(status_bar);
status_bar->set_h_size_flags(SIZE_EXPAND_FILL);
status_bar->add_child( memnew( Label ) ); //to keep the height if the other labels are not visible
idle = memnew( Timer );
add_child(idle);
@ -1212,14 +1213,33 @@ CodeTextEditor::CodeTextEditor() {
status_bar->add_spacer();
line_col = memnew( Label );
status_bar->add_child(line_col);
line_col->set_valign(Label::VALIGN_CENTER);
line_col->set_autowrap(true);
line_col->set_v_size_flags(SIZE_FILL);
line_col->set_custom_minimum_size(Size2(100,1)*EDSCALE);
status_bar->add_child( memnew( Label ) ); //to keep the height if the other labels are not visible
Label *line_txt = memnew( Label );
status_bar->add_child(line_txt);
line_txt->set_align(Label::ALIGN_RIGHT);
line_txt->set_valign(Label::VALIGN_CENTER);
line_txt->set_v_size_flags(SIZE_FILL);
line_txt->set_text(TTR("Line:"));
line_nb = memnew( Label );
status_bar->add_child(line_nb);
line_nb->set_valign(Label::VALIGN_CENTER);
line_nb->set_v_size_flags(SIZE_FILL);
line_nb->set_autowrap(true); // workaround to prevent resizing the label on each change
line_nb->set_custom_minimum_size(Size2(40,1)*EDSCALE);
Label *col_txt = memnew( Label );
status_bar->add_child(col_txt);
col_txt->set_align(Label::ALIGN_RIGHT);
col_txt->set_valign(Label::VALIGN_CENTER);
col_txt->set_v_size_flags(SIZE_FILL);
col_txt->set_text(TTR("Col:"));
col_nb = memnew( Label );
status_bar->add_child(col_nb);
col_nb->set_valign(Label::VALIGN_CENTER);
col_nb->set_v_size_flags(SIZE_FILL);
col_nb->set_autowrap(true); // workaround to prevent resizing the label on each change
col_nb->set_custom_minimum_size(Size2(40,1)*EDSCALE);
text_editor->connect("input_event", this,"_text_editor_input_event");
text_editor->connect("cursor_changed", this,"_line_col_changed");

View File

@ -196,7 +196,8 @@ class CodeTextEditor : public VBoxContainer {
TextEdit *text_editor;
FindReplaceBar *find_replace_bar;
Label *line_col;
Label *line_nb;
Label *col_nb;
Label *info;
Timer *idle;
Timer *code_complete_timer;