From b6cf0418677729e91e5ccd866afdb22e11385d74 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Fri, 13 May 2016 12:20:39 +0300 Subject: Widgets: use QStringRef to optimize memory allocation Replace substring functions that return QString with corresponding functions that return QStringRef where it's possible. Create QString from QStringRef only where necessary. Change-Id: I728c4338135f83d9cdff4d1ee1aed77f95d453b8 Reviewed-by: Thiago Macieira Reviewed-by: Marc Mutz --- src/widgets/widgets/qabstractspinbox.cpp | 4 ++-- src/widgets/widgets/qtabbar.cpp | 6 +++--- src/widgets/widgets/qtextbrowser.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp index b33984e6c6..774f5a708d 100644 --- a/src/widgets/widgets/qabstractspinbox.cpp +++ b/src/widgets/widgets/qabstractspinbox.cpp @@ -1418,7 +1418,7 @@ QStyle::SubControl QAbstractSpinBoxPrivate::newHoverControl(const QPoint &pos) QString QAbstractSpinBoxPrivate::stripped(const QString &t, int *pos) const { - QString text = t; + QStringRef text(&t); if (specialValueText.size() == 0 || text != specialValueText) { int from = 0; int size = text.size(); @@ -1440,7 +1440,7 @@ QString QAbstractSpinBoxPrivate::stripped(const QString &t, int *pos) const text = text.trimmed(); if (pos) (*pos) -= (s - text.size()); - return text; + return text.toString(); } diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 7a192193e4..09b7cb9d24 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -1413,13 +1413,13 @@ static QString computeElidedText(Qt::TextElideMode mode, const QString &text) QString ret; switch (mode) { case Qt::ElideRight: - ret = text.left(2) + Ellipses; + ret = text.leftRef(2) + Ellipses; break; case Qt::ElideMiddle: - ret = text.left(1) + Ellipses + text.right(1); + ret = text.leftRef(1) + Ellipses + text.rightRef(1); break; case Qt::ElideLeft: - ret = Ellipses + text.right(2); + ret = Ellipses + text.rightRef(2); break; case Qt::ElideNone: ret = text; diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp index 45da34c383..df92fc0e1e 100644 --- a/src/widgets/widgets/qtextbrowser.cpp +++ b/src/widgets/widgets/qtextbrowser.cpp @@ -302,7 +302,7 @@ void QTextBrowserPrivate::setSource(const QUrl &url) qWarning("QTextBrowser: No document for %s", url.toString().toLatin1().constData()); if (q->isVisible()) { - QString firstTag = txt.left(txt.indexOf(QLatin1Char('>')) + 1); + const QStringRef firstTag = txt.leftRef(txt.indexOf(QLatin1Char('>')) + 1); if (firstTag.startsWith(QLatin1String(" Date: Wed, 22 Jun 2016 11:57:15 +0200 Subject: QDockWidget: fix floating group tab window not having the right title MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before, we were relying on the ZOrderChange event to update the windows title or other flags of a floating tab window when tabs are changed. But this did not catch all the cases. For example, the first tab switch, or when tabs are dragged out. Task-number: QTBUG-53754 Task-number: QTBUG-52107 Change-Id: I1523ce85ceaa95f044bd81f8ccbac0a86978fb33 Reviewed-by: Sérgio Martins --- src/widgets/widgets/qdockarealayout.cpp | 3 +++ src/widgets/widgets/qdockwidget.cpp | 5 ----- 2 files changed, 3 insertions(+), 5 deletions(-) (limited to 'src/widgets/widgets') diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp index 2823bd6f2f..d22e89c6e1 100644 --- a/src/widgets/widgets/qdockarealayout.cpp +++ b/src/widgets/widgets/qdockarealayout.cpp @@ -2155,6 +2155,9 @@ bool QDockAreaLayoutInfo::updateTabBar() const if (oldCurrentId > 0 && currentTabId() != oldCurrentId) that->setCurrentTabId(oldCurrentId); + if (QDockWidgetGroupWindow *dwgw = qobject_cast(tabBar->parent())) + dwgw->adjustFlags(); + //returns if the tabbar is visible or not return ( (gap ? 1 : 0) + tabBar->count()) > 1; } diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 8b2e7a6660..a7e04d3bfc 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -1386,8 +1386,6 @@ void QDockWidget::changeEvent(QEvent *event) if (QDockAreaLayoutInfo *info = winLayout->layoutState.dockAreaLayout.info(this)) info->updateTabBar(); } - if (QDockWidgetGroupWindow *p = qobject_cast(parent())) - p->adjustFlags(); } #endif // QT_NO_TABBAR break; @@ -1477,9 +1475,6 @@ bool QDockWidget::event(QEvent *event) } if (!isFloating() && layout != 0 && onTop) layout->raise(this); - if (QDockWidgetGroupWindow *p = qobject_cast(parent())) - p->adjustFlags(); - break; } case QEvent::WindowActivate: -- cgit v1.2.3