diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 9 | ||||
-rw-r--r-- | src/widgets/itemviews/qheaderview_p.h | 14 | ||||
-rw-r--r-- | src/widgets/widgets/qpushbutton_p.h | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qscrollbar.cpp | 4 |
4 files changed, 21 insertions, 11 deletions
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index c9a845fc7b..e0034d1298 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -80,6 +80,7 @@ QDataStream &operator>>(QDataStream &in, QHeaderViewPrivate::SectionItem §io } #endif // QT_NO_DATASTREAM +static const int maxSizeSection = 1048575; // since section size is in a bitfield (uint 20). See qheaderview_p.h /*! \class QHeaderView @@ -884,7 +885,7 @@ void QHeaderView::swapSections(int first, int second) void QHeaderView::resizeSection(int logical, int size) { Q_D(QHeaderView); - if (logical < 0 || logical >= count() || size < 0) + if (logical < 0 || logical >= count() || size < 0 || size > maxSizeSection) return; if (isSectionHidden(logical)) { @@ -1567,7 +1568,7 @@ int QHeaderView::defaultSectionSize() const void QHeaderView::setDefaultSectionSize(int size) { Q_D(QHeaderView); - if (size < 0) + if (size < 0 || size > maxSizeSection) return; d->setDefaultSectionSize(size); } @@ -1602,7 +1603,7 @@ int QHeaderView::minimumSectionSize() const void QHeaderView::setMinimumSectionSize(int size) { Q_D(QHeaderView); - if (size < 0) + if (size < 0 || size > maxSizeSection) return; d->minimumSectionSize = size; } @@ -3549,7 +3550,7 @@ QHeaderView::ResizeMode QHeaderViewPrivate::headerSectionResizeMode(int visual) { if (visual < 0 || visual >= sectionItems.count()) return globalResizeMode; - return sectionItems.at(visual).resizeMode; + return static_cast<QHeaderView::ResizeMode>(sectionItems.at(visual).resizeMode); } void QHeaderViewPrivate::setGlobalHeaderResizeMode(QHeaderView::ResizeMode mode) diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h index c56e0d6196..2bbd21a942 100644 --- a/src/widgets/itemviews/qheaderview_p.h +++ b/src/widgets/itemviews/qheaderview_p.h @@ -296,23 +296,27 @@ public: // header sections struct SectionItem { - int size; + uint size : 20; + uint reservedForIsHidden : 1; + uint resizeMode : 5; // (holding QHeaderView::ResizeMode) + uint currentlyUnusedPadding : 6; + union { // This union is made in order to save space and ensure good vector performance (on remove) mutable int calculated_startpos; // <- this is the primary used member. mutable int tmpLogIdx; // When one of these 'tmp'-members has been used we call int tmpDataStreamSectionCount; // recalcSectionStartPos() or set sectionStartposRecalc to true }; // to ensure that calculated_startpos will be calculated afterwards. - QHeaderView::ResizeMode resizeMode; + inline SectionItem() : size(0), resizeMode(QHeaderView::Interactive) {} inline SectionItem(int length, QHeaderView::ResizeMode mode) - : size(length), calculated_startpos(-1), resizeMode(mode) {} + : size(length), resizeMode(mode), calculated_startpos(-1) {} inline int sectionSize() const { return size; } inline int calculatedEndPos() const { return calculated_startpos + size; } #ifndef QT_NO_DATASTREAM inline void write(QDataStream &out) const - { out << size; out << 1; out << (int)resizeMode; } + { out << static_cast<int>(size); out << 1; out << (int)resizeMode; } inline void read(QDataStream &in) - { in >> size; in >> tmpDataStreamSectionCount; int m; in >> m; resizeMode = (QHeaderView::ResizeMode)m; } + { int m; in >> m; size = m; in >> tmpDataStreamSectionCount; in >> m; resizeMode = m; } #endif }; diff --git a/src/widgets/widgets/qpushbutton_p.h b/src/widgets/widgets/qpushbutton_p.h index 93069d295f..142df04825 100644 --- a/src/widgets/widgets/qpushbutton_p.h +++ b/src/widgets/widgets/qpushbutton_p.h @@ -39,6 +39,9 @@ ** ****************************************************************************/ +#ifndef QPUSHBUTTON_P_H +#define QPUSHBUTTON_P_H + #include "private/qabstractbutton_p.h" // @@ -88,3 +91,5 @@ public: }; QT_END_NAMESPACE + +#endif // QPUSHBUTTON_P_H diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp index 4ed91204cd..05b8935bb5 100644 --- a/src/widgets/widgets/qscrollbar.cpp +++ b/src/widgets/widgets/qscrollbar.cpp @@ -511,9 +511,9 @@ void QScrollBar::wheelEvent(QWheelEvent *event) if (d->scrollByDelta(event->orientation(), event->modifiers(), delta)) event->accept(); - if (event->phase() == QWheelEvent::Started) + if (event->phase() == Qt::ScrollBegin) d->setTransient(false); - else if (event->phase() == QWheelEvent::Ended) + else if (event->phase() == Qt::ScrollEnd) d->setTransient(true); } #endif |