Update cached_width of the line_edit element when setting it to be secret
(cherry picked from commit 2e08578985
)
This commit is contained in:
parent
489b3c2949
commit
58a940e5aa
|
@ -240,15 +240,7 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
|
||||||
|
|
||||||
deselect();
|
deselect();
|
||||||
text = text.substr(cursor_pos, text.length() - cursor_pos);
|
text = text.substr(cursor_pos, text.length() - cursor_pos);
|
||||||
|
update_cached_width();
|
||||||
Ref<Font> font = get_font("font");
|
|
||||||
|
|
||||||
cached_width = 0;
|
|
||||||
if (font != NULL) {
|
|
||||||
for (int i = 0; i < text.length(); i++)
|
|
||||||
cached_width += font->get_char_size(text[i]).width;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_cursor_position(0);
|
set_cursor_position(0);
|
||||||
_text_changed();
|
_text_changed();
|
||||||
}
|
}
|
||||||
|
@ -1358,18 +1350,10 @@ void LineEdit::set_window_pos(int p_pos) {
|
||||||
void LineEdit::append_at_cursor(String p_text) {
|
void LineEdit::append_at_cursor(String p_text) {
|
||||||
|
|
||||||
if ((max_length <= 0) || (text.length() + p_text.length() <= max_length)) {
|
if ((max_length <= 0) || (text.length() + p_text.length() <= max_length)) {
|
||||||
|
|
||||||
Ref<Font> font = get_font("font");
|
|
||||||
if (font != NULL) {
|
|
||||||
for (int i = 0; i < p_text.length(); i++)
|
|
||||||
cached_width += font->get_char_size(p_text[i]).width;
|
|
||||||
} else {
|
|
||||||
cached_width = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
String pre = text.substr(0, cursor_pos);
|
String pre = text.substr(0, cursor_pos);
|
||||||
String post = text.substr(cursor_pos, text.length() - cursor_pos);
|
String post = text.substr(cursor_pos, text.length() - cursor_pos);
|
||||||
text = pre + p_text + post;
|
text = pre + p_text + post;
|
||||||
|
update_cached_width();
|
||||||
set_cursor_position(cursor_pos + p_text.length());
|
set_cursor_position(cursor_pos + p_text.length());
|
||||||
} else {
|
} else {
|
||||||
emit_signal("text_change_rejected");
|
emit_signal("text_change_rejected");
|
||||||
|
@ -1499,6 +1483,7 @@ bool LineEdit::is_editable() const {
|
||||||
void LineEdit::set_secret(bool p_secret) {
|
void LineEdit::set_secret(bool p_secret) {
|
||||||
|
|
||||||
pass = p_secret;
|
pass = p_secret;
|
||||||
|
update_cached_width();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1514,6 +1499,7 @@ void LineEdit::set_secret_character(const String &p_string) {
|
||||||
ERR_FAIL_COND_MSG(p_string.length() != 1, "Secret character must be exactly one character long (" + itos(p_string.length()) + " characters given).");
|
ERR_FAIL_COND_MSG(p_string.length() != 1, "Secret character must be exactly one character long (" + itos(p_string.length()) + " characters given).");
|
||||||
|
|
||||||
secret_character = p_string;
|
secret_character = p_string;
|
||||||
|
update_cached_width();
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1685,6 +1671,17 @@ void LineEdit::_emit_text_change() {
|
||||||
text_changed_dirty = false;
|
text_changed_dirty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LineEdit::update_cached_width() {
|
||||||
|
Ref<Font> font = get_font("font");
|
||||||
|
cached_width = 0;
|
||||||
|
if (font != NULL) {
|
||||||
|
String text = get_text();
|
||||||
|
for (int i = 0; i < text.length(); i++) {
|
||||||
|
cached_width += font->get_char_size(pass ? secret_character[0] : text[i]).width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LineEdit::update_placeholder_width() {
|
void LineEdit::update_placeholder_width() {
|
||||||
if ((max_length <= 0) || (placeholder_translated.length() <= max_length)) {
|
if ((max_length <= 0) || (placeholder_translated.length() <= max_length)) {
|
||||||
Ref<Font> font = get_font("font");
|
Ref<Font> font = get_font("font");
|
||||||
|
|
|
@ -132,6 +132,7 @@ private:
|
||||||
void _emit_text_change();
|
void _emit_text_change();
|
||||||
bool expand_to_text_length;
|
bool expand_to_text_length;
|
||||||
|
|
||||||
|
void update_cached_width();
|
||||||
void update_placeholder_width();
|
void update_placeholder_width();
|
||||||
|
|
||||||
bool caret_blink_enabled;
|
bool caret_blink_enabled;
|
||||||
|
|
Loading…
Reference in New Issue