Просмотр исходного кода

Restart cursor blink cycle when text edited.

Lasse Öörni 15 лет назад
Родитель
Сommit
152c641d24
1 измененных файлов с 9 добавлено и 7 удалено
  1. 9 7
      Engine/UI/LineEdit.cpp

+ 9 - 7
Engine/UI/LineEdit.cpp

@@ -96,7 +96,7 @@ void LineEdit::update(float timeStep)
         if (rowWidths.size())
             textLength = rowWidths[0];
         
-        // This assumes that text alignment is top-left
+        // This assumes text alignment is top-left
         mCursor->setPosition(mText->getPosition() + IntVector2(textLength, 0));
         mCursor->setSize(mCursor->getWidth(), mText->getRowHeight());
         cursorVisible = mCursorBlinkTimer < 0.5f;
@@ -121,14 +121,14 @@ void LineEdit::update(float timeStep)
 void LineEdit::onChar(unsigned char c)
 {
     unsigned currentLength = mLine.length();
-    bool sendChangeEvent = false;
+    bool changed = false;
     
     if (c == '\b')
     {
         if (mLine.length())
         {
             mLine = mLine.substr(0, currentLength - 1);
-            sendChangeEvent = true;
+            changed = true;
         }
     }
     else if (c == '\r')
@@ -146,13 +146,15 @@ void LineEdit::onChar(unsigned char c)
     else if ((c >= 0x20) && ((!mMaxLength) || (currentLength < mMaxLength)))
     {
         mLine += (char)c;
-        sendChangeEvent = true;
+        changed = true;
     }
     
-    updateText();
-    
-    if (sendChangeEvent)
+    if (changed)
     {
+        // Restart cursor blinking from the visible state
+        mCursorBlinkTimer = 0.0f;
+        updateText();
+        
         using namespace TextChanged;
         
         VariantMap eventData;