diff --git a/src/widgets/chatwidgetinput.cpp b/src/widgets/chatwidgetinput.cpp index acddf1af6..6d9b67ded 100644 --- a/src/widgets/chatwidgetinput.cpp +++ b/src/widgets/chatwidgetinput.cpp @@ -57,10 +57,34 @@ ChatWidgetInput::ChatWidgetInput(ChatWidget *_chatWidget) if (c == nullptr) { return; } - c->sendMessage(textInput.toPlainText()); + prevMsg.append(textInput.toPlainText()); event->accept(); - textInput.setText(QString()); + if(!(event->modifiers() == Qt::ControlModifier)) + { + textInput.setText(QString()); + prevIndex = 0; + } + else if(textInput.toPlainText() == prevMsg.at(prevMsg.size()-1)) + { + prevMsg.removeLast(); + } + 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: