Prechádzať zdrojové kódy

Remember the current row being edited in Console.

Lasse Öörni 15 rokov pred
rodič
commit
1a04680907
2 zmenil súbory, kde vykonal 8 pridanie a 2 odobranie
  1. 6 2
      Engine/Engine/Console.cpp
  2. 2 0
      Engine/Engine/Console.h

+ 6 - 2
Engine/Engine/Console.cpp

@@ -198,7 +198,9 @@ void Console::handleTextFinished(StringHash eventType, VariantMap& eventData)
         if (mHistory.size() > mHistoryRows)
         if (mHistory.size() > mHistoryRows)
             mHistory.erase(mHistory.begin());
             mHistory.erase(mHistory.begin());
         mHistoryPosition = mHistory.size();
         mHistoryPosition = mHistory.size();
-        mLineEdit->setText(std::string());
+        
+        mCurrentRow = std::string();
+        mLineEdit->setText(mCurrentRow);
     }
     }
 }
 }
 
 
@@ -216,6 +218,8 @@ void Console::handleLineEditKey(StringHash eventType, VariantMap& eventData)
     case KEY_UP:
     case KEY_UP:
         if (mHistoryPosition > 0)
         if (mHistoryPosition > 0)
         {
         {
+            if (mHistoryPosition == mHistory.size())
+                mCurrentRow = mLineEdit->getText();
             --mHistoryPosition;
             --mHistoryPosition;
             changed = true;
             changed = true;
         }
         }
@@ -235,7 +239,7 @@ void Console::handleLineEditKey(StringHash eventType, VariantMap& eventData)
         if (mHistoryPosition < mHistory.size())
         if (mHistoryPosition < mHistory.size())
             mLineEdit->setText(mHistory[mHistoryPosition]);
             mLineEdit->setText(mHistory[mHistoryPosition]);
         else
         else
-            mLineEdit->setText(std::string());
+            mLineEdit->setText(mCurrentRow);
     }
     }
 }
 }
 
 

+ 2 - 0
Engine/Engine/Console.h

@@ -95,6 +95,8 @@ private:
     SharedPtr<LineEdit> mLineEdit;
     SharedPtr<LineEdit> mLineEdit;
     //! Command history
     //! Command history
     std::vector<std::string> mHistory;
     std::vector<std::string> mHistory;
+    //! Current row being edited
+    std::string mCurrentRow;
     //! Command history maximum rows
     //! Command history maximum rows
     unsigned mHistoryRows;
     unsigned mHistoryRows;
     //! Command history current position
     //! Command history current position