TextEdit & LineEdit caret blink timers run only when focused (fixes #31936)
This commit is contained in:
parent
750f8d4926
commit
5fdea32622
2 changed files with 39 additions and 16 deletions
|
@ -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 (p_enabled) {
|
||||
caret_blink_timer->start();
|
||||
} else {
|
||||
caret_blink_timer->stop();
|
||||
|
||||
if (has_focus()) {
|
||||
if (p_enabled) {
|
||||
caret_blink_timer->start();
|
||||
} else {
|
||||
caret_blink_timer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
draw_caret = true;
|
||||
}
|
||||
|
||||
|
@ -1072,10 +1082,12 @@ void LineEdit::cursor_set_blink_speed(const float p_speed) {
|
|||
|
||||
void LineEdit::_reset_caret_blink_timer() {
|
||||
if (caret_blink_enabled) {
|
||||
caret_blink_timer->stop();
|
||||
caret_blink_timer->start();
|
||||
draw_caret = true;
|
||||
update();
|
||||
if (has_focus()) {
|
||||
caret_blink_timer->stop();
|
||||
caret_blink_timer->start();
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 (p_enabled) {
|
||||
caret_blink_timer->start();
|
||||
} else {
|
||||
caret_blink_timer->stop();
|
||||
if (has_focus()) {
|
||||
if (p_enabled) {
|
||||
caret_blink_timer->start();
|
||||
} else {
|
||||
caret_blink_timer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
draw_caret = true;
|
||||
}
|
||||
|
||||
|
@ -4817,10 +4826,12 @@ int TextEdit::get_max_chars() const {
|
|||
|
||||
void TextEdit::_reset_caret_blink_timer() {
|
||||
if (caret_blink_enabled) {
|
||||
caret_blink_timer->stop();
|
||||
caret_blink_timer->start();
|
||||
draw_caret = true;
|
||||
update();
|
||||
if (has_focus()) {
|
||||
caret_blink_timer->stop();
|
||||
caret_blink_timer->start();
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue