diff --git a/CHANGELOG.md b/CHANGELOG.md index aec3539d..92e9264d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Bugfix: Fixed popup windows not appearing/minimizing correctly on the Windows taskbar. (#4181) - Bugfix: Fixed white border appearing around maximized window on Windows. (#4190) - Bugfix: Fixed window scaling being applied too many times on startup, causing windows like Settings to be slow. (#4193) +- Bugfix: Fixed input text cursor flickering when selecting text in a split. (#4197) ## 2.4.0-beta diff --git a/src/widgets/splits/Split.cpp b/src/widgets/splits/Split.cpp index c8e9e35a..cf81012c 100644 --- a/src/widgets/splits/Split.cpp +++ b/src/widgets/splits/Split.cpp @@ -116,7 +116,7 @@ Split::Split(QWidget *parent) this->updateInputPlaceholder(); this->view_->selectionChanged.connect([this]() { - if (view_->hasSelection()) + if (this->input_->hasSelection()) { this->input_->clearSelection(); } diff --git a/src/widgets/splits/SplitInput.cpp b/src/widgets/splits/SplitInput.cpp index e92f5d58..a1067a13 100644 --- a/src/widgets/splits/SplitInput.cpp +++ b/src/widgets/splits/SplitInput.cpp @@ -796,14 +796,16 @@ void SplitInput::insertCompletionText(const QString &input_) } } -void SplitInput::clearSelection() +bool SplitInput::hasSelection() const { - QTextCursor c = this->ui_.textEdit->textCursor(); + return this->ui_.textEdit->textCursor().hasSelection(); +} - c.setPosition(c.position()); - c.setPosition(c.position(), QTextCursor::KeepAnchor); - - this->ui_.textEdit->setTextCursor(c); +void SplitInput::clearSelection() const +{ + auto cursor = this->ui_.textEdit->textCursor(); + cursor.clearSelection(); + this->ui_.textEdit->setTextCursor(cursor); } bool SplitInput::isEditFirstWord() const diff --git a/src/widgets/splits/SplitInput.hpp b/src/widgets/splits/SplitInput.hpp index ae3afd63..a118ce01 100644 --- a/src/widgets/splits/SplitInput.hpp +++ b/src/widgets/splits/SplitInput.hpp @@ -45,7 +45,9 @@ public: SplitInput(QWidget *parent, Split *_chatWidget, bool enableInlineReplying = true); - void clearSelection(); + bool hasSelection() const; + void clearSelection() const; + bool isEditFirstWord() const; QString getInputText() const; void insertText(const QString &text);