summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-07-02 16:50:24 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-07-04 02:51:35 +0200
commita10bf2ec5a3f8a7c7e66e6c288ca0ca85043d5d1 (patch)
tree43a298c1f124344720e7a85e060a73ba2c31b166 /src/widgets
parentae890390e523f0f435190654b081764df88d7b94 (diff)
Improve data member ordering and initialization in some private classes
Put bit fields together, and generally order by size to maximize the compiler's ability to pack data. Initialize in declaration where possible. Change-Id: I49d4a3d2271229d671aeaf3eb17e6b7ecdc5099e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp15
-rw-r--r--src/widgets/widgets/qplaintextedit_p.h35
-rw-r--r--src/widgets/widgets/qtabbar_p.h109
3 files changed, 66 insertions, 93 deletions
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index 68be945f46..2b91ca2ecb 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -755,22 +755,12 @@ void QPlainTextEditPrivate::updateViewport()
}
QPlainTextEditPrivate::QPlainTextEditPrivate()
- : control(nullptr),
- tabChangesFocus(false),
- lineWrap(QPlainTextEdit::WidgetWidth),
- wordWrap(QTextOption::WrapAtWordBoundaryOrAnywhere),
- keyboardModifiers{},
- clickCausedFocus(0), placeholderVisible(1),
- topLine(0), topLineFracture(0),
+ : tabChangesFocus(false), showCursorOnInitialShow(false), backgroundVisible(false),
+ centerOnScroll(false), inDrag(false), clickCausedFocus(false), placeholderVisible(true),
pageUpDownLastCursorYIsValid(false)
{
- showCursorOnInitialShow = true;
- backgroundVisible = false;
- centerOnScroll = false;
- inDrag = false;
}
-
void QPlainTextEditPrivate::init(const QString &txt)
{
Q_Q(QPlainTextEdit);
@@ -825,7 +815,6 @@ void QPlainTextEditPrivate::init(const QString &txt)
#ifndef QT_NO_CURSOR
viewport->setCursor(Qt::IBeamCursor);
#endif
- originalOffsetY = 0;
}
void QPlainTextEditPrivate::_q_textChanged()
diff --git a/src/widgets/widgets/qplaintextedit_p.h b/src/widgets/widgets/qplaintextedit_p.h
index 6d82cabb93..112eb2e4f6 100644
--- a/src/widgets/widgets/qplaintextedit_p.h
+++ b/src/widgets/widgets/qplaintextedit_p.h
@@ -143,26 +143,30 @@ public:
void updateDefaultTextOption();
- QPlainTextEditControl *control;
-
- bool tabChangesFocus;
-
QBasicTimer autoScrollTimer;
+#ifdef QT_KEYPAD_NAVIGATION
+ QBasicTimer deleteAllTimer;
+#endif
QPoint autoScrollDragPos;
+ QString placeholderText;
- QPlainTextEdit::LineWrapMode lineWrap;
- QTextOption::WrapMode wordWrap;
- Qt::KeyboardModifiers keyboardModifiers;
+ QPlainTextEditControl *control = nullptr;
+ qreal topLineFracture = 0; // for non-int sized fonts
+ qreal pageUpDownLastCursorY = 0;
+ QPlainTextEdit::LineWrapMode lineWrap = QPlainTextEdit::WidgetWidth;
+ QTextOption::WrapMode wordWrap = QTextOption::WrapAtWordBoundaryOrAnywhere;
+ Qt::KeyboardModifiers keyboardModifiers = {};
+ int originalOffsetY = 0;
+ int topLine = 0;
+ uint tabChangesFocus : 1;
uint showCursorOnInitialShow : 1;
uint backgroundVisible : 1;
uint centerOnScroll : 1;
uint inDrag : 1;
uint clickCausedFocus : 1;
uint placeholderVisible : 1;
-
- int topLine;
- qreal topLineFracture; // for non-int sized fonts
+ uint pageUpDownLastCursorYIsValid : 1;
void setTopLine(int visualTopLine, int dx = 0);
void setTopBlock(int newTopBlock, int newTopLine, int dx = 0);
@@ -175,19 +179,8 @@ public:
void append(const QString &text, Qt::TextFormat format = Qt::AutoText);
- qreal pageUpDownLastCursorY;
- bool pageUpDownLastCursorYIsValid;
-
-
-#ifdef QT_KEYPAD_NAVIGATION
- QBasicTimer deleteAllTimer;
-#endif
-
void _q_cursorPositionChanged();
void _q_modificationChanged(bool);
-
- int originalOffsetY;
- QString placeholderText;
};
QT_END_NAMESPACE
diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h
index 4d005af9a9..1036d819eb 100644
--- a/src/widgets/widgets/qtabbar_p.h
+++ b/src/widgets/widgets/qtabbar_p.h
@@ -88,37 +88,51 @@ class Q_WIDGETS_EXPORT QTabBarPrivate : public QWidgetPrivate
Q_DECLARE_PUBLIC(QTabBar)
public:
QTabBarPrivate()
- : currentIndex(-1), mouseButtons(Qt::NoButton), pressedIndex(-1), firstVisible(0), lastVisible(-1),
- shape(QTabBar::RoundedNorth), layoutDirty(false), drawBase(true), scrollOffset(0),
- hoverIndex(-1), elideModeSetByUser(false), useScrollButtonsSetByUser(false), expanding(true),
- closeButtonOnTabs(false), selectionBehaviorOnRemove(QTabBar::SelectRightTab),
- paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false),
- autoHide(false), changeCurrentOnDrag(false), switchTabCurrentIndex(-1), switchTabTimerId(0),
- movingTab(nullptr)
- {}
+ : layoutDirty(false), drawBase(true), elideModeSetByUser(false), useScrollButtons(false),
+ useScrollButtonsSetByUser(false), expanding(true), closeButtonOnTabs(false),
+ paintWithOffsets(true), movable(false), dragInProgress(false), documentMode(false),
+ autoHide(false), changeCurrentOnDrag(false)
+ {}
- int currentIndex;
- Qt::MouseButtons mouseButtons;
- int pressedIndex;
- int firstVisible;
- int lastVisible;
- QTabBar::Shape shape;
- bool layoutDirty;
- bool drawBase;
- int scrollOffset;
+ QRect hoverRect;
+ QPoint dragStartPosition;
+ QSize iconSize;
+ QToolButton* rightB = nullptr; // right or bottom
+ QToolButton* leftB = nullptr; // left or top
+ QMovableTabWidget *movingTab = nullptr;
+ int hoverIndex = -1;
+ int switchTabCurrentIndex = -1;
+ int switchTabTimerId = 0;
+ Qt::TextElideMode elideMode = Qt::ElideNone;
+ QTabBar::SelectionBehavior selectionBehaviorOnRemove = QTabBar::SelectRightTab;
+ QTabBar::Shape shape = QTabBar::RoundedNorth;
+ Qt::MouseButtons mouseButtons = Qt::NoButton;
+
+ int currentIndex = -1;
+ int pressedIndex = -1;
+ int firstVisible = 0;
+ int lastVisible = -1;
+ int scrollOffset = 0;
+
+ bool layoutDirty : 1;
+ bool drawBase : 1;
+ bool elideModeSetByUser : 1;
+ bool useScrollButtons : 1;
+ bool useScrollButtonsSetByUser : 1;
+ bool expanding : 1;
+ bool closeButtonOnTabs : 1;
+ bool paintWithOffsets : 1;
+ bool movable : 1;
+ bool dragInProgress : 1;
+ bool documentMode : 1;
+ bool autoHide : 1;
+ bool changeCurrentOnDrag : 1;
struct Tab {
inline Tab(const QIcon &ico, const QString &txt)
- : enabled(true) , visible(true), shortcutId(0), text(txt), icon(ico),
- leftWidget(nullptr), rightWidget(nullptr), lastTab(-1), dragOffset(0)
-#if QT_CONFIG(animation)
- , animation(nullptr)
-#endif // animation
+ : text(txt), icon(ico), enabled(true), visible(true)
{}
bool operator==(const Tab &other) const { return &other == this; }
- bool enabled;
- bool visible;
- int shortcutId;
QString text;
#if QT_CONFIG(tooltip)
QString toolTip;
@@ -126,6 +140,9 @@ public:
#if QT_CONFIG(whatsthis)
QString whatsThis;
#endif
+#ifndef QT_NO_ACCESSIBILITY
+ QString accessibleName;
+#endif
QIcon icon;
QRect rect;
QRect minRect;
@@ -133,13 +150,13 @@ public:
QColor textColor;
QVariant data;
- QWidget *leftWidget;
- QWidget *rightWidget;
- int lastTab;
- int dragOffset;
-#ifndef QT_NO_ACCESSIBILITY
- QString accessibleName;
-#endif
+ QWidget *leftWidget = nullptr;
+ QWidget *rightWidget = nullptr;
+ int shortcutId = 0;
+ int lastTab = -1;
+ int dragOffset = 0;
+ uint enabled : 1;
+ uint visible : 1;
#if QT_CONFIG(animation)
~Tab() { delete animation; }
@@ -154,7 +171,7 @@ public:
//these are needed for the callbacks
Tab *tab;
QTabBarPrivate *priv;
- } *animation;
+ } *animation = nullptr;
void startAnimation(QTabBarPrivate *priv, int duration) {
if (!priv->isAnimated()) {
@@ -191,15 +208,10 @@ public:
inline bool validIndex(int index) const { return index >= 0 && index < tabList.count(); }
void setCurrentNextEnabledIndex(int offset);
- QToolButton* rightB; // right or bottom
- QToolButton* leftB; // left or top
-
void _q_scrollTabs();
void _q_closeTab();
void moveTab(int index, int offset);
void moveTabFinished(int index);
- QRect hoverRect;
- int hoverIndex;
void refresh();
void layoutTabs();
@@ -215,28 +227,7 @@ public:
void initBasicStyleOption(QStyleOptionTab *option, int tabIndex) const;
void makeVisible(int index);
- QSize iconSize;
- Qt::TextElideMode elideMode;
- bool elideModeSetByUser;
- bool useScrollButtons;
- bool useScrollButtonsSetByUser;
-
- bool expanding;
- bool closeButtonOnTabs;
- QTabBar::SelectionBehavior selectionBehaviorOnRemove;
-
- QPoint dragStartPosition;
- bool paintWithOffsets;
- bool movable;
- bool dragInProgress;
- bool documentMode;
- bool autoHide;
- bool changeCurrentOnDrag;
-
- int switchTabCurrentIndex;
- int switchTabTimerId;
- QMovableTabWidget *movingTab;
// shared by tabwidget and qtabbar
static void initStyleBaseOption(QStyleOptionTabBarBase *optTabBase, QTabBar *tabbar, QSize size)
{