summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-04-03 09:57:10 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-04-03 19:01:57 +0200
commitab71c9c996b217d037e5430d04b3ce36e3c2b928 (patch)
tree86d653a14bdd7d53b0227ad84c6e4ddc651dfa3e /src/widgets
parent708d365a64ee05dffa04db2ad308d79a17db4a68 (diff)
Unexport QWidgetResizeHandler and remove move functionality
Address FIXME comment. The class is not public, and only used in QtWidgets for the resizing of docking widgets. The move functionality is unused, and has been removed. Change-Id: Id477f36cb7d449b06e124950fed6f5f182aa5721 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qdockwidget.cpp6
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp3
-rw-r--r--src/widgets/widgets/qwidgetresizehandler.cpp106
-rw-r--r--src/widgets/widgets/qwidgetresizehandler_p.h34
4 files changed, 39 insertions, 110 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 1d358c493e..cfe17af6e9 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -887,12 +887,10 @@ void QDockWidgetPrivate::endDrag(bool abort)
void QDockWidgetPrivate::setResizerActive(bool active)
{
Q_Q(QDockWidget);
- if (active && !resizer) {
+ if (active && !resizer)
resizer = new QWidgetResizeHandler(q);
- resizer->setMovingEnabled(false);
- }
if (resizer)
- resizer->setActive(QWidgetResizeHandler::Resize, active);
+ resizer->setEnabled(active);
}
bool QDockWidgetPrivate::isAnimating() const
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index 30562d8270..83697278b8 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -200,7 +200,6 @@ public:
QDockWidgetGroupLayout(QDockWidgetGroupWindow* parent) : QLayout(parent) {
setSizeConstraint(QLayout::SetMinAndMaxSize);
resizer = new QWidgetResizeHandler(parent);
- resizer->setMovingEnabled(false);
}
~QDockWidgetGroupLayout() {
layoutState.deleteAllLayoutItems();
@@ -259,7 +258,7 @@ public:
li->apply(false);
if (savedState.rect.isValid())
savedState.rect = li->rect;
- resizer->setActive(QWidgetResizeHandler::Resize, !nativeWindowDeco());
+ resizer->setEnabled(!nativeWindowDeco());
}
QDockAreaLayoutInfo *dockAreaLayoutInfo() { return &layoutState; }
diff --git a/src/widgets/widgets/qwidgetresizehandler.cpp b/src/widgets/widgets/qwidgetresizehandler.cpp
index 9dbba12aba..43aa4c7988 100644
--- a/src/widgets/widgets/qwidgetresizehandler.cpp
+++ b/src/widgets/widgets/qwidgetresizehandler.cpp
@@ -58,46 +58,37 @@ QT_BEGIN_NAMESPACE
static bool resizeHorizontalDirectionFixed = false;
static bool resizeVerticalDirectionFixed = false;
-// ### fixme: Qt 6: No longer export QWidgetResizeHandler and remove "Move"
-// functionality. Currently, only the resize functionality is used by QDockWidget.
-// Historically, the class was used in Qt 3's QWorkspace (predecessor to QMdiArea).
-
QWidgetResizeHandler::QWidgetResizeHandler(QWidget *parent, QWidget *cw)
: QObject(parent), widget(parent), childWidget(cw ? cw : parent),
- fw(0), extrahei(0), buttonDown(false), moveResizeMode(false), sizeprotect(true), movingEnabled(true)
+ fw(0), extrahei(0), buttonDown(false), active(false)
{
mode = Nowhere;
widget->setMouseTracking(true);
QFrame *frame = qobject_cast<QFrame*>(widget);
range = frame ? frame->frameWidth() : RANGE;
range = qMax(RANGE, range);
- activeForMove = activeForResize = true;
+ enabled = true;
widget->installEventFilter(this);
}
-void QWidgetResizeHandler::setActive(Action ac, bool b)
+void QWidgetResizeHandler::setEnabled(bool b)
{
- if (ac & Move)
- activeForMove = b;
- if (ac & Resize)
- activeForResize = b;
+ if (b == enabled)
+ return;
- if (!isActive())
+ enabled = b;
+ if (!enabled)
setMouseCursor(Nowhere);
}
-bool QWidgetResizeHandler::isActive(Action ac) const
+bool QWidgetResizeHandler::isEnabled() const
{
- bool b = false;
- if (ac & Move) b = activeForMove;
- if (ac & Resize) b |= activeForResize;
-
- return b;
+ return enabled;
}
bool QWidgetResizeHandler::eventFilter(QObject *o, QEvent *ee)
{
- if (!isActive()
+ if (!isEnabled()
|| (ee->type() != QEvent::MouseButtonPress
&& ee->type() != QEvent::MouseButtonRelease
&& ee->type() != QEvent::MouseMove
@@ -126,35 +117,24 @@ bool QWidgetResizeHandler::eventFilter(QObject *o, QEvent *ee)
if (e->button() == Qt::LeftButton) {
buttonDown = false;
emit activate();
- bool me = movingEnabled;
- movingEnabled = (me && o == widget);
mouseMoveEvent(e);
- movingEnabled = me;
buttonDown = true;
moveOffset = widget->mapFromGlobal(e->globalPos());
invertedMoveOffset = widget->rect().bottomRight() - moveOffset;
- if (mode == Center) {
- if (movingEnabled)
- return true;
- } else {
+ if (mode != Center)
return true;
- }
}
} break;
case QEvent::MouseButtonRelease:
if (w->isMaximized())
break;
if (static_cast<QMouseEvent *>(ee)->button() == Qt::LeftButton) {
- moveResizeMode = false;
+ active = false;
buttonDown = false;
widget->releaseMouse();
widget->releaseKeyboard();
- if (mode == Center) {
- if (movingEnabled)
- return true;
- } else {
+ if (mode != Center)
return true;
- }
}
break;
case QEvent::MouseMove: {
@@ -162,16 +142,9 @@ bool QWidgetResizeHandler::eventFilter(QObject *o, QEvent *ee)
break;
QMouseEvent *e = static_cast<QMouseEvent *>(ee);
buttonDown = buttonDown && (e->buttons() & Qt::LeftButton); // safety, state machine broken!
- bool me = movingEnabled;
- movingEnabled = (me && o == widget && (buttonDown || moveResizeMode));
mouseMoveEvent(e);
- movingEnabled = me;
- if (mode == Center) {
- if (movingEnabled)
- return true;
- } else {
+ if (mode != Center)
return true;
- }
} break;
case QEvent::KeyPress:
keyPressEvent(static_cast<QKeyEvent *>(ee));
@@ -193,7 +166,7 @@ bool QWidgetResizeHandler::eventFilter(QObject *o, QEvent *ee)
void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
{
QPoint pos = widget->mapFromGlobal(e->globalPos());
- if (!moveResizeMode && !buttonDown) {
+ if (!active && !buttonDown) {
if (pos.y() <= range && pos.x() <= range)
mode = TopLeft;
else if (pos.y() >= widget->height()-range && pos.x() >= widget->width()-range)
@@ -215,7 +188,7 @@ void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
else
mode = Nowhere;
- if (widget->isMinimized() || !isActive(Resize))
+ if (widget->isMinimized() || !isEnabled())
mode = Center;
#ifndef QT_NO_CURSOR
setMouseCursor(mode);
@@ -223,7 +196,7 @@ void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
return;
}
- if (mode == Center && !movingEnabled)
+ if (mode == Center)
return;
if (widget->testAttribute(Qt::WA_WState_ConfigPending))
@@ -237,9 +210,9 @@ void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
globalPos.rx() = 0;
if (globalPos.y() < 0)
globalPos.ry() = 0;
- if (sizeprotect && globalPos.x() > widget->parentWidget()->width())
+ if (globalPos.x() > widget->parentWidget()->width())
globalPos.rx() = widget->parentWidget()->width();
- if (sizeprotect && globalPos.y() > widget->parentWidget()->height())
+ if (globalPos.y() > widget->parentWidget()->height())
globalPos.ry() = widget->parentWidget()->height();
}
@@ -300,9 +273,6 @@ void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
case Right:
geom = QRect(widget->geometry().topLeft(), QPoint(p.x(), widget->geometry().bottom())) ;
break;
- case Center:
- geom.moveTopLeft(pp);
- break;
default:
break;
}
@@ -314,10 +284,7 @@ void QWidgetResizeHandler::mouseMoveEvent(QMouseEvent *e)
if (geom != widget->geometry() &&
(widget->isWindow() || widget->parentWidget()->rect().intersects(geom))) {
- if (mode == Center)
- widget->move(geom.topLeft());
- else
- widget->setGeometry(geom);
+ widget->setGeometry(geom);
}
}
@@ -361,7 +328,7 @@ void QWidgetResizeHandler::setMouseCursor(MousePosition m)
void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
{
- if (!isMove() && !isResize())
+ if (!isResizing())
return;
bool is_control = e->modifiers() & Qt::ControlModifier;
int delta = is_control?1:8;
@@ -378,7 +345,7 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
invertedMoveOffset.rx() -= delta;
}
}
- if (isResize() && !resizeHorizontalDirectionFixed) {
+ if (isResizing() && !resizeHorizontalDirectionFixed) {
resizeHorizontalDirectionFixed = true;
if (mode == BottomRight)
mode = BottomLeft;
@@ -403,7 +370,7 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
invertedMoveOffset.rx() -= delta;
}
}
- if (isResize() && !resizeHorizontalDirectionFixed) {
+ if (isResizing() && !resizeHorizontalDirectionFixed) {
resizeHorizontalDirectionFixed = true;
if (mode == BottomLeft)
mode = BottomRight;
@@ -428,7 +395,7 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
invertedMoveOffset.ry() -= delta;
}
}
- if (isResize() && !resizeVerticalDirectionFixed) {
+ if (isResizing() && !resizeVerticalDirectionFixed) {
resizeVerticalDirectionFixed = true;
if (mode == BottomLeft)
mode = TopLeft;
@@ -453,7 +420,7 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
invertedMoveOffset.ry() -= delta;
}
}
- if (isResize() && !resizeVerticalDirectionFixed) {
+ if (isResizing() && !resizeVerticalDirectionFixed) {
resizeVerticalDirectionFixed = true;
if (mode == TopLeft)
mode = BottomLeft;
@@ -471,7 +438,7 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
case Qt::Key_Return:
case Qt::Key_Enter:
case Qt::Key_Escape:
- moveResizeMode = false;
+ active = false;
widget->releaseMouse();
widget->releaseKeyboard();
buttonDown = false;
@@ -485,10 +452,10 @@ void QWidgetResizeHandler::keyPressEvent(QKeyEvent * e)
void QWidgetResizeHandler::doResize()
{
- if (!activeForResize)
+ if (!enabled)
return;
- moveResizeMode = true;
+ active = true;
moveOffset = widget->mapFromGlobal(QCursor::pos());
if (moveOffset.x() < widget->width()/2) {
if (moveOffset.y() < widget->height()/2)
@@ -513,23 +480,6 @@ void QWidgetResizeHandler::doResize()
resizeVerticalDirectionFixed = false;
}
-void QWidgetResizeHandler::doMove()
-{
- if (!activeForMove)
- return;
-
- mode = Center;
- moveResizeMode = true;
- moveOffset = widget->mapFromGlobal(QCursor::pos());
- invertedMoveOffset = widget->rect().bottomRight() - moveOffset;
-#ifndef QT_NO_CURSOR
- widget->grabMouse(Qt::SizeAllCursor);
-#else
- widget->grabMouse();
-#endif
- widget->grabKeyboard();
-}
-
QT_END_NAMESPACE
#include "moc_qwidgetresizehandler_p.cpp"
diff --git a/src/widgets/widgets/qwidgetresizehandler_p.h b/src/widgets/widgets/qwidgetresizehandler_p.h
index df3ac7cb8a..2390ba074a 100644
--- a/src/widgets/widgets/qwidgetresizehandler_p.h
+++ b/src/widgets/widgets/qwidgetresizehandler_p.h
@@ -62,34 +62,22 @@ QT_BEGIN_NAMESPACE
class QMouseEvent;
class QKeyEvent;
-class Q_WIDGETS_EXPORT QWidgetResizeHandler : public QObject
+class QWidgetResizeHandler : public QObject
{
Q_OBJECT
public:
- enum Action {
- Move = 0x01,
- Resize = 0x02,
- Any = Move|Resize
- };
-
explicit QWidgetResizeHandler(QWidget *parent, QWidget *cw = nullptr);
- void setActive(bool b) { setActive(Any, b); }
- void setActive(Action ac, bool b);
- bool isActive() const { return isActive(Any); }
- bool isActive(Action ac) const;
- void setMovingEnabled(bool b) { movingEnabled = b; }
- bool isMovingEnabled() const { return movingEnabled; }
+ void setEnabled(bool b);
+ bool isEnabled() const;
bool isButtonDown() const { return buttonDown; }
void setExtraHeight(int h) { extrahei = h; }
- void setSizeProtection(bool b) { sizeprotect = b; }
void setFrameWidth(int w) { fw = w; }
void doResize();
- void doMove();
Q_SIGNALS:
void activate();
@@ -117,19 +105,13 @@ private:
int fw;
int extrahei;
int range;
- uint buttonDown :1;
- uint moveResizeMode :1;
- uint activeForResize :1;
- uint sizeprotect :1;
- uint movingEnabled :1;
- uint activeForMove :1;
+ uint buttonDown :1;
+ uint active :1;
+ uint enabled :1;
void setMouseCursor(MousePosition m);
- bool isMove() const {
- return moveResizeMode && mode == Center;
- }
- bool isResize() const {
- return moveResizeMode && !isMove();
+ bool isResizing() const {
+ return active && mode != Center;
}
};