From 933bf178aab88ab5df8a68cbf02611d6d8744b1b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 26 May 2015 22:16:25 +0200 Subject: QFramePrivate & subclasses: declare dtor out-of-line De-duplicates vtables and enables RTTI on this class hierarchy. Export QFramePrivate, as QAbstractScrollAreaPrivate (a subclass) is exported, too. Change-Id: I541886373435dc49c4267190a7191e2436f4c95e Reported-by: Volker Krause Task-number: QTBUG-45582 Reviewed-by: Friedemann Kleint Reviewed-by: Thiago Macieira --- src/widgets/widgets/qabstractscrollarea.cpp | 4 ++++ src/widgets/widgets/qabstractscrollarea_p.h | 3 +++ src/widgets/widgets/qframe.cpp | 4 ++++ src/widgets/widgets/qframe_p.h | 4 +++- src/widgets/widgets/qlabel.cpp | 4 ++++ src/widgets/widgets/qlabel_p.h | 1 + src/widgets/widgets/qsplitter.cpp | 4 ++++ src/widgets/widgets/qsplitter_p.h | 1 + 8 files changed, 24 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index 2e1caedde7..5e45c66f3b 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -168,6 +168,10 @@ QAbstractScrollAreaPrivate::QAbstractScrollAreaPrivate() { } +QAbstractScrollAreaPrivate::~QAbstractScrollAreaPrivate() +{ +} + QAbstractScrollAreaScrollBarContainer::QAbstractScrollAreaScrollBarContainer(Qt::Orientation orientation, QWidget *parent) :QWidget(parent), scrollBar(new QScrollBar(orientation, this)), layout(new QBoxLayout(orientation == Qt::Horizontal ? QBoxLayout::LeftToRight : QBoxLayout::TopToBottom)), diff --git a/src/widgets/widgets/qabstractscrollarea_p.h b/src/widgets/widgets/qabstractscrollarea_p.h index f770bb69f8..33222573f4 100644 --- a/src/widgets/widgets/qabstractscrollarea_p.h +++ b/src/widgets/widgets/qabstractscrollarea_p.h @@ -54,12 +54,15 @@ QT_BEGIN_NAMESPACE class QScrollBar; class QAbstractScrollAreaScrollBarContainer; + +// ### Qt 6: is the export still needed? If not, unexport QFramePrivate, too. class Q_WIDGETS_EXPORT QAbstractScrollAreaPrivate: public QFramePrivate { Q_DECLARE_PUBLIC(QAbstractScrollArea) public: QAbstractScrollAreaPrivate(); + ~QAbstractScrollAreaPrivate(); void replaceScrollBar(QScrollBar *scrollBar, Qt::Orientation orientation); diff --git a/src/widgets/widgets/qframe.cpp b/src/widgets/widgets/qframe.cpp index d5cedc4607..755b03a4ca 100644 --- a/src/widgets/widgets/qframe.cpp +++ b/src/widgets/widgets/qframe.cpp @@ -55,6 +55,10 @@ QFramePrivate::QFramePrivate() { } +QFramePrivate::~QFramePrivate() +{ +} + inline void QFramePrivate::init() { setLayoutItemMargins(QStyle::SE_FrameLayoutItem); diff --git a/src/widgets/widgets/qframe_p.h b/src/widgets/widgets/qframe_p.h index 2b80e9abbe..eb04bbed4a 100644 --- a/src/widgets/widgets/qframe_p.h +++ b/src/widgets/widgets/qframe_p.h @@ -50,11 +50,13 @@ QT_BEGIN_NAMESPACE -class QFramePrivate : public QWidgetPrivate +// ### unexport this class when and if QAbstractScrollAreaPrivate is unexported +class Q_WIDGETS_EXPORT QFramePrivate : public QWidgetPrivate { Q_DECLARE_PUBLIC(QFrame) public: QFramePrivate(); + ~QFramePrivate(); void updateFrameWidth(); void updateStyledFrameWidths(); diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index 83e94c4128..409e4a34f9 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -53,6 +53,10 @@ QT_BEGIN_NAMESPACE +QLabelPrivate::~QLabelPrivate() +{ +} + /*! \class QLabel \brief The QLabel widget provides a text or image display. diff --git a/src/widgets/widgets/qlabel_p.h b/src/widgets/widgets/qlabel_p.h index 3778cb9d47..2eb4ff9fc6 100644 --- a/src/widgets/widgets/qlabel_p.h +++ b/src/widgets/widgets/qlabel_p.h @@ -65,6 +65,7 @@ class QLabelPrivate : public QFramePrivate Q_DECLARE_PUBLIC(QLabel) public: QLabelPrivate() {} + ~QLabelPrivate(); void init(); void clearContents(); diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp index de6e45234c..38773a4fbf 100644 --- a/src/widgets/widgets/qsplitter.cpp +++ b/src/widgets/widgets/qsplitter.cpp @@ -58,6 +58,10 @@ QT_BEGIN_NAMESPACE //#define QSPLITTER_DEBUG +QSplitterPrivate::~QSplitterPrivate() +{ +} + /*! \class QSplitterHandle \brief The QSplitterHandle class provides handle functionality for the splitter. diff --git a/src/widgets/widgets/qsplitter_p.h b/src/widgets/widgets/qsplitter_p.h index a45f776da1..890bd535ec 100644 --- a/src/widgets/widgets/qsplitter_p.h +++ b/src/widgets/widgets/qsplitter_p.h @@ -76,6 +76,7 @@ class QSplitterPrivate : public QFramePrivate public: QSplitterPrivate() : rubberBand(0), opaque(true), firstShow(true), childrenCollapsible(true), compatMode(false), handleWidth(-1), blockChildAdd(false), opaqueResizeSet(false) {} + ~QSplitterPrivate(); QPointer rubberBand; mutable QList list; -- cgit v1.2.3