From 7c9ee4f4976a9bea90752b7c21f5af84db962e7f Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Sun, 24 May 2020 17:58:04 +0100 Subject: [PATCH] Move the mouse handling from Separator to SeparatorWidget As it's QWidget specific --- src/private/multisplitter/Separator.cpp | 28 ++++++++++--------------- src/private/multisplitter/Separator_p.h | 9 ++++---- src/private/widgets/SeparatorWidget.cpp | 21 +++++++++++++++++++ src/private/widgets/SeparatorWidget_p.h | 4 ++++ 4 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/private/multisplitter/Separator.cpp b/src/private/multisplitter/Separator.cpp index ac95bc4f..afcf88a1 100644 --- a/src/private/multisplitter/Separator.cpp +++ b/src/private/multisplitter/Separator.cpp @@ -24,8 +24,7 @@ #include "Item_p.h" #include "Config.h" -#include -#include +#include #ifdef Q_OS_WIN # include @@ -85,7 +84,7 @@ Qt::Orientation Separator::orientation() const return d->orientation; } -void Separator::mousePressEvent(QMouseEvent *) +void Separator::onMousePress() { s_separatorBeingDragged = this; @@ -97,7 +96,14 @@ void Separator::mousePressEvent(QMouseEvent *) } } -void Separator::mouseMoveEvent(QMouseEvent *ev) +void Separator::onMouseDoubleClick() +{ + // a double click means we'll resize the left and right neighbour so that they occupy + // the same size (or top/bottom, depending on orientation). + d->parentContainer->requestEqualSize(this); +} + +void Separator::onMouseMove(QPoint pos) { if (!isBeingDragged()) return; @@ -118,7 +124,7 @@ void Separator::mouseMoveEvent(QMouseEvent *ev) } #endif - const int positionToGoTo = Layouting::pos(mapToParent(ev->pos()), d->orientation); + const int positionToGoTo = Layouting::pos(mapToParent(pos), d->orientation); const int minPos = d->parentContainer->minPosForSeparator_global(this); const int maxPos = d->parentContainer->maxPosForSeparator_global(this); @@ -135,18 +141,6 @@ void Separator::mouseMoveEvent(QMouseEvent *ev) d->parentContainer->requestSeparatorMove(this, positionToGoTo - position()); } -void Separator::mouseReleaseEvent(QMouseEvent *) -{ - onMouseReleased(); -} - -void Separator::mouseDoubleClickEvent(QMouseEvent *) -{ - // a double click means we'll resize the left and right neighbour so that they occupy - // the same size (or top/bottom, depending on orientation). - d->parentContainer->requestEqualSize(this); -} - void Separator::onMouseReleased() { if (d->lazyResizeRubberBand) { diff --git a/src/private/multisplitter/Separator_p.h b/src/private/multisplitter/Separator_p.h index d8ab4abc..bf28e690 100644 --- a/src/private/multisplitter/Separator_p.h +++ b/src/private/multisplitter/Separator_p.h @@ -58,15 +58,14 @@ public: protected: explicit Separator(Widget *hostWidget); - void mousePressEvent(QMouseEvent *) override; - void mouseMoveEvent(QMouseEvent *) override; - void mouseReleaseEvent(QMouseEvent *) override; - void mouseDoubleClickEvent(QMouseEvent *) override; virtual Widget* createRubberBand(Widget *parent) { Q_UNUSED(parent); return nullptr; } + void onMousePress(); + void onMouseReleased(); + void onMouseDoubleClick(); + void onMouseMove(QPoint pos); private: friend class Config; - void onMouseReleased(); void setLazyPosition(int); bool isBeingDragged() const; bool usesLazyResize() const; diff --git a/src/private/widgets/SeparatorWidget.cpp b/src/private/widgets/SeparatorWidget.cpp index c9f03b27..bdb7fcaa 100644 --- a/src/private/widgets/SeparatorWidget.cpp +++ b/src/private/widgets/SeparatorWidget.cpp @@ -25,6 +25,7 @@ #include #include #include +#include using namespace KDDockWidgets; @@ -65,6 +66,26 @@ void SeparatorWidget::leaveEvent(QEvent *) setCursor(Qt::ArrowCursor); } +void SeparatorWidget::mousePressEvent(QMouseEvent *) +{ + onMousePress(); +} + +void SeparatorWidget::mouseMoveEvent(QMouseEvent *ev) +{ + onMouseMove(ev->pos()); +} + +void SeparatorWidget::mouseReleaseEvent(QMouseEvent *) +{ + onMouseReleased(); +} + +void SeparatorWidget::mouseDoubleClickEvent(QMouseEvent *) +{ + onMouseDoubleClick(); +} + Layouting::Widget *SeparatorWidget::createRubberBand(Layouting::Widget *parent) { if (!parent) { diff --git a/src/private/widgets/SeparatorWidget_p.h b/src/private/widgets/SeparatorWidget_p.h index 8f66fb3c..5b895d9e 100644 --- a/src/private/widgets/SeparatorWidget_p.h +++ b/src/private/widgets/SeparatorWidget_p.h @@ -40,6 +40,10 @@ protected: void paintEvent(QPaintEvent *) override; void enterEvent(QEvent *) override; void leaveEvent(QEvent *) override; + void mousePressEvent(QMouseEvent *) override; + void mouseMoveEvent(QMouseEvent *) override; + void mouseReleaseEvent(QMouseEvent *) override; + void mouseDoubleClickEvent(QMouseEvent *) override; Layouting::Widget* createRubberBand(Layouting::Widget *parent) override; };