summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-06-30 22:59:21 +0200
committerLiang Qi <liang.qi@qt.io>2018-07-02 11:23:45 +0200
commite3ed2281c0c891cf3b15c95f9f7cdae42e9f233a (patch)
treeaae8da6ce616eae02b69fb1fcdcb4383c8fe6811 /src/widgets
parent3be141d5bc199080b524d8f6f5ce514e8f74d23a (diff)
parente75e4b39b78ba05ea2cd45dc96acf99fc89c5915 (diff)
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts: src/plugins/platforms/cocoa/qnsview.mm src/plugins/platforms/cocoa/qnsview_dragging.mm src/plugins/platforms/ios/qiosinputcontext.mm src/plugins/platforms/xcb/qxcbconnection.cpp src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/platforms/xcb/qxcbwindow.cpp src/tools/androiddeployqt/main.cpp Was moved from qttools into qtbase in 5.11. So re-apply 32398e4d here. tests/auto/corelib/global/qlogging/test/test.pro tests/auto/corelib/global/qlogging/tst_qlogging.cpp tests/auto/corelib/io/qfile/tst_qfile.cpp tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp tests/auto/corelib/thread/qthreadstorage/test/test.pro tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp tests/auto/widgets/kernel/qapplication/test/test.pro Done-with: Gatis Paeglis <gatis.paeglis@qt.io> Done-with: MÃ¥rten Nordheim <marten.nordheim@qt.io> Done-with: Oliver Wolff <oliver.wolff@qt.io> Change-Id: Id970486c5315a1718c540f00deb2633533e8fc7b
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp43
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp2
-rw-r--r--src/widgets/itemviews/qheaderview.cpp2
-rw-r--r--src/widgets/kernel/qwidget.cpp3
-rw-r--r--src/widgets/widgets/qmenubar.cpp11
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp2
-rw-r--r--src/widgets/widgets/qtextedit.cpp2
7 files changed, 46 insertions, 19 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 8248676a9f..2742b152f2 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -1463,19 +1463,6 @@ void QFileDialog::selectNameFilter(const QString &filter)
}
/*!
- * \since 5.9
- * \return The mimetype of the file that the user selected in the file dialog.
- */
-QString QFileDialog::selectedMimeTypeFilter() const
-{
- Q_D(const QFileDialog);
- if (!d->usingWidgets())
- return d->selectedMimeTypeFilter_sys();
-
- return d->options->initiallySelectedMimeTypeFilter();
-}
-
-/*!
\since 4.4
Returns the filter that the user selected in the file dialog.
@@ -1612,6 +1599,36 @@ void QFileDialog::selectMimeTypeFilter(const QString &filter)
#endif // QT_NO_MIMETYPE
/*!
+ * \since 5.9
+ * \return The mimetype of the file that the user selected in the file dialog.
+ */
+QString QFileDialog::selectedMimeTypeFilter() const
+{
+ Q_D(const QFileDialog);
+ QString mimeTypeFilter;
+ if (!d->usingWidgets())
+ mimeTypeFilter = d->selectedMimeTypeFilter_sys();
+
+#ifndef QT_NO_MIMETYPE
+ if (mimeTypeFilter.isNull() && !d->options->mimeTypeFilters().isEmpty()) {
+ const auto nameFilter = selectedNameFilter();
+ const auto mimeTypes = d->options->mimeTypeFilters();
+ for (const auto &mimeType: mimeTypes) {
+ QString filter = nameFilterForMime(mimeType);
+ if (testOption(HideNameFilterDetails))
+ filter = qt_strip_filters({ filter }).first();
+ if (filter == nameFilter) {
+ mimeTypeFilter = mimeType;
+ break;
+ }
+ }
+ }
+#endif
+
+ return mimeTypeFilter;
+}
+
+/*!
\property QFileDialog::viewMode
\brief the way files and directories are displayed in the dialog
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 38df9e72bd..203b879020 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -1579,6 +1579,7 @@ QGraphicsItem::~QGraphicsItem()
QObjectPrivate *p = QObjectPrivate::get(o);
p->wasDeleted = true;
if (p->declarativeData) {
+ p->wasDeleted = true; // needed, so that destroying the declarative data does the right thing
if (static_cast<QAbstractDeclarativeDataImpl*>(p->declarativeData)->ownedByQml1) {
if (QAbstractDeclarativeData::destroyed_qml1)
QAbstractDeclarativeData::destroyed_qml1(p->declarativeData, o);
@@ -1587,6 +1588,7 @@ QGraphicsItem::~QGraphicsItem()
QAbstractDeclarativeData::destroyed(p->declarativeData, o);
}
p->declarativeData = 0;
+ p->wasDeleted = false;
}
}
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index 6dc0543255..762e852f88 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -2727,7 +2727,7 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
statusTip = d->model->headerData(logical, d->orientation, Qt::StatusTipRole).toString();
if (d->shouldClearStatusTip || !statusTip.isEmpty()) {
QStatusTipEvent tip(statusTip);
- QCoreApplication::sendEvent(d->parent, &tip);
+ QCoreApplication::sendEvent(d->parent ? d->parent : this, &tip);
d->shouldClearStatusTip = !statusTip.isEmpty();
}
#endif // !QT_NO_STATUSTIP
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index e59bd4098d..9a19597cad 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -1677,8 +1677,8 @@ QWidget::~QWidget()
}
}
- d->wasDeleted = true;
if (d->declarativeData) {
+ d->wasDeleted = true; // needed, so that destroying the declarative data does the right thing
if (static_cast<QAbstractDeclarativeDataImpl*>(d->declarativeData)->ownedByQml1) {
if (QAbstractDeclarativeData::destroyed_qml1)
QAbstractDeclarativeData::destroyed_qml1(d->declarativeData, this);
@@ -1687,6 +1687,7 @@ QWidget::~QWidget()
QAbstractDeclarativeData::destroyed(d->declarativeData, this);
}
d->declarativeData = 0; // don't activate again in ~QObject
+ d->wasDeleted = false;
}
d->blockSig = blocked;
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp
index 4758f64c8c..6df53dc4e4 100644
--- a/src/widgets/widgets/qmenubar.cpp
+++ b/src/widgets/widgets/qmenubar.cpp
@@ -327,7 +327,7 @@ void QMenuBarPrivate::popupAction(QAction *action, bool activateFirst)
QRect screenRect = QDesktopWidgetPrivate::screenGeometry(pos + QPoint(adjustedActionRect.width() / 2, 0));
pos = QPoint(qMax(pos.x(), screenRect.x()), qMax(pos.y(), screenRect.y()));
- const bool fitUp = (q->mapToGlobal(adjustedActionRect.topLeft()).y() >= popup_size.height());
+ const bool fitUp = (pos.y() - popup_size.height() >= screenRect.top());
const bool fitDown = (pos.y() + popup_size.height() <= screenRect.bottom());
const bool rtl = q->isRightToLeft();
const int actionWidth = adjustedActionRect.width();
@@ -1209,8 +1209,15 @@ void QMenuBar::keyPressEvent(QKeyEvent *e)
void QMenuBar::mouseMoveEvent(QMouseEvent *e)
{
Q_D(QMenuBar);
- if (!(e->buttons() & Qt::LeftButton))
+ if (!(e->buttons() & Qt::LeftButton)) {
d->mouseDown = false;
+ // We receive mouse move and mouse press on touch.
+ // Mouse move will open the menu and mouse press
+ // will close it, so ignore mouse move.
+ if (e->source() != Qt::MouseEventNotSynthesized)
+ return;
+ }
+
bool popupState = d->popupState || d->mouseDown;
QAction *action = d->actionAt(e->pos());
if ((action && d->isVisible(action)) || !popupState)
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index f15a846b5e..252d5a79df 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -110,7 +110,7 @@ public:
/*! \class QPlainTextDocumentLayout
\since 4.4
- \brief The QPlainTextDocumentLayout class implements a plain text layout for QTextDocument
+ \brief The QPlainTextDocumentLayout class implements a plain text layout for QTextDocument.
\ingroup richtext-processing
\inmodule QtWidgets
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index bbcd3ca386..3a368651de 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -2048,7 +2048,7 @@ void QTextEdit::setAcceptRichText(bool accept)
\inmodule QtWidgets
\brief The QTextEdit::ExtraSelection structure provides a way of specifying a
- character format for a given selection in a document
+ character format for a given selection in a document.
*/
/*!