Move the mouse handling from Separator to SeparatorWidget
As it's QWidget specific
This commit is contained in:
@@ -24,8 +24,7 @@
|
||||
#include "Item_p.h"
|
||||
#include "Config.h"
|
||||
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
#include <QGuiApplication>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
# include <windows.h>
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
#include <QRubberBand>
|
||||
#include <QMouseEvent>
|
||||
|
||||
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) {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user