Merge pull request #31955 from nekomatata/fix-caret-blink-timer

TextEdit & LineEdit caret blink timers run only when focused
This commit is contained in:
Rémi Verschelde 2019-09-04 14:48:38 +02:00 committed by GitHub
commit 56123ece32
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 16 deletions

View file

@ -872,7 +872,9 @@ void LineEdit::_notification(int p_what) {
} break;
case NOTIFICATION_FOCUS_ENTER: {
if (!caret_blink_enabled) {
if (caret_blink_enabled) {
caret_blink_timer->start();
} else {
draw_caret = true;
}
@ -886,6 +888,10 @@ void LineEdit::_notification(int p_what) {
} break;
case NOTIFICATION_FOCUS_EXIT: {
if (caret_blink_enabled) {
caret_blink_timer->stop();
}
OS::get_singleton()->set_ime_position(Point2());
OS::get_singleton()->set_ime_active(false);
ime_text = "";
@ -1053,11 +1059,15 @@ bool LineEdit::cursor_get_blink_enabled() const {
void LineEdit::cursor_set_blink_enabled(const bool p_enabled) {
caret_blink_enabled = p_enabled;
if (has_focus()) {
if (p_enabled) {
caret_blink_timer->start();
} else {
caret_blink_timer->stop();
}
}
draw_caret = true;
}
@ -1072,12 +1082,14 @@ void LineEdit::cursor_set_blink_speed(const float p_speed) {
void LineEdit::_reset_caret_blink_timer() {
if (caret_blink_enabled) {
draw_caret = true;
if (has_focus()) {
caret_blink_timer->stop();
caret_blink_timer->start();
draw_caret = true;
update();
}
}
}
void LineEdit::_toggle_draw_caret() {
draw_caret = !draw_caret;

View file

@ -1738,7 +1738,9 @@ void TextEdit::_notification(int p_what) {
} break;
case NOTIFICATION_FOCUS_ENTER: {
if (!caret_blink_enabled) {
if (caret_blink_enabled) {
caret_blink_timer->start();
} else {
draw_caret = true;
}
@ -1751,6 +1753,10 @@ void TextEdit::_notification(int p_what) {
} break;
case NOTIFICATION_FOCUS_EXIT: {
if (caret_blink_enabled) {
caret_blink_timer->stop();
}
OS::get_singleton()->set_ime_position(Point2());
OS::get_singleton()->set_ime_active(false);
ime_text = "";
@ -4396,11 +4402,14 @@ bool TextEdit::cursor_get_blink_enabled() const {
void TextEdit::cursor_set_blink_enabled(const bool p_enabled) {
caret_blink_enabled = p_enabled;
if (has_focus()) {
if (p_enabled) {
caret_blink_timer->start();
} else {
caret_blink_timer->stop();
}
}
draw_caret = true;
}
@ -4817,12 +4826,14 @@ int TextEdit::get_max_chars() const {
void TextEdit::_reset_caret_blink_timer() {
if (caret_blink_enabled) {
draw_caret = true;
if (has_focus()) {
caret_blink_timer->stop();
caret_blink_timer->start();
draw_caret = true;
update();
}
}
}
void TextEdit::_toggle_draw_caret() {
draw_caret = !draw_caret;