diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-02-20 01:01:00 +0100 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2019-02-20 09:51:12 +0100 |
commit | 035f934d7a798e97bf0213a5d42a3d511132f03d (patch) | |
tree | 89aa6efdc86864ce479cddca6b9c4ba523c2754a /src/widgets/widgets | |
parent | f4cc23cffbe3005f0a522cac938695e87ecd6407 (diff) | |
parent | da4ab444ffac37514435364d4d3f0ad59d4f9bc3 (diff) |
Merge remote-tracking branch 'origin/5.13' into dev
Conflicts:
tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
Added tests/auto/testlib/selftests/expected_crashes_5.txt to work
round the output of the crashes test (which exercises UB, see
QTBUG-73903) being truncated on one test platform.
Change-Id: I9cd3f2639b4e50c3c4513e14629a40bdca8f8273
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qabstractscrollarea.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qcalendarwidget.cpp | 33 | ||||
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 13 | ||||
-rw-r--r-- | src/widgets/widgets/qcombobox.h | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qfontcombobox.cpp | 16 | ||||
-rw-r--r-- | src/widgets/widgets/qmdisubwindow.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu_p.h | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qplaintextedit.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qsplitter.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qsplitter.h | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qstatusbar.cpp | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qtabbar.cpp | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbarlayout.cpp | 45 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbox.cpp | 4 |
15 files changed, 95 insertions, 53 deletions
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index b378884275..5ea8330db2 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -185,7 +185,7 @@ QAbstractScrollAreaScrollBarContainer::QAbstractScrollAreaScrollBarContainer(Qt: orientation(orientation) { setLayout(layout); - layout->setMargin(0); + layout->setContentsMargins(QMargins()); layout->setSpacing(0); layout->addWidget(scrollBar); layout->setSizeConstraint(QLayout::SetMaximumSize); diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 5649243d1d..47c5267c73 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -1778,7 +1778,7 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget) spaceHolder = new QSpacerItem(0,0); QHBoxLayout *headerLayout = new QHBoxLayout; - headerLayout->setMargin(0); + headerLayout->setContentsMargins(QMargins()); headerLayout->setSpacing(0); headerLayout->addWidget(prevMonth); headerLayout->insertStretch(headerLayout->count()); @@ -2101,7 +2101,7 @@ QCalendarWidget::QCalendarWidget(QWidget *parent) setBackgroundRole(QPalette::Window); QVBoxLayout *layoutV = new QVBoxLayout(this); - layoutV->setMargin(0); + layoutV->setContentsMargins(QMargins()); d->m_model = new QCalendarModel(this); QTextCharFormat fmt; fmt.setForeground(QBrush(Qt::red)); @@ -2148,7 +2148,7 @@ QCalendarWidget::QCalendarWidget(QWidget *parent) connect(d->yearEdit, SIGNAL(editingFinished()), this, SLOT(_q_yearEditingFinished())); - layoutV->setMargin(0); + layoutV->setContentsMargins(QMargins()); layoutV->setSpacing(0); layoutV->addWidget(d->navBarBackground); layoutV->addWidget(d->m_view); @@ -3064,19 +3064,22 @@ bool QCalendarWidget::eventFilter(QObject *watched, QEvent *event) { Q_D(QCalendarWidget); if (event->type() == QEvent::MouseButtonPress && d->yearEdit->hasFocus()) { + // We can get filtered press events that were intended for Qt Virtual Keyboard's + // input panel (QQuickView), so we have to make sure that the window is indeed a QWidget - no static_cast. + // In addition, as we have a event filter on the whole application we first make sure that the top level widget + // of both this and the watched widget are the same to decide if we should finish the year edition. QWidget *tlw = window(); - QWidget *widget = static_cast<QWidget*>(watched); - //as we have a event filter on the whole application we first make sure that the top level widget - //of both this and the watched widget are the same to decide if we should finish the year edition. - if (widget->window() == tlw) { - QPoint mousePos = widget->mapTo(tlw, static_cast<QMouseEvent *>(event)->pos()); - QRect geom = QRect(d->yearEdit->mapTo(tlw, QPoint(0, 0)), d->yearEdit->size()); - if (!geom.contains(mousePos)) { - event->accept(); - d->_q_yearEditingFinished(); - setFocus(); - return true; - } + QWidget *widget = qobject_cast<QWidget *>(watched); + if (!widget || widget->window() != tlw) + return QWidget::eventFilter(watched, event); + + QPoint mousePos = widget->mapTo(tlw, static_cast<QMouseEvent *>(event)->pos()); + QRect geom = QRect(d->yearEdit->mapTo(tlw, QPoint(0, 0)), d->yearEdit->size()); + if (!geom.contains(mousePos)) { + event->accept(); + d->_q_yearEditingFinished(); + setFocus(); + return true; } } return QWidget::eventFilter(watched, event); diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 2f67a9202c..1ad43fffb4 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -472,7 +472,7 @@ QComboBoxPrivateContainer::QComboBoxPrivateContainer(QAbstractItemView *itemView // we need a vertical layout QBoxLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom, this); layout->setSpacing(0); - layout->setMargin(0); + layout->setContentsMargins(QMargins()); // set item view setItemView(itemView); @@ -895,14 +895,21 @@ QStyleOptionComboBox QComboBoxPrivateContainer::comboStyleOption() const currentIndex was reset. */ +#if QT_DEPRECATED_SINCE(5, 13) /*! \fn void QComboBox::currentIndexChanged(const QString &text) \since 4.1 + \obsolete + + Use currentTextChanged(const QString &) or currentIndexChanged(int) + instead. + This signal is sent whenever the currentIndex in the combobox changes either through user interaction or programmatically. The item's \a text is passed. */ +#endif /*! \fn void QComboBox::currentTextChanged(const QString &text) @@ -1375,7 +1382,9 @@ void QComboBoxPrivate::_q_emitCurrentIndexChanged(const QModelIndex &index) Q_Q(QComboBox); const QString text = itemText(index); emit q->currentIndexChanged(index.row()); +#if QT_DEPRECATED_SINCE(5, 13) emit q->currentIndexChanged(text); +#endif // signal lineEdit.textChanged already connected to signal currentTextChanged, so don't emit double here if (!lineEdit) emit q->currentTextChanged(text); @@ -1483,6 +1492,7 @@ int QComboBox::maxCount() const } #if QT_CONFIG(completer) +#if QT_DEPRECATED_SINCE(5, 13) /*! \property QComboBox::autoCompletion @@ -1576,6 +1586,7 @@ void QComboBox::setAutoCompletionCaseSensitivity(Qt::CaseSensitivity sensitivity if (d->lineEdit && d->lineEdit->completer()) d->lineEdit->completer()->setCaseSensitivity(sensitivity); } +#endif // QT_DEPRECATED_SINCE(5, 13) #endif // QT_CONFIG(completer) diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h index 671c883584..64fbebb3c5 100644 --- a/src/widgets/widgets/qcombobox.h +++ b/src/widgets/widgets/qcombobox.h @@ -73,8 +73,10 @@ class Q_WIDGETS_EXPORT QComboBox : public QWidget Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize) #if QT_CONFIG(completer) +#if QT_DEPRECATED_SINCE(5, 13) Q_PROPERTY(bool autoCompletion READ autoCompletion WRITE setAutoCompletion DESIGNABLE false) Q_PROPERTY(Qt::CaseSensitivity autoCompletionCaseSensitivity READ autoCompletionCaseSensitivity WRITE setAutoCompletionCaseSensitivity DESIGNABLE false) +#endif #endif // QT_CONFIG(completer) Q_PROPERTY(bool duplicatesEnabled READ duplicatesEnabled WRITE setDuplicatesEnabled) @@ -93,12 +95,14 @@ public: int maxCount() const; #if QT_CONFIG(completer) +#if QT_DEPRECATED_SINCE(5, 13) bool autoCompletion() const; void setAutoCompletion(bool enable); Qt::CaseSensitivity autoCompletionCaseSensitivity() const; void setAutoCompletionCaseSensitivity(Qt::CaseSensitivity sensitivity); #endif +#endif bool duplicatesEnabled() const; void setDuplicatesEnabled(bool enable); @@ -220,7 +224,10 @@ Q_SIGNALS: void highlighted(int index); void highlighted(const QString &); void currentIndexChanged(int index); +#if QT_DEPRECATED_SINCE(5, 13) + QT_DEPRECATED_X("Use currentTextChanged() instead") void currentIndexChanged(const QString &); +#endif void currentTextChanged(const QString &); protected: diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index c66400f423..4dda01f0c7 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -2598,7 +2598,7 @@ void QCalendarPopup::setCalendarWidget(QCalendarWidget *cw) QVBoxLayout *widgetLayout = qobject_cast<QVBoxLayout*>(layout()); if (!widgetLayout) { widgetLayout = new QVBoxLayout(this); - widgetLayout->setMargin(0); + widgetLayout->setContentsMargins(QMargins()); widgetLayout->setSpacing(0); } delete calendar.data(); diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp index 957a464b71..4a99b0f962 100644 --- a/src/widgets/widgets/qfontcombobox.cpp +++ b/src/widgets/widgets/qfontcombobox.cpp @@ -236,9 +236,10 @@ void QFontFamilyDelegate::paint(QPainter *painter, if (QFontDatabase().isSmoothlyScalable(text)) { icon = &truetype; } - QSize actualSize = icon->actualSize(r.size()); - - icon->paint(painter, r, Qt::AlignLeft|Qt::AlignVCenter); + const QSize actualSize = icon->actualSize(r.size()); + const QRect iconRect = QStyle::alignedRect(option.direction, option.displayAlignment, + actualSize, r); + icon->paint(painter, iconRect, Qt::AlignLeft|Qt::AlignVCenter); if (option.direction == Qt::RightToLeft) r.setRight(r.right() - actualSize.width() - 4); else @@ -247,6 +248,7 @@ void QFontFamilyDelegate::paint(QPainter *painter, QFont old = painter->font(); painter->setFont(font); + const Qt::Alignment textAlign = QStyle::visualAlignment(option.direction, option.displayAlignment); // If the ascent of the font is larger than the height of the rect, // we will clip the text, so it's better to align the tight bounding rect in this case // This is specifically for fonts where the ascent is very large compared to @@ -254,9 +256,11 @@ void QFontFamilyDelegate::paint(QPainter *painter, QFontMetricsF fontMetrics(font); if (fontMetrics.ascent() > r.height()) { QRectF tbr = fontMetrics.tightBoundingRect(text); - painter->drawText(r.x(), r.y() + (r.height() + tbr.height()) / 2.0, text); + QRect textRect(r); + textRect.setHeight(textRect.height() + (r.height() - tbr.height())); + painter->drawText(textRect, Qt::AlignBottom|Qt::TextSingleLine|textAlign, text); } else { - painter->drawText(r, Qt::AlignVCenter|Qt::AlignLeading|Qt::TextSingleLine, text); + painter->drawText(r, Qt::AlignVCenter|Qt::TextSingleLine|textAlign, text); } if (writingSystem != QFontDatabase::Any) @@ -270,7 +274,7 @@ void QFontFamilyDelegate::paint(QPainter *painter, r.setRight(r.right() - w); else r.setLeft(r.left() + w); - painter->drawText(r, Qt::AlignVCenter|Qt::AlignLeading|Qt::TextSingleLine, sample); + painter->drawText(r, Qt::AlignVCenter|Qt::TextSingleLine|textAlign, sample); } painter->setFont(old); diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index c7e0603309..e25bc6de7a 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -2268,7 +2268,7 @@ QMdiSubWindow::QMdiSubWindow(QWidget *parent, Qt::WindowFlags flags) setMouseTracking(true); setLayout(new QVBoxLayout); setFocusPolicy(Qt::StrongFocus); - layout()->setMargin(0); + layout()->setContentsMargins(QMargins()); d->updateGeometryConstraints(); setAttribute(Qt::WA_Resized, false); d->titleBarPalette = d->desktopPalette(); diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index 3e1aa2f738..12521e7a36 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -95,6 +95,12 @@ static inline int &rperp(Qt::Orientation o, QPoint &pos) static inline int &rperp(Qt::Orientation o, QSize &size) { return o == Qt::Vertical ? size.rwidth() : size.rheight(); } +static inline int pick(Qt::Orientation o, const QMargins &m) +{ return o == Qt::Horizontal ? (m.left() + m.right()) : (m.top() + m.bottom()); } + +static inline int perp(Qt::Orientation o, const QMargins &m) +{ return o == Qt::Vertical ? (m.left() + m.right()) : (m.top() + m.bottom()); } + class QTornOffMenu; class QEventLoop; diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp index 0b79a990a9..363422ac74 100644 --- a/src/widgets/widgets/qplaintextedit.cpp +++ b/src/widgets/widgets/qplaintextedit.cpp @@ -312,10 +312,11 @@ void QPlainTextDocumentLayout::documentChanged(int from, int charsRemoved, int c QTextBlock block = changeStartBlock; do { block.clearLayout(); - const int lineCount = block.isVisible() ? 1 : 0; - if (block.lineCount() != lineCount) { + if (block.isVisible() + ? (block.lineCount() == 0) + : (block.lineCount() > 0)) { blockVisibilityChanged = true; - block.setLineCount(lineCount); + block.setLineCount(block.isVisible() ? 1 : 0); } if (block == changeEndBlock) break; diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index 9e38c8f18a..0b90714363 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -1783,6 +1783,7 @@ void QSplitter::setStretchFactor(int index, int stretch) } +#if QT_DEPRECATED_SINCE(5, 13) /*! \relates QSplitter \obsolete @@ -1813,6 +1814,7 @@ QTextStream& operator>>(QTextStream& ts, QSplitter& splitter) splitter.restoreState(std::move(line).toLatin1()); return ts; } +#endif QT_END_NAMESPACE diff --git a/src/widgets/widgets/qsplitter.h b/src/widgets/widgets/qsplitter.h index 16fac48d1c..ec980d9ee3 100644 --- a/src/widgets/widgets/qsplitter.h +++ b/src/widgets/widgets/qsplitter.h @@ -129,8 +129,12 @@ private: friend class QSplitterHandle; }; +#if QT_DEPRECATED_SINCE(5, 13) +QT_DEPRECATED_X("Use QSplitter::saveState() instead") Q_WIDGETS_EXPORT QTextStream& operator<<(QTextStream&, const QSplitter&); +QT_DEPRECATED_X("Use QSplitter::restoreState() instead") Q_WIDGETS_EXPORT QTextStream& operator>>(QTextStream&, QSplitter&); +#endif class QSplitterHandlePrivate; class Q_WIDGETS_EXPORT QSplitterHandle : public QWidget diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp index ae67cbd890..e9044e6cad 100644 --- a/src/widgets/widgets/qstatusbar.cpp +++ b/src/widgets/widgets/qstatusbar.cpp @@ -482,14 +482,14 @@ void QStatusBar::reformat() #if QT_CONFIG(sizegrip) if (d->resizer) { d->box = new QHBoxLayout(this); - d->box->setMargin(0); + d->box->setContentsMargins(QMargins()); vbox = new QVBoxLayout; d->box->addLayout(vbox); } else #endif { vbox = d->box = new QVBoxLayout(this); - d->box->setMargin(0); + d->box->setContentsMargins(QMargins()); } vbox->addSpacing(3); QBoxLayout* l = new QHBoxLayout; diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 05a98fc1a5..b13f4da9d2 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -2093,7 +2093,6 @@ void QTabBarPrivate::setupMovableTab() grabImage.setDevicePixelRatio(q->devicePixelRatioF()); grabImage.fill(Qt::transparent); QStylePainter p(&grabImage, q); - p.initFrom(q); QStyleOptionTab tab; q->initStyleOption(&tab, pressedIndex); diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp index f2d329d59d..d50e19a5ed 100644 --- a/src/widgets/widgets/qtoolbarlayout.cpp +++ b/src/widgets/widgets/qtoolbarlayout.cpp @@ -119,8 +119,9 @@ void QToolBarLayout::updateMarginAndSpacing() QStyle *style = tb->style(); QStyleOptionToolBar opt; tb->initStyleOption(&opt); - setMargin(style->pixelMetric(QStyle::PM_ToolBarItemMargin, &opt, tb) - + style->pixelMetric(QStyle::PM_ToolBarFrameWidth, &opt, tb)); + const int margin = style->pixelMetric(QStyle::PM_ToolBarItemMargin, &opt, tb) + + style->pixelMetric(QStyle::PM_ToolBarFrameWidth, &opt, tb); + setContentsMargins(margin, margin, margin, margin); setSpacing(style->pixelMetric(QStyle::PM_ToolBarItemSpacing, &opt, tb)); } @@ -268,7 +269,7 @@ void QToolBarLayout::updateGeomArray() const tb->initStyleOption(&opt); const int handleExtent = movable() ? style->pixelMetric(QStyle::PM_ToolBarHandleExtent, &opt, tb) : 0; - const int margin = this->margin(); + const QMargins margins = contentsMargins(); const int spacing = this->spacing(); const int extensionExtent = style->pixelMetric(QStyle::PM_ToolBarExtensionExtent, &opt, tb); Qt::Orientation o = tb->orientation(); @@ -330,12 +331,12 @@ void QToolBarLayout::updateGeomArray() const that->empty = count == 0; rpick(o, that->minSize) += handleExtent; - that->minSize += QSize(2*margin, 2*margin); + that->minSize += QSize(pick(Qt::Horizontal, margins), pick(Qt::Vertical, margins)); if (items.count() > 1) rpick(o, that->minSize) += spacing + extensionExtent; rpick(o, that->hint) += handleExtent; - that->hint += QSize(2*margin, 2*margin); + that->hint += QSize(pick(Qt::Horizontal, margins), pick(Qt::Vertical, margins)); that->dirty = false; } @@ -384,7 +385,7 @@ void QToolBarLayout::setGeometry(const QRect &rect) QStyle *style = tb->style(); QStyleOptionToolBar opt; tb->initStyleOption(&opt); - const int margin = this->margin(); + const QMargins margins = contentsMargins(); const int extensionExtent = style->pixelMetric(QStyle::PM_ToolBarExtensionExtent, &opt, tb); Qt::Orientation o = tb->orientation(); @@ -403,14 +404,18 @@ void QToolBarLayout::setGeometry(const QRect &rect) QSize hint = sizeHint(); QPoint pos; - rpick(o, pos) = pick(o, rect.bottomRight()) - margin - extensionExtent + 2; + rpick(o, pos) = pick(o, rect.bottomRight()) - + pick(o, QSize(margins.bottom(), margins.right())) - extensionExtent + 2; if (area == Qt::LeftToolBarArea || area == Qt::TopToolBarArea) - rperp(o, pos) = perp(o, rect.topLeft()) + margin; + rperp(o, pos) = perp(o, rect.topLeft()) + + perp(o, QSize(margins.top(), margins.left())); else - rperp(o, pos) = perp(o, rect.bottomRight()) - margin - (perp(o, hint) - 2*margin) + 1; + rperp(o, pos) = perp(o, rect.bottomRight()) - + perp(o, QSize(margins.bottom(), margins.right())) - + (perp(o, hint) - perp(o, margins)) + 1; QSize size; rpick(o, size) = extensionExtent; - rperp(o, size) = perp(o, hint) - 2*margin; + rperp(o, size) = perp(o, hint) - perp(o, margins); QRect r(pos, size); if (o == Qt::Horizontal) @@ -443,13 +448,13 @@ bool QToolBarLayout::layoutActions(const QSize &size) tb->initStyleOption(&opt); const int handleExtent = movable() ? style->pixelMetric(QStyle::PM_ToolBarHandleExtent, &opt, tb) : 0; - const int margin = this->margin(); + const QMargins margins = contentsMargins(); const int spacing = this->spacing(); const int extensionExtent = style->pixelMetric(QStyle::PM_ToolBarExtensionExtent, &opt, tb); Qt::Orientation o = tb->orientation(); bool extensionMenuContainsOnlyWidgetActions = true; - int space = pick(o, rect.size()) - 2*margin - handleExtent; + int space = pick(o, rect.size()) - pick(o, margins) - handleExtent; if (space <= 0) return false; // nothing to do. @@ -458,7 +463,7 @@ bool QToolBarLayout::layoutActions(const QSize &size) bool ranOutOfSpace = false; int rows = 0; - int rowPos = perp(o, rect.topLeft()) + margin; + int rowPos = perp(o, rect.topLeft()) + perp(o, QSize(margins.top(), margins.left())); int i = 0; while (i < items.count()) { QVector<QLayoutStruct> a = geomArray; @@ -521,14 +526,14 @@ bool QToolBarLayout::layoutActions(const QSize &size) } QPoint pos; - rpick(o, pos) = margin + handleExtent + a[j].pos; + rpick(o, pos) = pick(o, QSize(margins.top(), margins.left())) + handleExtent + a[j].pos; rperp(o, pos) = rowPos; QSize size; rpick(o, size) = a[j].size; if (expanded) rperp(o, size) = rowHeight; else - rperp(o, size) = perp(o, rect.size()) - 2*margin; + rperp(o, size) = perp(o, rect.size()) - perp(o, QSize(margins.top(), margins.left())); QRect r(pos, size); if (o == Qt::Horizontal) @@ -589,7 +594,7 @@ QSize QToolBarLayout::expandedSize(const QSize &size) const tb->initStyleOption(&opt); const int handleExtent = movable() ? style->pixelMetric(QStyle::PM_ToolBarHandleExtent, &opt, tb) : 0; - const int margin = this->margin(); + const QMargins margins = contentsMargins(); const int spacing = this->spacing(); const int extensionExtent = style->pixelMetric(QStyle::PM_ToolBarExtensionExtent, &opt, tb); @@ -609,9 +614,9 @@ QSize QToolBarLayout::expandedSize(const QSize &size) const if (rows == 1) ++rows; // we want to expand to at least two rows int space = total_w/rows + spacing + extensionExtent; - space = qMax(space, min_w - 2*margin - handleExtent); + space = qMax(space, min_w - pick(o, margins) - handleExtent); if (win != 0) - space = qMin(space, pick(o, win->size()) - 2*margin - handleExtent); + space = qMin(space, pick(o, win->size()) - pick(o, margins) - handleExtent); int w = 0; int h = 0; @@ -644,11 +649,11 @@ QSize QToolBarLayout::expandedSize(const QSize &size) const h += rowHeight + spacing; } - w += 2*margin + handleExtent + spacing + extensionExtent; + w += pick(Qt::Horizontal, margins) + handleExtent + spacing + extensionExtent; w = qMax(w, min_w); if (win != 0) w = qMin(w, pick(o, win->size())); - h += 2*margin - spacing; //there is no spacing before the first row + h += pick(Qt::Vertical, margins) - spacing; //there is no spacing before the first row QSize result; rpick(o, result) = w; diff --git a/src/widgets/widgets/qtoolbox.cpp b/src/widgets/widgets/qtoolbox.cpp index eee112f02f..1c83485bff 100644 --- a/src/widgets/widgets/qtoolbox.cpp +++ b/src/widgets/widgets/qtoolbox.cpp @@ -294,7 +294,7 @@ QToolBox::QToolBox(QWidget *parent, Qt::WindowFlags f) { Q_D(QToolBox); d->layout = new QVBoxLayout(this); - d->layout->setMargin(0); + d->layout->setContentsMargins(QMargins()); setBackgroundRole(QPalette::Button); } @@ -437,7 +437,7 @@ void QToolBoxPrivate::relayout() Q_Q(QToolBox); delete layout; layout = new QVBoxLayout(q); - layout->setMargin(0); + layout->setContentsMargins(QMargins()); for (QToolBoxPrivate::PageList::ConstIterator i = pageList.constBegin(); i != pageList.constEnd(); ++i) { layout->addWidget((*i).button); layout->addWidget((*i).sv); |