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;
|
} break;
|
||||||
case NOTIFICATION_FOCUS_ENTER: {
|
case NOTIFICATION_FOCUS_ENTER: {
|
||||||
|
|
||||||
if (!caret_blink_enabled) {
|
if (caret_blink_enabled) {
|
||||||
|
caret_blink_timer->start();
|
||||||
|
} else {
|
||||||
draw_caret = true;
|
draw_caret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -886,6 +888,10 @@ void LineEdit::_notification(int p_what) {
|
||||||
} break;
|
} break;
|
||||||
case NOTIFICATION_FOCUS_EXIT: {
|
case NOTIFICATION_FOCUS_EXIT: {
|
||||||
|
|
||||||
|
if (caret_blink_enabled) {
|
||||||
|
caret_blink_timer->stop();
|
||||||
|
}
|
||||||
|
|
||||||
OS::get_singleton()->set_ime_position(Point2());
|
OS::get_singleton()->set_ime_position(Point2());
|
||||||
OS::get_singleton()->set_ime_active(false);
|
OS::get_singleton()->set_ime_active(false);
|
||||||
ime_text = "";
|
ime_text = "";
|
||||||
|
@ -1053,11 +1059,15 @@ bool LineEdit::cursor_get_blink_enabled() const {
|
||||||
|
|
||||||
void LineEdit::cursor_set_blink_enabled(const bool p_enabled) {
|
void LineEdit::cursor_set_blink_enabled(const bool p_enabled) {
|
||||||
caret_blink_enabled = p_enabled;
|
caret_blink_enabled = p_enabled;
|
||||||
if (p_enabled) {
|
|
||||||
caret_blink_timer->start();
|
if (has_focus()) {
|
||||||
} else {
|
if (p_enabled) {
|
||||||
caret_blink_timer->stop();
|
caret_blink_timer->start();
|
||||||
|
} else {
|
||||||
|
caret_blink_timer->stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_caret = true;
|
draw_caret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1072,10 +1082,12 @@ void LineEdit::cursor_set_blink_speed(const float p_speed) {
|
||||||
|
|
||||||
void LineEdit::_reset_caret_blink_timer() {
|
void LineEdit::_reset_caret_blink_timer() {
|
||||||
if (caret_blink_enabled) {
|
if (caret_blink_enabled) {
|
||||||
caret_blink_timer->stop();
|
|
||||||
caret_blink_timer->start();
|
|
||||||
draw_caret = true;
|
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;
|
} break;
|
||||||
case NOTIFICATION_FOCUS_ENTER: {
|
case NOTIFICATION_FOCUS_ENTER: {
|
||||||
|
|
||||||
if (!caret_blink_enabled) {
|
if (caret_blink_enabled) {
|
||||||
|
caret_blink_timer->start();
|
||||||
|
} else {
|
||||||
draw_caret = true;
|
draw_caret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1751,6 +1753,10 @@ void TextEdit::_notification(int p_what) {
|
||||||
} break;
|
} break;
|
||||||
case NOTIFICATION_FOCUS_EXIT: {
|
case NOTIFICATION_FOCUS_EXIT: {
|
||||||
|
|
||||||
|
if (caret_blink_enabled) {
|
||||||
|
caret_blink_timer->stop();
|
||||||
|
}
|
||||||
|
|
||||||
OS::get_singleton()->set_ime_position(Point2());
|
OS::get_singleton()->set_ime_position(Point2());
|
||||||
OS::get_singleton()->set_ime_active(false);
|
OS::get_singleton()->set_ime_active(false);
|
||||||
ime_text = "";
|
ime_text = "";
|
||||||
|
@ -4396,11 +4402,14 @@ bool TextEdit::cursor_get_blink_enabled() const {
|
||||||
void TextEdit::cursor_set_blink_enabled(const bool p_enabled) {
|
void TextEdit::cursor_set_blink_enabled(const bool p_enabled) {
|
||||||
caret_blink_enabled = p_enabled;
|
caret_blink_enabled = p_enabled;
|
||||||
|
|
||||||
if (p_enabled) {
|
if (has_focus()) {
|
||||||
caret_blink_timer->start();
|
if (p_enabled) {
|
||||||
} else {
|
caret_blink_timer->start();
|
||||||
caret_blink_timer->stop();
|
} else {
|
||||||
|
caret_blink_timer->stop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
draw_caret = true;
|
draw_caret = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4817,10 +4826,12 @@ int TextEdit::get_max_chars() const {
|
||||||
|
|
||||||
void TextEdit::_reset_caret_blink_timer() {
|
void TextEdit::_reset_caret_blink_timer() {
|
||||||
if (caret_blink_enabled) {
|
if (caret_blink_enabled) {
|
||||||
caret_blink_timer->stop();
|
|
||||||
caret_blink_timer->start();
|
|
||||||
draw_caret = true;
|
draw_caret = true;
|
||||||
update();
|
if (has_focus()) {
|
||||||
|
caret_blink_timer->stop();
|
||||||
|
caret_blink_timer->start();
|
||||||
|
update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue