diff --git a/widgets/clearplaintextedit.cpp b/widgets/clearplaintextedit.cpp index 412f189..93568d1 100644 --- a/widgets/clearplaintextedit.cpp +++ b/widgets/clearplaintextedit.cpp @@ -1,6 +1,11 @@ #include "./clearplaintextedit.h" #include +#include + +#include + +using namespace std; namespace Widgets { @@ -14,12 +19,15 @@ namespace Widgets { */ ClearPlainTextEdit::ClearPlainTextEdit(QWidget *parent) : QPlainTextEdit(parent), - ButtonOverlay(this) + ButtonOverlay(viewport()) { // set alignment to show buttons in the bottom right corner ButtonOverlay::buttonLayout()->setAlignment(Qt::AlignBottom | Qt::AlignRight); ButtonOverlay::setClearButtonEnabled(true); connect(document(), &QTextDocument::contentsChanged, this, &ClearPlainTextEdit::handleTextChanged); + // ensure button layout is realigned when scrolling + connect(this->verticalScrollBar(), &QScrollBar::valueChanged, this, &ClearPlainTextEdit::handleScroll); + connect(this->verticalScrollBar(), &QScrollBar::rangeChanged, this, &ClearPlainTextEdit::handleScroll); } /*! @@ -44,6 +52,11 @@ void ClearPlainTextEdit::handleClearButtonClicked() cursor.removeSelectedText(); } +void ClearPlainTextEdit::handleScroll() +{ + buttonLayout()->update(); +} + bool ClearPlainTextEdit::isCleared() const { return document()->isEmpty(); diff --git a/widgets/clearplaintextedit.h b/widgets/clearplaintextedit.h index 6d8669a..123c2b6 100644 --- a/widgets/clearplaintextedit.h +++ b/widgets/clearplaintextedit.h @@ -18,6 +18,7 @@ public: private Q_SLOTS: void handleTextChanged(); void handleClearButtonClicked(); + void handleScroll(); };