diff --git a/src/widgets/helper/splitinput.cpp b/src/widgets/helper/splitinput.cpp index 72698eaa2..74f68790a 100644 --- a/src/widgets/helper/splitinput.cpp +++ b/src/widgets/helper/splitinput.cpp @@ -198,6 +198,11 @@ void SplitInput::clearSelection() this->textInput.setTextCursor(c); } +QString SplitInput::getInputText() const +{ + return this->textInput.toPlainText(); +} + void SplitInput::refreshTheme() { QPalette palette; @@ -213,6 +218,8 @@ void SplitInput::editTextChanged() { QString text = this->textInput.toPlainText(); + this->textChanged.invoke(text); + text = text.trimmed(); static QRegularExpression spaceRegex("\\s\\s+"); text = text.replace(spaceRegex, " "); diff --git a/src/widgets/helper/splitinput.hpp b/src/widgets/helper/splitinput.hpp index 67ba30835..14e354078 100644 --- a/src/widgets/helper/splitinput.hpp +++ b/src/widgets/helper/splitinput.hpp @@ -26,6 +26,9 @@ public: SplitInput(Split *_chatWidget); void clearSelection(); + QString getInputText() const; + + pajlada::Signals::Signal textChanged; protected: virtual void paintEvent(QPaintEvent *) override; diff --git a/src/widgets/split.cpp b/src/widgets/split.cpp index 9b819ebf9..30c8fa10c 100644 --- a/src/widgets/split.cpp +++ b/src/widgets/split.cpp @@ -96,6 +96,26 @@ Split::Split(ChannelManager &_channelManager, SplitContainer *parent) this->input.clearSelection(); } }); + + this->input.textChanged.connect([this](const QString &newText) { + if (!SettingsManager::getInstance().hideEmptyInput) { + return; + } + + if (newText.length() == 0) { + this->input.hide(); + } else if (this->input.isHidden()) { + this->input.show(); + } + }); + + SettingsManager::getInstance().hideEmptyInput.connect([this](const bool &hideEmptyInput, auto) { + if (hideEmptyInput && this->input.getInputText().length() == 0) { + this->input.hide(); + } else { + this->input.show(); + } + }); } Split::~Split()