From 0c143f2e1d2c1b6210437838b13540f8ff9dea96 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 13 Jul 2023 02:12:59 +0300 Subject: [PATCH] get rid of QWidgetItemV2 round 2, see 6d3fe9312c47aa09cceeb89feabae438ed55fdf6 Signed-off-by: Ivailo Monev --- CMakeLists.txt | 1 - package/freebsd/pkg-plist | 1 - scripts/incfsck.py | 1 - scripts/namefsck.py | 1 - src/gui/kernel/qlayout.cpp | 2 +- src/gui/kernel/qlayoutitem.cpp | 210 +++++---------------------------- src/gui/kernel/qlayoutitem.h | 35 ------ src/gui/kernel/qwidget.cpp | 9 +- src/gui/kernel/qwidget.h | 1 - src/gui/kernel/qwidget_p.h | 2 - src/gui/widgets/qdockwidget.cpp | 2 +- src/gui/widgets/qmainwindowlayout.cpp | 4 +- src/gui/widgets/qtoolbararealayout.cpp | 4 +- src/tools/uic/cpp/cppwriteincludes.cpp | 1 - 14 files changed, 36 insertions(+), 238 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index df97dbfcc..f11a50fe3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -742,7 +742,6 @@ katie_generate_obsolete(QWhatsThisClickedEvent QtGui qevent.h) katie_generate_obsolete(QWheelEvent QtGui qevent.h) katie_generate_obsolete(QWidgetData QtGui qwidget.h) katie_generate_obsolete(QWidgetItem QtGui qlayoutitem.h) -katie_generate_obsolete(QWidgetItemV2 QtGui qlayoutitem.h) katie_generate_obsolete(QWidgetList QtGui qwindowdefs.h) katie_generate_obsolete(QWidgetMapper QtGui qwindowdefs.h) katie_generate_obsolete(QWidgetSet QtGui qwindowdefs.h) diff --git a/package/freebsd/pkg-plist b/package/freebsd/pkg-plist index 40ad29318..537e5705a 100644 --- a/package/freebsd/pkg-plist +++ b/package/freebsd/pkg-plist @@ -680,7 +680,6 @@ include/katie/QtGui/QWidget include/katie/QtGui/QWidgetAction include/katie/QtGui/QWidgetData include/katie/QtGui/QWidgetItem -include/katie/QtGui/QWidgetItemV2 include/katie/QtGui/QWidgetList include/katie/QtGui/QWidgetMapper include/katie/QtGui/QWidgetSet diff --git a/scripts/incfsck.py b/scripts/incfsck.py index 1529c253b..72136c2ab 100755 --- a/scripts/incfsck.py +++ b/scripts/incfsck.py @@ -260,7 +260,6 @@ incmap = { 'QWheelEvent': 'qevent.h', 'QWidgetData': 'qwidget.h', 'QWidgetItem': 'qlayoutitem.h', - 'QWidgetItemV2': 'qlayoutitem.h', 'QWidgetList': 'qwindowdefs.h', 'QWidgetMapper': 'qwindowdefs.h', 'QWidgetSet': 'qwindowdefs.h', diff --git a/scripts/namefsck.py b/scripts/namefsck.py index 3b23a29ac..76979f0f7 100755 --- a/scripts/namefsck.py +++ b/scripts/namefsck.py @@ -607,7 +607,6 @@ classlist = [ "QWidgetAction", "QWidgetData", "QWidgetItem", - "QWidgetItemV2", "QWidgetList", "QWidgetMapper", "QWidgetSet", diff --git a/src/gui/kernel/qlayout.cpp b/src/gui/kernel/qlayout.cpp index adb601325..c2f339712 100644 --- a/src/gui/kernel/qlayout.cpp +++ b/src/gui/kernel/qlayout.cpp @@ -164,7 +164,7 @@ QWidgetItem *QLayoutPrivate::createWidgetItem(const QLayout *layout, QWidget *wi if (widgetItemFactoryMethod) if (QWidgetItem *wi = (*widgetItemFactoryMethod)(layout, widget)) return wi; - return new QWidgetItemV2(widget); + return new QWidgetItem(widget); } QSpacerItem *QLayoutPrivate::createSpacerItem(const QLayout *layout, int w, int h, QSizePolicy::Policy hPolicy, QSizePolicy::Policy vPolicy) diff --git a/src/gui/kernel/qlayoutitem.cpp b/src/gui/kernel/qlayoutitem.cpp index 2e6a51ea1..17696f226 100644 --- a/src/gui/kernel/qlayoutitem.cpp +++ b/src/gui/kernel/qlayoutitem.cpp @@ -280,26 +280,26 @@ void QLayoutItem::invalidate() /*! If this item is a QLayout, it is returned as a QLayout; otherwise - 0 is returned. This function provides type-safe casting. + null is returned. This function provides type-safe casting. */ -QLayout * QLayoutItem::layout() +QLayout* QLayoutItem::layout() { return nullptr; } /*! If this item is a QSpacerItem, it is returned as a QSpacerItem; - otherwise 0 is returned. This function provides type-safe casting. + otherwise null is returned. This function provides type-safe casting. */ -QSpacerItem * QLayoutItem::spacerItem() +QSpacerItem* QLayoutItem::spacerItem() { - return 0; + return nullptr; } /*! \reimp */ -QLayout * QLayout::layout() +QLayout* QLayout::layout() { return this; } @@ -316,15 +316,15 @@ QSpacerItem * QSpacerItem::spacerItem() If this item is a QWidget, it is returned as a QWidget; otherwise 0 is returned. This function provides type-safe casting. */ -QWidget * QLayoutItem::widget() +QWidget* QLayoutItem::widget() { - return 0; + return nullptr; } /*! Returns the widget managed by this item. */ -QWidget *QWidgetItem::widget() +QWidget* QWidgetItem::widget() { return wid; } @@ -354,7 +354,6 @@ int QLayoutItem::minimumHeightForWidth(int w) const return heightForWidth(w); } - /*! Returns the preferred height for this layout item, given the width \a w. @@ -572,8 +571,9 @@ QSize QSpacerItem::minimumSize() const */ QSize QWidgetItem::minimumSize() const { - if (isEmpty()) + if (isEmpty()) { return QSize(0, 0); + } return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) ? toLayoutItemSize(wid->d_func(), qSmartMinSize(this)) : qSmartMinSize(this); @@ -595,11 +595,10 @@ QSize QWidgetItem::maximumSize() const { if (isEmpty()) { return QSize(0, 0); - } else { - return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) - ? toLayoutItemSize(wid->d_func(), qSmartMaxSize(this, align)) - : qSmartMaxSize(this, align); } + return !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) + ? toLayoutItemSize(wid->d_func(), qSmartMaxSize(this, align)) + : qSmartMaxSize(this, align); } /*! @@ -615,19 +614,21 @@ QSize QSpacerItem::sizeHint() const */ QSize QWidgetItem::sizeHint() const { - QSize s(0, 0); - if (!isEmpty()) { - s = wid->sizeHint().expandedTo(wid->minimumSizeHint()); - s = s.boundedTo(wid->maximumSize()) - .expandedTo(wid->minimumSize()); - s = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) - ? toLayoutItemSize(wid->d_func(), s) - : s; - - if (wid->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored) - s.setWidth(0); - if (wid->sizePolicy().verticalPolicy() == QSizePolicy::Ignored) - s.setHeight(0); + if (isEmpty()) { + return QSize(0, 0); + } + QSize s = wid->sizeHint().expandedTo(wid->minimumSizeHint()); + s = s.boundedTo(wid->maximumSize()) + .expandedTo(wid->minimumSize()); + s = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect) + ? toLayoutItemSize(wid->d_func(), s) + : s; + + if (wid->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored) { + s.setWidth(0); + } + if (wid->sizePolicy().verticalPolicy() == QSizePolicy::Ignored) { + s.setHeight(0); } return s; } @@ -655,157 +656,4 @@ QSizePolicy::ControlTypes QWidgetItem::controlTypes() const return wid->sizePolicy().controlType(); } -/*! - \class QWidgetItemV2 - \internal -*/ - -inline bool QWidgetItemV2::useSizeCache() const -{ - return wid->d_func()->widgetItem == this; -} - -void QWidgetItemV2::updateCacheIfNecessary() const -{ - if (q_cachedMinimumSize.width() != Dirty) - return; - - const QSize sizeHint(wid->sizeHint()); - const QSize minimumSizeHint(wid->minimumSizeHint()); - const QSize minimumSize(wid->minimumSize()); - const QSize maximumSize(wid->maximumSize()); - const QSizePolicy sizePolicy(wid->sizePolicy()); - const QSize expandedSizeHint(sizeHint.expandedTo(minimumSizeHint)); - - const QSize smartMinSize(qSmartMinSize(sizeHint, minimumSizeHint, minimumSize, maximumSize, sizePolicy)); - const QSize smartMaxSize(qSmartMaxSize(expandedSizeHint, minimumSize, maximumSize, sizePolicy, align)); - - const bool useLayoutItemRect = !wid->testAttribute(Qt::WA_LayoutUsesWidgetRect); - - q_cachedMinimumSize = useLayoutItemRect - ? toLayoutItemSize(wid->d_func(), smartMinSize) - : smartMinSize; - - q_cachedSizeHint = expandedSizeHint; - q_cachedSizeHint = q_cachedSizeHint.boundedTo(maximumSize) - .expandedTo(minimumSize); - q_cachedSizeHint = useLayoutItemRect - ? toLayoutItemSize(wid->d_func(), q_cachedSizeHint) - : q_cachedSizeHint; - - if (wid->sizePolicy().horizontalPolicy() == QSizePolicy::Ignored) - q_cachedSizeHint.setWidth(0); - if (wid->sizePolicy().verticalPolicy() == QSizePolicy::Ignored) - q_cachedSizeHint.setHeight(0); - - q_cachedMaximumSize = useLayoutItemRect - ? toLayoutItemSize(wid->d_func(), smartMaxSize) - : smartMaxSize; -} - -QWidgetItemV2::QWidgetItemV2(QWidget *widget) - : QWidgetItem(widget), - q_cachedMinimumSize(Dirty, Dirty), - q_cachedSizeHint(Dirty, Dirty), - q_cachedMaximumSize(Dirty, Dirty), - q_firstCachedHfw(0), - q_hfwCacheSize(0), - d(0) -{ - QWidgetPrivate *wd = wid->d_func(); - if (!wd->widgetItem) - wd->widgetItem = this; -} - -QWidgetItemV2::~QWidgetItemV2() -{ - if (wid) { - QWidgetPrivate *wd = wid->d_func(); - if (wd->widgetItem == this) - wd->widgetItem = 0; - } -} - -QSize QWidgetItemV2::sizeHint() const -{ - if (isEmpty()) - return QSize(0, 0); - - if (useSizeCache()) { - updateCacheIfNecessary(); - return q_cachedSizeHint; - } else { - return QWidgetItem::sizeHint(); - } -} - -QSize QWidgetItemV2::minimumSize() const -{ - if (isEmpty()) - return QSize(0, 0); - - if (useSizeCache()) { - updateCacheIfNecessary(); - return q_cachedMinimumSize; - } else { - return QWidgetItem::minimumSize(); - } -} - -QSize QWidgetItemV2::maximumSize() const -{ - if (isEmpty()) - return QSize(0, 0); - - if (useSizeCache()) { - updateCacheIfNecessary(); - return q_cachedMaximumSize; - } else { - return QWidgetItem::maximumSize(); - } -} - -/* - The height-for-width cache is organized as a circular buffer. The entries - - q_hfwCachedHfws[q_firstCachedHfw], - ..., - q_hfwCachedHfws[(q_firstCachedHfw + q_hfwCacheSize - 1) % HfwCacheMaxSize] - - contain the last cached values. When the cache is full, the first entry to - be erased is the entry before q_hfwCachedHfws[q_firstCachedHfw]. When - values are looked up, we try to move q_firstCachedHfw to point to that new - entry (unless the cache is not full, in which case it would leave the cache - in a broken state), so that the most recently used entry is also the last - to be erased. -*/ - -int QWidgetItemV2::heightForWidth(int width) const -{ - if (isEmpty()) - return -1; - - for (int i = 0; i < q_hfwCacheSize; ++i) { - int offset = q_firstCachedHfw + i; - const QSize &size = q_cachedHfws[offset % HfwCacheMaxSize]; - if (size.width() == width) { - if (q_hfwCacheSize == HfwCacheMaxSize) - q_firstCachedHfw = offset; - return size.height(); - } - } - - if (q_hfwCacheSize < HfwCacheMaxSize) - ++q_hfwCacheSize; - q_firstCachedHfw = (q_firstCachedHfw + HfwCacheMaxSize - 1) % HfwCacheMaxSize; - - int height = QWidgetItem::heightForWidth(width); - q_cachedHfws[q_firstCachedHfw] = QSize(width, height); - return height; -} - QT_END_NAMESPACE - - - - diff --git a/src/gui/kernel/qlayoutitem.h b/src/gui/kernel/qlayoutitem.h index 6404c2158..b0c1ed67a 100644 --- a/src/gui/kernel/qlayoutitem.h +++ b/src/gui/kernel/qlayoutitem.h @@ -121,41 +121,6 @@ protected: QWidget *wid; }; -class Q_GUI_EXPORT QWidgetItemV2 : public QWidgetItem -{ -public: - explicit QWidgetItemV2(QWidget *widget); - ~QWidgetItemV2(); - - QSize sizeHint() const; - QSize minimumSize() const; - QSize maximumSize() const; - int heightForWidth(int width) const; - -private: - enum { Dirty = -123, HfwCacheMaxSize = 3 }; - - inline bool useSizeCache() const; - void updateCacheIfNecessary() const; - inline void invalidateSizeCache() { - q_cachedMinimumSize.setWidth(Dirty); - q_hfwCacheSize = 0; - } - - mutable QSize q_cachedMinimumSize; - mutable QSize q_cachedSizeHint; - mutable QSize q_cachedMaximumSize; - mutable QSize q_cachedHfws[HfwCacheMaxSize]; - mutable short q_firstCachedHfw; - mutable short q_hfwCacheSize; - void *d; - - friend class QWidgetPrivate; - - Q_DISABLE_COPY(QWidgetItemV2) -}; - QT_END_NAMESPACE - #endif // QLAYOUTITEM_H diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index ba9634615..0ce835513 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -170,7 +170,6 @@ QWidgetPrivate::QWidgetPrivate() , layout(0) , needsFlush(0) , redirectDev(0) - , widgetItem(0) , extraPaintEngine(0) , polished(0) , inheritedFontResolveMask(0) @@ -214,9 +213,6 @@ QWidgetPrivate::QWidgetPrivate() QWidgetPrivate::~QWidgetPrivate() { - if (widgetItem) - widgetItem->wid = 0; - if (extra) deleteExtra(); } @@ -1286,8 +1282,7 @@ void QWidgetPrivate::deleteExtra() delete extra->topextra; } delete extra; - // extra->xic destroyed in QWidget::destroy() - extra = 0; + extra = nullptr; } } @@ -8020,8 +8015,6 @@ QWidget *QWidgetPrivate::childAtRecursiveHelper(const QPoint &p, bool ignoreChil void QWidgetPrivate::updateGeometry_helper(bool forceUpdate) { Q_Q(QWidget); - if (widgetItem) - widgetItem->invalidateSizeCache(); if (forceUpdate || !extra || extra->minw != extra->maxw || extra->minh != extra->maxh) { QWidget *parent; if (!q->isWindow() && !q->isHidden() && (parent = q->parentWidget())) { diff --git a/src/gui/kernel/qwidget.h b/src/gui/kernel/qwidget.h index 6d36d6308..9b0acb4d6 100644 --- a/src/gui/kernel/qwidget.h +++ b/src/gui/kernel/qwidget.h @@ -579,7 +579,6 @@ private: friend class QETWidget; friend class QLayout; friend class QWidgetItem; - friend class QWidgetItemV2; friend class QX11PaintEngine; friend class QShortcutPrivate; friend class QShortcutMap; diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 7860b4fbc..71168df5b 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -61,7 +61,6 @@ class QPaintEngine; class QPixmap; class QWidgetBackingStore; class QGraphicsProxyWidget; -class QWidgetItemV2; class QStyle; class Q_AUTOTEST_EXPORT QWidgetBackingStoreTracker @@ -499,7 +498,6 @@ public: QLayout *layout; QRegion *needsFlush; QPaintDevice *redirectDev; - QWidgetItemV2 *widgetItem; QPaintEngine *extraPaintEngine; mutable const QMetaObject *polished; // All widgets are added into the allWidgets set. Once diff --git a/src/gui/widgets/qdockwidget.cpp b/src/gui/widgets/qdockwidget.cpp index 486d541f2..f8c8d0f19 100644 --- a/src/gui/widgets/qdockwidget.cpp +++ b/src/gui/widgets/qdockwidget.cpp @@ -357,7 +357,7 @@ void QDockWidgetLayout::setWidgetForRole(Role r, QWidget *w) if (w != 0) { addChildWidget(w); - item_list[r] = new QWidgetItemV2(w); + item_list[r] = new QWidgetItem(w); w->show(); } else { item_list[r] = 0; diff --git a/src/gui/widgets/qmainwindowlayout.cpp b/src/gui/widgets/qmainwindowlayout.cpp index ae6d8da06..87bd911ab 100644 --- a/src/gui/widgets/qmainwindowlayout.cpp +++ b/src/gui/widgets/qmainwindowlayout.cpp @@ -337,7 +337,7 @@ void QMainWindowLayoutState::setCentralWidget(QWidget *widget) deleteCentralWidgetItem(); if (widget != 0) - item = new QWidgetItemV2(widget); + item = new QWidgetItem(widget); #ifndef QT_NO_DOCKWIDGET dockAreaLayout.centralWidgetItem = item; @@ -1562,7 +1562,7 @@ void QMainWindowLayout::setStatusBar(QStatusBar *sb) if (sb) addChildWidget(sb); delete statusbar; - statusbar = sb ? new QWidgetItemV2(sb) : 0; + statusbar = sb ? new QWidgetItem(sb) : 0; invalidate(); } #endif // QT_NO_STATUSBAR diff --git a/src/gui/widgets/qtoolbararealayout.cpp b/src/gui/widgets/qtoolbararealayout.cpp index 1d738190d..fc94d7fba 100644 --- a/src/gui/widgets/qtoolbararealayout.cpp +++ b/src/gui/widgets/qtoolbararealayout.cpp @@ -279,7 +279,7 @@ void QToolBarAreaLayoutInfo::fitLayout() QLayoutItem *QToolBarAreaLayoutInfo::insertToolBar(QToolBar *before, QToolBar *toolBar) { toolBar->setOrientation(o); - QLayoutItem *item = new QWidgetItemV2(toolBar); + QLayoutItem *item = new QWidgetItem(toolBar); insertItem(before, item); return item; } @@ -1340,7 +1340,7 @@ bool QToolBarAreaLayout::restoreState(QDataStream &stream, const QListsetOrientation(floating ? ((shown & 2) ? Qt::Vertical : Qt::Horizontal) : dock.o); toolBar->setVisible(shown & 1); toolBar->d_func()->setWindowState(floating, true, rect); diff --git a/src/tools/uic/cpp/cppwriteincludes.cpp b/src/tools/uic/cpp/cppwriteincludes.cpp index d775c3152..0025d7ddd 100644 --- a/src/tools/uic/cpp/cppwriteincludes.cpp +++ b/src/tools/uic/cpp/cppwriteincludes.cpp @@ -548,7 +548,6 @@ static const struct ClassTblData { { QLatin1String("QWidget"), QLatin1String("QtGui/qwidget.h") }, { QLatin1String("QWidgetAction"), QLatin1String("QtGui/qwidgetaction.h") }, { QLatin1String("QWidgetItem"), QLatin1String("QtGui/qlayoutitem.h") }, - { QLatin1String("QWidgetItemV2"), QLatin1String("QtGui/qlayoutitem.h") }, { QLatin1String("QWindowStateChangeEvent"), QLatin1String("QtGui/qevent.h") }, { QLatin1String("QWindowsStyle"), QLatin1String("QtGui/qwindowsstyle.h") }, { QLatin1String("QWizard"), QLatin1String("QtGui/qwizard.h") }, -- 2.11.0