summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp8
-rw-r--r--src/widgets/widgets/qabstractscrollarea_p.h1
-rw-r--r--src/widgets/widgets/qtoolbararealayout.cpp7
3 files changed, 12 insertions, 4 deletions
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp
index d8ee923f7a..db4ff8a2b7 100644
--- a/src/widgets/widgets/qabstractscrollarea.cpp
+++ b/src/widgets/widgets/qabstractscrollarea.cpp
@@ -167,7 +167,7 @@ QT_BEGIN_NAMESPACE
QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate()
:hbar(0), vbar(0), vbarpolicy(Qt::ScrollBarAsNeeded), hbarpolicy(Qt::ScrollBarAsNeeded),
- shownOnce(false), sizeAdjustPolicy(QAbstractScrollArea::AdjustIgnored),
+ shownOnce(false), inResize(false), sizeAdjustPolicy(QAbstractScrollArea::AdjustIgnored),
viewport(0), cornerWidget(0), left(0), top(0), right(0), bottom(0),
xoffset(0), yoffset(0), viewportFilter(0)
#ifdef Q_WS_WIN
@@ -995,8 +995,12 @@ bool QAbstractScrollArea::event(QEvent *e)
d->viewport->setMouseTracking(hasMouseTracking());
break;
case QEvent::Resize:
+ if (!d->inResize) {
+ d->inResize = true;
d->layoutChildren();
- break;
+ d->inResize = false;
+ }
+ break;
case QEvent::Show:
if (!d->shownOnce && d->sizeAdjustPolicy == QAbstractScrollArea::AdjustToContentsOnFirstShow) {
d->sizeHint = QSize();
diff --git a/src/widgets/widgets/qabstractscrollarea_p.h b/src/widgets/widgets/qabstractscrollarea_p.h
index 3093c2f812..2a4b20fe81 100644
--- a/src/widgets/widgets/qabstractscrollarea_p.h
+++ b/src/widgets/widgets/qabstractscrollarea_p.h
@@ -76,6 +76,7 @@ public:
Qt::ScrollBarPolicy vbarpolicy, hbarpolicy;
bool shownOnce;
+ bool inResize;
mutable QSize sizeHint;
QAbstractScrollArea::SizeAdjustPolicy sizeAdjustPolicy;
diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp
index 94a1148ded..04ef6a80be 100644
--- a/src/widgets/widgets/qtoolbararealayout.cpp
+++ b/src/widgets/widgets/qtoolbararealayout.cpp
@@ -485,9 +485,12 @@ void QToolBarAreaLayoutInfo::moveToolBar(QToolBar *toolbar, int pos)
QList<int> QToolBarAreaLayoutInfo::gapIndex(const QPoint &pos, int *minDistance) const
{
- int p = pick(o, pos);
-
if (rect.contains(pos)) {
+ // <pos> is in QToolBarAreaLayout coordinates.
+ // <item.pos> is in local dockarea coordinates (see ~20 lines below)
+ // Since we're comparing p with item.pos, we put them in the same coordinate system.
+ const int p = pick(o, pos - rect.topLeft());
+
for (int j = 0; j < lines.count(); ++j) {
const QToolBarAreaLayoutLine &line = lines.at(j);
if (line.skip())