summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-05-13 12:42:46 +0200
committerPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-05-13 12:42:46 +0200
commit8524853227c753b5cfa14184a086ec0acff3930a (patch)
tree808fab49e65286a4b4416a8462bb78fc188dfeac /src/widgets
parentd5a6c1613b52ebc015aa85a46c1387909d435926 (diff)
parentbf06924f3ffd22747c93a720caa501d8478dcbe6 (diff)
Merge branch 'wip/highdpi' of git://code.qt.io/qt/qtbase into dev-highdpi
Conflicts: src/plugins/platforms/xcb/qxcbscreen.cpp src/plugins/platforms/xcb/qxcbwindow.cpp
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp155
-rw-r--r--src/widgets/dialogs/qfiledialog_p.h8
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp2
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.h2
-rw-r--r--src/widgets/itemviews/qtreeview.cpp2
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp8
-rw-r--r--src/widgets/kernel/qapplication.cpp6
-rw-r--r--src/widgets/kernel/qtooltip.cpp1
-rw-r--r--src/widgets/kernel/qwhatsthis.cpp1
-rw-r--r--src/widgets/kernel/qwidget.cpp3
-rw-r--r--src/widgets/kernel/qwidget_p.h2
-rw-r--r--src/widgets/kernel/qwidgetbackingstore.cpp1
-rw-r--r--src/widgets/styles/qfusionstyle.cpp1
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp2
-rw-r--r--src/widgets/styles/qwindowsstyle_p_p.h1
-rw-r--r--src/widgets/util/qsystemtrayicon_x11.cpp2
-rw-r--r--src/widgets/widgets/qcombobox_p.h1
-rw-r--r--src/widgets/widgets/qdockwidget.cpp10
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp4
20 files changed, 154 insertions, 62 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 6a1374e3ee..1be2f93478 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -331,6 +331,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
#ifdef Q_DEAD_CODE_FROM_QT4_WIN
#include <qwindowsstyle_p.h>
#endif
+#include <QMetaEnum>
#include <qshortcut.h>
#ifdef Q_DEAD_CODE_FROM_QT4_MAC
#include <qmacstyle_mac_p.h>
@@ -385,9 +386,8 @@ QFileDialog::QFileDialog(const QFileDialogArgs &args)
QFileDialog::~QFileDialog()
{
#ifndef QT_NO_SETTINGS
- QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- settings.beginGroup(QLatin1String("Qt"));
- settings.setValue(QLatin1String("filedialog"), saveState());
+ Q_D(QFileDialog);
+ d->saveSettings();
#endif
}
@@ -503,34 +503,7 @@ bool QFileDialog::restoreState(const QByteArray &state)
if (!d->usingWidgets())
return true;
- if (!d->qFileDialogUi->splitter->restoreState(d->splitterState))
- return false;
- QList<int> list = d->qFileDialogUi->splitter->sizes();
- if (list.count() >= 2 && (list.at(0) == 0 || list.at(1) == 0)) {
- for (int i = 0; i < list.count(); ++i)
- list[i] = d->qFileDialogUi->splitter->widget(i)->sizeHint().width();
- d->qFileDialogUi->splitter->setSizes(list);
- }
-
- d->qFileDialogUi->sidebar->setUrls(d->sidebarUrls);
- while (history.count() > 5)
- history.pop_front();
- setHistory(history);
- QHeaderView *headerView = d->qFileDialogUi->treeView->header();
- if (!headerView->restoreState(d->headerData))
- return false;
-
- QList<QAction*> actions = headerView->actions();
- QAbstractItemModel *abstractModel = d->model;
-#ifndef QT_NO_PROXYMODEL
- if (d->proxyModel)
- abstractModel = d->proxyModel;
-#endif
- int total = qMin(abstractModel->columnCount(QModelIndex()), actions.count() + 1);
- for (int i = 1; i < total; ++i)
- actions.at(i - 1)->setChecked(!headerView->isSectionHidden(i));
-
- return true;
+ return d->restoreWidgetState(history, -1);
}
/*!
@@ -933,7 +906,7 @@ void QFileDialog::setDirectory(const QString &directory)
return;
QUrl newDirUrl = QUrl::fromLocalFile(newDirectory);
- d->setLastVisitedDirectory(newDirUrl);
+ QFileDialogPrivate::setLastVisitedDirectory(newDirUrl);
d->options->setInitialDirectory(QUrl::fromLocalFile(directory));
if (!d->usingWidgets()) {
@@ -994,7 +967,7 @@ void QFileDialog::setDirectoryUrl(const QUrl &directory)
if (!directory.isValid())
return;
- d->setLastVisitedDirectory(directory);
+ QFileDialogPrivate::setLastVisitedDirectory(directory);
d->options->setInitialDirectory(directory);
if (d->nativeDialogInUse)
@@ -2670,6 +2643,104 @@ void QFileDialog::accept()
}
}
+#ifndef QT_NO_SETTINGS
+void QFileDialogPrivate::saveSettings()
+{
+ Q_Q(QFileDialog);
+ QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
+ settings.beginGroup(QLatin1String("FileDialog"));
+
+ if (usingWidgets()) {
+ settings.setValue(QLatin1String("sidebarWidth"), qFileDialogUi->splitter->sizes().first());
+ settings.setValue(QLatin1String("shortcuts"), QUrl::toStringList(qFileDialogUi->sidebar->urls()));
+ settings.setValue(QLatin1String("treeViewHeader"), qFileDialogUi->treeView->header()->saveState());
+ }
+ QStringList historyUrls;
+ foreach (const QString &path, q->history())
+ historyUrls << QUrl::fromLocalFile(path).toString();
+ settings.setValue(QLatin1String("history"), historyUrls);
+ settings.setValue(QLatin1String("lastVisited"), lastVisitedDir()->toString());
+ const QMetaEnum &viewModeMeta = q->metaObject()->enumerator(q->metaObject()->indexOfEnumerator("ViewMode"));
+ settings.setValue(QLatin1String("viewMode"), QLatin1String(viewModeMeta.key(q->viewMode())));
+ settings.setValue(QLatin1String("qtVersion"), QLatin1String(QT_VERSION_STR));
+}
+
+bool QFileDialogPrivate::restoreFromSettings()
+{
+ Q_Q(QFileDialog);
+ QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
+ if (!settings.childGroups().contains(QLatin1String("FileDialog")))
+ return false;
+ settings.beginGroup(QLatin1String("FileDialog"));
+
+ q->setDirectoryUrl(lastVisitedDir()->isEmpty() ? settings.value(QLatin1String("lastVisited")).toUrl() : *lastVisitedDir());
+
+ QByteArray viewModeStr = settings.value(QLatin1String("viewMode")).toString().toLatin1();
+ const QMetaEnum &viewModeMeta = q->metaObject()->enumerator(q->metaObject()->indexOfEnumerator("ViewMode"));
+ bool ok = false;
+ int viewMode = viewModeMeta.keyToValue(viewModeStr.constData(), &ok);
+ if (!ok)
+ viewMode = QFileDialog::List;
+ q->setViewMode(static_cast<QFileDialog::ViewMode>(viewMode));
+
+ sidebarUrls = QUrl::fromStringList(settings.value(QLatin1String("shortcuts")).toStringList());
+ headerData = settings.value(QLatin1String("treeViewHeader")).toByteArray();
+
+ if (!usingWidgets())
+ return true;
+
+ QStringList history;
+ foreach (const QString &urlStr, settings.value(QLatin1String("history")).toStringList()) {
+ QUrl url(urlStr);
+ if (url.isLocalFile())
+ history << url.toLocalFile();
+ }
+
+ return restoreWidgetState(history, settings.value(QLatin1String("sidebarWidth"), -1).toInt());
+}
+#endif // QT_NO_SETTINGS
+
+bool QFileDialogPrivate::restoreWidgetState(QStringList &history, int splitterPosition)
+{
+ Q_Q(QFileDialog);
+ if (splitterPosition >= 0) {
+ QList<int> splitterSizes;
+ splitterSizes.append(splitterPosition);
+ splitterSizes.append(qFileDialogUi->splitter->widget(1)->sizeHint().width());
+ qFileDialogUi->splitter->setSizes(splitterSizes);
+ } else {
+ if (!qFileDialogUi->splitter->restoreState(splitterState))
+ return false;
+ QList<int> list = qFileDialogUi->splitter->sizes();
+ if (list.count() >= 2 && (list.at(0) == 0 || list.at(1) == 0)) {
+ for (int i = 0; i < list.count(); ++i)
+ list[i] = qFileDialogUi->splitter->widget(i)->sizeHint().width();
+ qFileDialogUi->splitter->setSizes(list);
+ }
+ }
+
+ qFileDialogUi->sidebar->setUrls(sidebarUrls);
+ while (history.count() > 5)
+ history.pop_front();
+ q->setHistory(history);
+
+ QHeaderView *headerView = qFileDialogUi->treeView->header();
+ if (!headerView->restoreState(headerData))
+ return false;
+
+ QList<QAction*> actions = headerView->actions();
+ QAbstractItemModel *abstractModel = model;
+#ifndef QT_NO_PROXYMODEL
+ if (proxyModel)
+ abstractModel = proxyModel;
+#endif
+ int total = qMin(abstractModel->columnCount(QModelIndex()), actions.count() + 1);
+ for (int i = 1; i < total; ++i)
+ actions.at(i - 1)->setChecked(!headerView->isSectionHidden(i));
+
+ return true;
+}
+
/*!
\internal
@@ -2696,8 +2767,12 @@ void QFileDialogPrivate::init(const QUrl &directory, const QString &nameFilter,
q->selectFile(initialSelection(directory));
#ifndef QT_NO_SETTINGS
- const QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- q->restoreState(settings.value(QLatin1String("Qt/filedialog")).toByteArray());
+ // Try to restore from the FileDialog settings group; if it fails, fall back
+ // to the pre-5.5 QByteArray serialized settings.
+ if (!restoreFromSettings()) {
+ const QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
+ q->restoreState(settings.value(QLatin1String("Qt/filedialog")).toByteArray());
+ }
#endif
#if defined(Q_EMBEDDED_SMALLSCREEN)
@@ -2845,8 +2920,12 @@ void QFileDialogPrivate::createWidgets()
createMenuActions();
#ifndef QT_NO_SETTINGS
- const QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- q->restoreState(settings.value(QLatin1String("Qt/filedialog")).toByteArray());
+ // Try to restore from the FileDialog settings group; if it fails, fall back
+ // to the pre-5.5 QByteArray serialized settings.
+ if (!restoreFromSettings()) {
+ const QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
+ q->restoreState(settings.value(QLatin1String("Qt/filedialog")).toByteArray());
+ }
#endif
// Initial widget states from options
@@ -3689,7 +3768,7 @@ QString QFileDialogPrivate::getEnvironmentVariable(const QString &string)
{
#ifdef Q_OS_UNIX
if (string.size() > 1 && string.startsWith(QLatin1Char('$'))) {
- return QString::fromLocal8Bit(getenv(string.mid(1).toLatin1().constData()));
+ return QString::fromLocal8Bit(qgetenv(string.mid(1).toLatin1().constData()));
}
#else
if (string.size() > 2 && string.startsWith(QLatin1Char('%')) && string.endsWith(QLatin1Char('%'))) {
diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h
index 9eb08f7a3a..f610e46f83 100644
--- a/src/widgets/dialogs/qfiledialog_p.h
+++ b/src/widgets/dialogs/qfiledialog_p.h
@@ -181,7 +181,13 @@ public:
#endif
}
- void setLastVisitedDirectory(const QUrl &dir);
+#ifndef QT_NO_SETTINGS
+ void saveSettings();
+ bool restoreFromSettings();
+#endif
+
+ bool restoreWidgetState(QStringList &history, int splitterPosition);
+ static void setLastVisitedDirectory(const QUrl &dir);
void retranslateWindowTitle();
void retranslateStrings();
void emitFilesSelected(const QStringList &files);
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
index a4609c41cf..c0bb8ef63a 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
@@ -251,9 +251,7 @@ struct AnchorVertexPair : public AnchorVertex {
#ifdef QT_DEBUG
inline QString AnchorVertex::toString() const
{
- if (!this) {
- return QLatin1String("NULL");
- } else if (m_type == Pair) {
+ if (m_type == Pair) {
const AnchorVertexPair *vp = static_cast<const AnchorVertexPair *>(this);
return QString::fromLatin1("(%1, %2)").arg(vp->m_first->toString()).arg(vp->m_second->toString());
} else if (!m_item) {
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index eaa5cb99e4..cd30410097 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -11290,7 +11290,7 @@ static void formatGraphicsItemHelper(QDebug debug, const QGraphicsItem *item)
debug << ", pos=";
QtDebugUtils::formatQPoint(debug, item->pos());
if (const qreal z = item->zValue())
- debug << ", z=" << item->zValue();
+ debug << ", z=" << z;
if (item->flags())
debug << ", flags=" << item->flags();
}
diff --git a/src/widgets/graphicsview/qgraphicssceneevent.h b/src/widgets/graphicsview/qgraphicssceneevent.h
index 1e3554fa36..ffa708ea23 100644
--- a/src/widgets/graphicsview/qgraphicssceneevent.h
+++ b/src/widgets/graphicsview/qgraphicssceneevent.h
@@ -40,7 +40,9 @@
#include <QtCore/qrect.h>
#include <QtGui/qpolygon.h>
#include <QtCore/qset.h>
+#if QT_DEPRECATED_SINCE(5, 5)
#include <QtCore/qhash.h>
+#endif
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 188a503d10..43db43fcd4 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -1913,7 +1913,7 @@ void QTreeView::mouseReleaseEvent(QMouseEvent *event)
if (d->itemDecorationAt(event->pos()) == -1) {
QAbstractItemView::mouseReleaseEvent(event);
} else {
- if (state() == QAbstractItemView::DragSelectingState)
+ if (state() == QAbstractItemView::DragSelectingState || state() == QAbstractItemView::DraggingState)
setState(QAbstractItemView::NoState);
if (style()->styleHint(QStyle::SH_ListViewExpand_SelectMouseType, 0, this) == QEvent::MouseButtonRelease)
d->expandOrCollapseItemAtPos(event->pos());
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index bf736bc387..1366a00318 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -1720,12 +1720,12 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
}
} break;
case Qt::CheckStateRole:
- if ((itemFlags & Qt::ItemIsTristate) && value != Qt::PartiallyChecked) {
+ if ((itemFlags & Qt::ItemIsAutoTristate) && value != Qt::PartiallyChecked) {
for (int i = 0; i < children.count(); ++i) {
QTreeWidgetItem *child = children.at(i);
if (child->data(column, role).isValid()) {// has a CheckState
Qt::ItemFlags f = itemFlags; // a little hack to avoid multiple dataChanged signals
- itemFlags &= ~Qt::ItemIsTristate;
+ itemFlags &= ~Qt::ItemIsAutoTristate;
child->setData(column, role, value);
itemFlags = f;
}
@@ -1760,7 +1760,7 @@ void QTreeWidgetItem::setData(int column, int role, const QVariant &value)
model->emitDataChanged(this, column);
if (role == Qt::CheckStateRole) {
QTreeWidgetItem *p;
- for (p = par; p && (p->itemFlags & Qt::ItemIsTristate); p = p->par)
+ for (p = par; p && (p->itemFlags & Qt::ItemIsAutoTristate); p = p->par)
model->emitDataChanged(p, column);
}
}
@@ -1779,7 +1779,7 @@ QVariant QTreeWidgetItem::data(int column, int role) const
break;
case Qt::CheckStateRole:
// special case for check state in tristate
- if (children.count() && (itemFlags & Qt::ItemIsTristate))
+ if (children.count() && (itemFlags & Qt::ItemIsAutoTristate))
return childrenCheckState(column);
// fallthrough intended
default:
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 00f590ebc2..dd7474b930 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -1508,6 +1508,7 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char*
QApplicationPrivate::set_pal = new QPalette(palette);
else
*QApplicationPrivate::set_pal = palette;
+ QCoreApplication::setAttribute(Qt::AA_SetPalette);
}
}
@@ -2311,7 +2312,6 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool
*/
void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, const QPointF &globalPosF)
{
- const QPoint globalPos = globalPosF.toPoint();
#if 0
if (leave) {
QEvent e(QEvent::Leave);
@@ -2398,6 +2398,10 @@ void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, con
}
}
if (!enterList.isEmpty()) {
+ // Guard against QGuiApplicationPrivate::lastCursorPosition initialized to qInf(), qInf().
+ const QPoint globalPos = qIsInf(globalPosF.x())
+ ? QPoint(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)
+ : globalPosF.toPoint();
const QPoint windowPos = enterList.front()->window()->mapFromGlobal(globalPos);
for (int i = 0; i < enterList.size(); ++i) {
w = enterList.at(i);
diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp
index 8a800ab9d0..51bf6e4684 100644
--- a/src/widgets/kernel/qtooltip.cpp
+++ b/src/widgets/kernel/qtooltip.cpp
@@ -37,7 +37,6 @@
#include <qapplication.h>
#include <qdesktopwidget.h>
#include <qevent.h>
-#include <qhash.h>
#include <qlabel.h>
#include <qpointer.h>
#include <qstyle.h>
diff --git a/src/widgets/kernel/qwhatsthis.cpp b/src/widgets/kernel/qwhatsthis.cpp
index 5fb4695687..1e437c4fb7 100644
--- a/src/widgets/kernel/qwhatsthis.cpp
+++ b/src/widgets/kernel/qwhatsthis.cpp
@@ -42,7 +42,6 @@
#include "qscreen.h"
#include "qpainter.h"
#include "qtimer.h"
-#include "qhash.h"
#include "qaction.h"
#include "qcursor.h"
#include "qbitmap.h"
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 65bc924492..f05094dd01 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -37,7 +37,6 @@
#include "qcursor.h"
#include "qdesktopwidget_p.h"
#include "qevent.h"
-#include "qhash.h"
#include "qlayout.h"
#include "qmenu.h"
#include "qmetaobject.h"
@@ -2610,6 +2609,8 @@ QString QWidget::styleSheet() const
void QWidget::setStyleSheet(const QString& styleSheet)
{
Q_D(QWidget);
+ if (data->in_destructor)
+ return;
d->createExtra();
QStyleSheetStyle *proxy = qobject_cast<QStyleSheetStyle *>(d->extra->style);
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index 9425426215..fe65cb19c7 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -358,7 +358,7 @@ public:
void updateFont(const QFont &);
inline void setFont_helper(const QFont &font) {
- if (data.fnt == font && data.fnt.resolve() == font.resolve())
+ if (data.fnt.resolve() == font.resolve() && data.fnt == font)
return;
updateFont(font);
}
diff --git a/src/widgets/kernel/qwidgetbackingstore.cpp b/src/widgets/kernel/qwidgetbackingstore.cpp
index f8b8ec5ea3..485cf82078 100644
--- a/src/widgets/kernel/qwidgetbackingstore.cpp
+++ b/src/widgets/kernel/qwidgetbackingstore.cpp
@@ -762,6 +762,7 @@ QWidgetBackingStore::~QWidgetBackingStore()
resetWidget(dirtyRenderToTextureWidgets.at(c));
#ifndef QT_NO_OPENGL
+ delete widgetTextures;
delete dirtyOnScreenWidgets;
#endif
dirtyOnScreenWidgets = 0;
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 6d722c680b..f87542ffa8 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -40,7 +40,6 @@
#include <qpushbutton.h>
#include <qpainter.h>
#include <qdir.h>
-#include <qhash.h>
#include <qstyleoption.h>
#include <qapplication.h>
#include <qmainwindow.h>
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp
index bed2b5c57a..40597a41f3 100644
--- a/src/widgets/styles/qwindowsstyle.cpp
+++ b/src/widgets/styles/qwindowsstyle.cpp
@@ -1795,7 +1795,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
QColor left, right;
//Titlebar gradient
- if (widget && widget->isWindow()) {
+ if (opt->state & QStyle::State_Window) {
floating = true;
if (active) {
left = d->activeCaptionColor;
diff --git a/src/widgets/styles/qwindowsstyle_p_p.h b/src/widgets/styles/qwindowsstyle_p_p.h
index a35ce3e6a1..c8778cc914 100644
--- a/src/widgets/styles/qwindowsstyle_p_p.h
+++ b/src/widgets/styles/qwindowsstyle_p_p.h
@@ -50,7 +50,6 @@
#ifndef QT_NO_STYLE_WINDOWS
#include <qlist.h>
-#include <qhash.h>
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp
index 2752c56c65..9a69db1bc8 100644
--- a/src/widgets/util/qsystemtrayicon_x11.cpp
+++ b/src/widgets/util/qsystemtrayicon_x11.cpp
@@ -354,7 +354,7 @@ void QSystemTrayIconPrivate::showMessage_sys(const QString &title, const QString
}
if (!sys)
return;
- QBalloonTip::showBalloon(icon, message, title, sys->systemTrayIcon(),
+ QBalloonTip::showBalloon(icon, title, message, sys->systemTrayIcon(),
sys->globalGeometry().center(),
msecs);
}
diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h
index 3fdfdcc22f..b69b94f3b9 100644
--- a/src/widgets/widgets/qcombobox_p.h
+++ b/src/widgets/widgets/qcombobox_p.h
@@ -57,7 +57,6 @@
#include "QtGui/qpainter.h"
#include "QtWidgets/qstyle.h"
#include "QtWidgets/qstyleoption.h"
-#include "QtCore/qhash.h"
#include "QtCore/qpair.h"
#include "QtCore/qtimer.h"
#include "private/qwidget_p.h"
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index db8d167b0d..21b0904cc0 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -1031,8 +1031,14 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect
q->setWindowFlags(flags);
- if (!rect.isNull())
- q->setGeometry(rect);
+ if (!rect.isNull()) {
+ if (floating) {
+ q->resize(rect.size());
+ q->move(rect.topLeft());
+ } else {
+ q->setGeometry(rect);
+ }
+ }
updateButtons();
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index 1efe88acde..5a56c592a6 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -733,9 +733,9 @@ void QToolButtonPrivate::popupTimerDone()
horizontal = false;
#endif
QPoint p;
- QRect screen = QApplication::desktop()->availableGeometry(q);
+ const QRect rect = q->rect(); // Find screen via point in case of QGraphicsProxyWidget.
+ QRect screen = QApplication::desktop()->availableGeometry(q->mapToGlobal(rect.center()));
QSize sh = ((QToolButton*)(QMenu*)actualMenu)->receivers(SIGNAL(aboutToShow()))? QSize() : actualMenu->sizeHint();
- QRect rect = q->rect();
if (horizontal) {
if (q->isRightToLeft()) {
if (q->mapToGlobal(QPoint(0, rect.bottom())).y() + sh.height() <= screen.height()) {