diff --git a/src/widgets/chatwidgetinput.cpp b/src/widgets/chatwidgetinput.cpp index 7c5d330b7..1724dcd7c 100644 --- a/src/widgets/chatwidgetinput.cpp +++ b/src/widgets/chatwidgetinput.cpp @@ -59,10 +59,32 @@ ChatWidgetInput::ChatWidgetInput(ChatWidget *_chatWidget) } c->sendMessage(textInput.toPlainText()); + prevMsg.append(textInput.toPlainText()); event->accept(); if(!(event->modifiers() == Qt::ControlModifier)) { textInput.setText(QString()); + prevIndex = 0; + } + else if(textInput.toPlainText() == prevMsg.at(1)) + { + prevMsg.removeFirst(); + } + prevIndex = prevMsg.size(); + } + else if(event->key() == Qt::Key_Up){ + if(prevMsg.size() && prevIndex){ + prevIndex--; + textInput.setText(prevMsg.at(prevIndex)); + } + } + else if(event->key() == Qt::Key_Down){ + if(prevIndex != (prevMsg.size() - 1) && prevIndex != prevMsg.size()){ + prevIndex++; + textInput.setText(prevMsg.at(prevIndex)); + } else { + prevIndex = prevMsg.size(); + textInput.setText(QString()); } } }); diff --git a/src/widgets/chatwidgetinput.hpp b/src/widgets/chatwidgetinput.hpp index 2d0a3e389..485203082 100644 --- a/src/widgets/chatwidgetinput.hpp +++ b/src/widgets/chatwidgetinput.hpp @@ -38,7 +38,8 @@ private: ResizingTextEdit textInput; QLabel textLengthLabel; ChatWidgetHeaderButton emotesLabel; - + QStringList prevMsg; + unsigned int prevIndex = 0; virtual void refreshTheme() override; private slots: