summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.cpp9
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.cpp10
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp2
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp6
-rw-r--r--src/widgets/itemviews/qtreeview.cpp6
-rw-r--r--src/widgets/styles/qcommonstyle.cpp6
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm3
-rw-r--r--src/widgets/util/qscroller.cpp2
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp32
-rw-r--r--src/widgets/widgets/qprogressbar.cpp2
-rw-r--r--src/widgets/widgets/qtabbar.cpp27
-rw-r--r--src/widgets/widgets/qtabbar_p.h15
-rw-r--r--src/widgets/widgets/qtextedit.cpp30
13 files changed, 93 insertions, 57 deletions
diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.cpp b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
index 422193d4dd..ae761d3478 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
@@ -89,6 +89,7 @@
#include "qgraphicswidget.h"
#include "qgraphicsgridlayoutengine_p.h"
#include "qgraphicslayoutstyleinfo_p.h"
+#include "qscopedpointer.h"
#ifdef QT_DEBUG
# include <QtCore/qdebug.h>
#endif
@@ -98,10 +99,10 @@ QT_BEGIN_NAMESPACE
class QGraphicsGridLayoutPrivate : public QGraphicsLayoutPrivate
{
public:
- QGraphicsGridLayoutPrivate(): m_styleInfo(0) { }
+ QGraphicsGridLayoutPrivate() { }
QGraphicsLayoutStyleInfo *styleInfo() const;
- mutable QGraphicsLayoutStyleInfo *m_styleInfo;
+ mutable QScopedPointer<QGraphicsLayoutStyleInfo> m_styleInfo;
QGraphicsGridLayoutEngine engine;
#ifdef QGRIDLAYOUTENGINE_DEBUG
@@ -113,8 +114,8 @@ public:
QGraphicsLayoutStyleInfo *QGraphicsGridLayoutPrivate::styleInfo() const
{
if (!m_styleInfo)
- m_styleInfo = new QGraphicsLayoutStyleInfo(this);
- return m_styleInfo;
+ m_styleInfo.reset(new QGraphicsLayoutStyleInfo(this));
+ return m_styleInfo.data();
}
/*!
diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.cpp b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
index 524649bf12..6763af7905 100644
--- a/src/widgets/graphicsview/qgraphicslinearlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
@@ -122,6 +122,7 @@
#include "qgraphicswidget.h"
#include "qgraphicsgridlayoutengine_p.h"
#include "qgraphicslayoutstyleinfo_p.h"
+#include "qscopedpointer.h"
#ifdef QT_DEBUG
#include <QtCore/qdebug.h>
#endif
@@ -132,8 +133,7 @@ class QGraphicsLinearLayoutPrivate : public QGraphicsLayoutPrivate
{
public:
QGraphicsLinearLayoutPrivate(Qt::Orientation orientation)
- : orientation(orientation),
- m_styleInfo(0)
+ : orientation(orientation)
{ }
void removeGridItem(QGridLayoutItem *gridItem);
@@ -143,7 +143,7 @@ public:
int gridColumn(int index) const;
Qt::Orientation orientation;
- mutable QGraphicsLayoutStyleInfo *m_styleInfo;
+ mutable QScopedPointer<QGraphicsLayoutStyleInfo> m_styleInfo;
QGraphicsGridLayoutEngine engine;
};
@@ -178,8 +178,8 @@ int QGraphicsLinearLayoutPrivate::gridColumn(int index) const
QGraphicsLayoutStyleInfo *QGraphicsLinearLayoutPrivate::styleInfo() const
{
if (!m_styleInfo)
- m_styleInfo = new QGraphicsLayoutStyleInfo(this);
- return m_styleInfo;
+ m_styleInfo.reset(new QGraphicsLayoutStyleInfo(this));
+ return m_styleInfo.data();
}
/*!
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp
index 450d5a7d9c..fc5dbdd80a 100644
--- a/src/widgets/graphicsview/qgraphicsview.cpp
+++ b/src/widgets/graphicsview/qgraphicsview.cpp
@@ -3831,7 +3831,7 @@ QTransform QGraphicsView::transform() const
}
/*!
- Returns a matrix that maps viewport coordinates to scene coordinates.
+ Returns a matrix that maps scene coordinates to viewport coordinates.
\sa mapToScene(), mapFromScene()
*/
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 1bdb4352af..6c38c53a77 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -2981,7 +2981,11 @@ void QAbstractItemView::keyboardSearch(const QString &search)
: d->model->index(0, 0, d->root);
bool skipRow = false;
bool keyboardTimeWasValid = d->keyboardInputTime.isValid();
- qint64 keyboardInputTimeElapsed = d->keyboardInputTime.restart();
+ qint64 keyboardInputTimeElapsed;
+ if (keyboardTimeWasValid)
+ keyboardInputTimeElapsed = d->keyboardInputTime.restart();
+ else
+ d->keyboardInputTime.start();
if (search.isEmpty() || !keyboardTimeWasValid
|| keyboardInputTimeElapsed > QApplication::keyboardInputInterval()) {
d->keyboardInput = search;
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 95f14bec78..8031d538a6 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -1024,7 +1024,11 @@ void QTreeView::keyboardSearch(const QString &search)
bool skipRow = false;
bool keyboardTimeWasValid = d->keyboardInputTime.isValid();
- qint64 keyboardInputTimeElapsed = d->keyboardInputTime.restart();
+ qint64 keyboardInputTimeElapsed;
+ if (keyboardTimeWasValid)
+ keyboardInputTimeElapsed = d->keyboardInputTime.restart();
+ else
+ d->keyboardInputTime.start();
if (search.isEmpty() || !keyboardTimeWasValid
|| keyboardInputTimeElapsed > QApplication::keyboardInputInterval()) {
d->keyboardInput = search;
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index 5ac2293751..63024360ae 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -1616,7 +1616,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
if (!hasArrow) {
proxy()->drawItemPixmap(p, pr, Qt::AlignCenter, pm);
} else {
- drawArrow(this, toolbutton, pr, p, widget);
+ drawArrow(proxy(), toolbutton, pr, p, widget);
}
alignment |= Qt::AlignCenter;
} else {
@@ -1626,7 +1626,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
if (!hasArrow) {
proxy()->drawItemPixmap(p, QStyle::visualRect(opt->direction, rect, pr), Qt::AlignCenter, pm);
} else {
- drawArrow(this, toolbutton, pr, p, widget);
+ drawArrow(proxy(), toolbutton, pr, p, widget);
}
alignment |= Qt::AlignLeft | Qt::AlignVCenter;
}
@@ -1637,7 +1637,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
} else {
rect.translate(shiftX, shiftY);
if (hasArrow) {
- drawArrow(this, toolbutton, rect, p, widget);
+ drawArrow(proxy(), toolbutton, rect, p, widget);
} else {
proxy()->drawItemPixmap(p, rect, Qt::AlignCenter, pm);
}
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm
index d29ff93382..e51f750916 100644
--- a/src/widgets/styles/qmacstyle_mac.mm
+++ b/src/widgets/styles/qmacstyle_mac.mm
@@ -4954,6 +4954,9 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
break;
}
case SE_ProgressBarGroove:
+ // Wrong in the secondary dimension, but accurate enough in the main dimension.
+ rect = opt->rect;
+ break;
case SE_ProgressBarLabel:
break;
case SE_ProgressBarContents:
diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp
index 2e48208402..f3b442928a 100644
--- a/src/widgets/util/qscroller.cpp
+++ b/src/widgets/util/qscroller.cpp
@@ -193,7 +193,7 @@ class QScrollTimer : public QAbstractAnimation
{
public:
QScrollTimer(QScrollerPrivate *_d)
- : d(_d), ignoreUpdate(false), skip(0)
+ : QAbstractAnimation(_d), d(_d), ignoreUpdate(false), skip(0)
{ }
int duration() const Q_DECL_OVERRIDE
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index 3772a7866e..17eac9db58 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -2194,27 +2194,25 @@ QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
/*!\internal
*/
-QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery property, QVariant argument) const
+QVariant QPlainTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const
{
Q_D(const QPlainTextEdit);
- QVariant v;
- switch (property) {
- case Qt::ImHints:
- v = QWidget::inputMethodQuery(property);
- break;
+ if (query == Qt::ImHints)
+ return QWidget::inputMethodQuery(query);
+ const QVariant v = d->control->inputMethodQuery(query, argument);
+ const QPointF offset = contentOffset();
+ switch (v.type()) {
+ case QVariant::RectF:
+ return v.toRectF().translated(offset);
+ case QVariant::PointF:
+ return v.toPointF() + offset;
+ case QVariant::Rect:
+ return v.toRect().translated(offset.toPoint());
+ case QVariant::Point:
+ return v.toPoint() + offset.toPoint();
default:
- v = d->control->inputMethodQuery(property, argument);
- const QPoint offset(-d->horizontalOffset(), -0);
- if (v.type() == QVariant::RectF)
- v = v.toRectF().toRect().translated(offset);
- else if (v.type() == QVariant::PointF)
- v = v.toPointF().toPoint() + offset;
- else if (v.type() == QVariant::Rect)
- v = v.toRect().translated(offset);
- else if (v.type() == QVariant::Point)
- v = v.toPoint() + offset;
+ break;
}
-
return v;
}
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index 1ba0d78622..10f005e6d3 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -161,7 +161,7 @@ bool QProgressBarPrivate::repaintRequired() const
QStyleOptionProgressBar opt;
q->initStyleOption(&opt);
int cw = q->style()->pixelMetric(QStyle::PM_ProgressBarChunkWidth, &opt, q);
- QRect groove = q->style()->subElementRect(QStyle::SE_ProgressBarGroove, &opt, q);
+ QRect groove = q->style()->subElementRect(QStyle::SE_ProgressBarGroove, &opt, q);
// This expression is basically
// (valueDifference / (maximum - minimum) > cw / groove.width())
// transformed to avoid integer division.
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index f56830c14b..6c748c09bb 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -70,6 +70,23 @@
QT_BEGIN_NAMESPACE
+QMovableTabWidget::QMovableTabWidget(QWidget *parent)
+ : QWidget(parent)
+{
+}
+
+void QMovableTabWidget::setPixmap(const QPixmap &pixmap)
+{
+ m_pixmap = pixmap;
+ update();
+}
+
+void QMovableTabWidget::paintEvent(QPaintEvent *e)
+{
+ Q_UNUSED(e);
+ QPainter p(this);
+ p.drawPixmap(0, 0, m_pixmap);
+}
inline static bool verticalTabs(QTabBar::Shape shape)
{
@@ -1992,13 +2009,14 @@ void QTabBarPrivate::setupMovableTab()
{
Q_Q(QTabBar);
if (!movingTab)
- movingTab = new QWidget(q);
+ movingTab = new QMovableTabWidget(q);
int taboverlap = q->style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0 ,q);
QRect grabRect = q->tabRect(pressedIndex);
grabRect.adjust(-taboverlap, 0, taboverlap, 0);
- QPixmap grabImage(grabRect.size());
+ QPixmap grabImage(grabRect.size() * q->devicePixelRatioF());
+ grabImage.setDevicePixelRatio(q->devicePixelRatioF());
grabImage.fill(Qt::transparent);
QStylePainter p(&grabImage, q);
p.initFrom(q);
@@ -2009,11 +2027,8 @@ void QTabBarPrivate::setupMovableTab()
p.drawControl(QStyle::CE_TabBarTab, tab);
p.end();
- QPalette pal;
- pal.setBrush(QPalette::All, QPalette::Window, grabImage);
- movingTab->setPalette(pal);
+ movingTab->setPixmap(grabImage);
movingTab->setGeometry(grabRect);
- movingTab->setAutoFillBackground(true);
movingTab->raise();
// Re-arrange widget order to avoid overlaps
diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h
index c5eb0d42d7..48f235f050 100644
--- a/src/widgets/widgets/qtabbar_p.h
+++ b/src/widgets/widgets/qtabbar_p.h
@@ -67,6 +67,19 @@
QT_BEGIN_NAMESPACE
+class QMovableTabWidget : public QWidget
+{
+public:
+ explicit QMovableTabWidget(QWidget *parent = Q_NULLPTR);
+ void setPixmap(const QPixmap &pixmap);
+
+protected:
+ void paintEvent(QPaintEvent *e) Q_DECL_OVERRIDE;
+
+private:
+ QPixmap m_pixmap;
+};
+
class QTabBarPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QTabBar)
@@ -207,7 +220,7 @@ public:
int switchTabCurrentIndex;
int switchTabTimerId;
- QWidget *movingTab;
+ QMovableTabWidget *movingTab;
#ifdef Q_DEAD_CODE_FROM_QT4_MAC
int previousPressedIndex;
#endif
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index 3f2e4728ed..1dd774cf7a 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -1727,24 +1727,22 @@ QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery property) const
QVariant QTextEdit::inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const
{
Q_D(const QTextEdit);
- QVariant v;
- switch (query) {
- case Qt::ImHints:
- v = QWidget::inputMethodQuery(query);
- break;
+ if (query == Qt::ImHints)
+ return QWidget::inputMethodQuery(query);
+ const QVariant v = d->control->inputMethodQuery(query, argument);
+ const QPointF offset(-d->horizontalOffset(), -d->verticalOffset());
+ switch (v.type()) {
+ case QVariant::RectF:
+ return v.toRectF().translated(offset);
+ case QVariant::PointF:
+ return v.toPointF() + offset;
+ case QVariant::Rect:
+ return v.toRect().translated(offset.toPoint());
+ case QVariant::Point:
+ return v.toPoint() + offset.toPoint();
default:
- v = d->control->inputMethodQuery(query, argument);
- const QPoint offset(-d->horizontalOffset(), -d->verticalOffset());
- if (v.type() == QVariant::RectF)
- v = v.toRectF().toRect().translated(offset);
- else if (v.type() == QVariant::PointF)
- v = v.toPointF().toPoint() + offset;
- else if (v.type() == QVariant::Rect)
- v = v.toRect().translated(offset);
- else if (v.type() == QVariant::Point)
- v = v.toPoint() + offset;
+ break;
}
-
return v;
}