|
@@ -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();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|