diff options
author | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-12-10 07:58:06 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@theqtcompany.com> | 2014-12-10 07:58:06 +0100 |
commit | 015002fec9abff6a4c1bb3fa4b9de87279a079c3 (patch) | |
tree | ad93af535a503d0a49d6c6367e990a8fbca163d3 /src/widgets | |
parent | f1e00262321cc8daa3c7506153653453e2779886 (diff) | |
parent | b9547af45ea2bbbc634722c1ef41afdb54216ce2 (diff) |
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
doc/global/template/style/online.css
mkspecs/android-g++/qmake.conf
Change-Id: Ib39ea7bd42f5ae12e82a3bc59a66787a16bdfc61
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/itemviews/qabstractitemview.cpp | 6 | ||||
-rw-r--r-- | src/widgets/itemviews/qcolumnview.cpp | 7 | ||||
-rw-r--r-- | src/widgets/itemviews/qheaderview.cpp | 11 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication.cpp | 33 | ||||
-rw-r--r-- | src/widgets/kernel/qapplication_p.h | 1 | ||||
-rw-r--r-- | src/widgets/kernel/qlayout.cpp | 3 | ||||
-rw-r--r-- | src/widgets/kernel/qstandardgestures.cpp | 23 | ||||
-rw-r--r-- | src/widgets/styles/qandroidstyle.cpp | 32 | ||||
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 7 | ||||
-rw-r--r-- | src/widgets/styles/qmacstyle_mac.mm | 2 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.cpp | 3 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 3 | ||||
-rw-r--r-- | src/widgets/widgets/qcombobox.cpp | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qmainwindowlayout.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qmenubar.cpp | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbar.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 11 |
18 files changed, 77 insertions, 80 deletions
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp index 9d38a330c8..75979e3986 100644 --- a/src/widgets/itemviews/qabstractitemview.cpp +++ b/src/widgets/itemviews/qabstractitemview.cpp @@ -891,6 +891,7 @@ void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *de disconnect(rowDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); disconnect(rowDelegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); + disconnect(rowDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout())); } d->rowDelegates.remove(row); } @@ -899,10 +900,12 @@ void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *de connect(delegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); connect(delegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); + connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout()), Qt::QueuedConnection); } d->rowDelegates.insert(row, delegate); } viewport()->update(); + d->doDelayedItemsLayout(); } /*! @@ -948,6 +951,7 @@ void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelega disconnect(columnDelegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); disconnect(columnDelegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); + disconnect(columnDelegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout())); } d->columnDelegates.remove(column); } @@ -956,10 +960,12 @@ void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelega connect(delegate, SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this, SLOT(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint))); connect(delegate, SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*))); + connect(delegate, SIGNAL(sizeHintChanged(QModelIndex)), this, SLOT(doItemsLayout()), Qt::QueuedConnection); } d->columnDelegates.insert(column, delegate); } viewport()->update(); + d->doDelayedItemsLayout(); } /*! diff --git a/src/widgets/itemviews/qcolumnview.cpp b/src/widgets/itemviews/qcolumnview.cpp index 1c60d50922..3234e1e832 100644 --- a/src/widgets/itemviews/qcolumnview.cpp +++ b/src/widgets/itemviews/qcolumnview.cpp @@ -976,8 +976,11 @@ void QColumnViewPrivate::_q_changeCurrentColumn() QAbstractItemView *view = columns.at(i); view->setSelectionModel(replacementSelectionModel); view->setFocusPolicy(Qt::NoFocus); - if (columns.size() > i + 1) - view->setCurrentIndex(columns.at(i+1)->rootIndex()); + if (columns.size() > i + 1) { + const QModelIndex newRootIndex = columns.at(i + 1)->rootIndex(); + if (newRootIndex.isValid()) + view->setCurrentIndex(newRootIndex); + } break; } } diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp index df61441800..f1ebc4505e 100644 --- a/src/widgets/itemviews/qheaderview.cpp +++ b/src/widgets/itemviews/qheaderview.cpp @@ -1550,7 +1550,7 @@ int QHeaderView::minimumSectionSize() const Q_D(const QHeaderView); if (d->minimumSectionSize == -1) { QSize strut = QApplication::globalStrut(); - int margin = style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); + int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); if (d->orientation == Qt::Horizontal) return qMax(strut.width(), (fontMetrics().maxWidth() + margin)); return qMax(strut.height(), (fontMetrics().height() + margin)); @@ -2665,7 +2665,14 @@ void QHeaderView::paintSection(QPainter *painter, const QRect &rect, int logical opt.iconAlignment = Qt::AlignVCenter; opt.text = d->model->headerData(logicalIndex, d->orientation, Qt::DisplayRole).toString(); - const int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); + + int margin = 2 * style()->pixelMetric(QStyle::PM_HeaderMargin, 0, this); + + const Qt::Alignment headerArrowAlignment = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_Header_ArrowAlignment, 0, this)); + const bool isHeaderArrowOnTheSide = headerArrowAlignment & Qt::AlignVCenter; + if (isSortIndicatorShown() && sortIndicatorSection() == logicalIndex && isHeaderArrowOnTheSide) + margin += style()->pixelMetric(QStyle::PM_HeaderMarkSize, 0, this); + if (d->textElideMode != Qt::ElideNone) opt.text = opt.fontMetrics.elidedText(opt.text, d->textElideMode , rect.width() - margin); diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 500e812e28..943abd1f1a 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -53,7 +53,6 @@ #include "qtranslator.h" #include "qvariant.h" #include "qwidget.h" -#include "qgraphicssceneevent.h" #include "private/qdnd_p.h" #include "private/qguiapplication_p.h" #include "qcolormap.h" @@ -2292,31 +2291,6 @@ QWidget *QApplicationPrivate::focusNextPrevChild_helper(QWidget *toplevel, bool return w; } -Qt::MouseEventSource QApplicationPrivate::mouseEventSource(const QEvent *e) -{ - switch (e->type()) { - case QEvent::NonClientAreaMouseButtonDblClick: - case QEvent::NonClientAreaMouseButtonPress: - case QEvent::NonClientAreaMouseButtonRelease: - case QEvent::NonClientAreaMouseMove: - case QEvent::MouseButtonDblClick: - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - case QEvent::MouseMove: - return static_cast<const QMouseEvent *>(e)->source(); -#ifndef QT_NO_GRAPHICSVIEW - case QEvent::GraphicsSceneMouseDoubleClick: - case QEvent::GraphicsSceneMousePress: - case QEvent::GraphicsSceneMouseRelease: - case QEvent::GraphicsSceneMouseMove: - return static_cast<const QGraphicsSceneMouseEvent *>(e)->source(); -#endif // !QT_NO_GRAPHICSVIEW - default: - break; - } - return Qt::MouseEventNotSynthesized; -} - /*! \fn void QApplicationPrivate::dispatchEnterLeave(QWidget* enter, QWidget* leave, const QPointF &globalPosF) \internal @@ -4179,11 +4153,13 @@ void QApplicationPrivate::giveFocusAccordingToFocusPolicy(QWidget *widget, QEven { const bool setFocusOnRelease = QGuiApplication::styleHints()->setFocusOnTouchRelease(); Qt::FocusPolicy focusPolicy = Qt::ClickFocus; + static QPointer<QWidget> focusedWidgetOnTouchBegin = 0; switch (event->type()) { case QEvent::MouseButtonPress: case QEvent::MouseButtonDblClick: case QEvent::TouchBegin: + focusedWidgetOnTouchBegin = QApplication::focusWidget(); if (setFocusOnRelease) return; break; @@ -4191,6 +4167,11 @@ void QApplicationPrivate::giveFocusAccordingToFocusPolicy(QWidget *widget, QEven case QEvent::TouchEnd: if (!setFocusOnRelease) return; + if (focusedWidgetOnTouchBegin != QApplication::focusWidget()) { + // Focus widget was changed while delivering press/move events. + // To not interfere with application logic, we leave focus as-is + return; + } break; case QEvent::Wheel: focusPolicy = Qt::WheelFocus; diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h index 809c7ccd66..10f81a403a 100644 --- a/src/widgets/kernel/qapplication_p.h +++ b/src/widgets/kernel/qapplication_p.h @@ -168,7 +168,6 @@ public: static void setFocusWidget(QWidget *focus, Qt::FocusReason reason); static QWidget *focusNextPrevChild_helper(QWidget *toplevel, bool next, bool *wrappingOccurred = 0); - static Qt::MouseEventSource mouseEventSource(const QEvent *e); #ifndef QT_NO_GRAPHICSVIEW // Maintain a list of all scenes to ensure font and palette propagation to diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp index 46cab90ab4..f124f1ed8e 100644 --- a/src/widgets/kernel/qlayout.cpp +++ b/src/widgets/kernel/qlayout.cpp @@ -576,11 +576,12 @@ void QLayoutPrivate::doResize(const QSize &r) int mbh = menuBarHeightForWidth(menubar, r.width()); QWidget *mw = q->parentWidget(); QRect rect = mw->testAttribute(Qt::WA_LayoutOnEntireRect) ? mw->rect() : mw->contentsRect(); + const int mbTop = rect.top(); rect.setTop(rect.top() + mbh); q->setGeometry(rect); #ifndef QT_NO_MENUBAR if (menubar) - menubar->setGeometry(0,0,r.width(), mbh); + menubar->setGeometry(rect.left(), mbTop, r.width(), mbh); #endif } diff --git a/src/widgets/kernel/qstandardgestures.cpp b/src/widgets/kernel/qstandardgestures.cpp index 53e5d091fa..6656903e70 100644 --- a/src/widgets/kernel/qstandardgestures.cpp +++ b/src/widgets/kernel/qstandardgestures.cpp @@ -38,7 +38,6 @@ #include "qwidget.h" #include "qabstractscrollarea.h" #include <qgraphicssceneevent.h> -#include <QtGui/QTouchDevice> #include "qdebug.h" #ifndef QT_NO_GESTURES @@ -68,26 +67,8 @@ static QPointF panOffset(const QList<QTouchEvent::TouchPoint> &touchPoints, int return result / qreal(count); } -// ### fixme: Remove this -// Use single finger pan to scroll QPlainTextEdit/QTextEdit -// by changing the number of pan points to 1 for these classes. -// This used to be Qt 4's behavior on Windows which was achieved using native -// Windows gesture recognizers for these classes. -// The other classes inheriting QScrollArea still use standard 2 finger pan. -// In the long run, they should also use single finger pan to -// scroll on touch screens, however, this requires a distinct Tap&Hold-followed-by-pan -// type gesture to avoid clashes with item view selection and DnD. - -static inline int panTouchPoints(const QTouchEvent *event, const QObject *object, - int defaultTouchPoints) -{ - return event->device()->type() == QTouchDevice::TouchScreen && object && object->parent() - && (object->parent()->inherits("QPlainTextEdit") || object->parent()->inherits("QTextEdit")) - ? 1 : defaultTouchPoints; -} - QGestureRecognizer::Result QPanGestureRecognizer::recognize(QGesture *state, - QObject *object, + QObject *, QEvent *event) { QPanGesture *q = static_cast<QPanGesture *>(state); @@ -100,7 +81,7 @@ QGestureRecognizer::Result QPanGestureRecognizer::recognize(QGesture *state, result = QGestureRecognizer::MayBeGesture; QTouchEvent::TouchPoint p = ev->touchPoints().at(0); d->lastOffset = d->offset = QPointF(); - d->pointCount = panTouchPoints(ev, object, m_pointCount); + d->pointCount = m_pointCount; break; } case QEvent::TouchEnd: { diff --git a/src/widgets/styles/qandroidstyle.cpp b/src/widgets/styles/qandroidstyle.cpp index 5b4b346da9..a5a75dae02 100644 --- a/src/widgets/styles/qandroidstyle.cpp +++ b/src/widgets/styles/qandroidstyle.cpp @@ -1719,28 +1719,43 @@ void QAndroidStyle::AndroidSeekBarControl::drawControl(const QStyleOption *optio qstyleoption_cast<const QStyleOptionSlider *>(option)) { double factor = double(styleOption->sliderPosition - styleOption->minimum) / double(styleOption->maximum - styleOption->minimum); + + // Android does not have a vertical slider. To support the vertical orientation, we rotate + // the painter and pretend that we are horizontal. + if (styleOption->orientation == Qt::Vertical) + factor = 1 - factor; + if (m_progressDrawable->type() == QAndroidStyle::Layer) { QAndroidStyle::AndroidDrawable *clipDrawable = static_cast<QAndroidStyle::AndroidLayerDrawable *>(m_progressDrawable)->layer(m_progressId); if (clipDrawable->type() == QAndroidStyle::Clip) - static_cast<QAndroidStyle::AndroidClipDrawable *>(clipDrawable)->setFactor(factor, styleOption->orientation); + static_cast<QAndroidStyle::AndroidClipDrawable *>(clipDrawable)->setFactor(factor, Qt::Horizontal); else - static_cast<QAndroidStyle::AndroidLayerDrawable *>(m_progressDrawable)->setFactor(m_progressId, factor, styleOption->orientation); + static_cast<QAndroidStyle::AndroidLayerDrawable *>(m_progressDrawable)->setFactor(m_progressId, factor, Qt::Horizontal); } const AndroidDrawable *drawable = m_seekBarThumb; if (drawable->type() == State) drawable = static_cast<const QAndroidStyle::AndroidStateDrawable *>(m_seekBarThumb)->bestAndroidStateMatch(option); QStyleOption copy(*option); + + p->save(); + + if (styleOption->orientation == Qt::Vertical) { + // rotate the painter, and transform the rectangle to match + p->rotate(90); + copy.rect = QRect(copy.rect.y(), copy.rect.x() - copy.rect.width(), copy.rect.height(), copy.rect.width()); + } + copy.rect.setHeight(m_progressDrawable->size().height()); copy.rect.setWidth(copy.rect.width() - drawable->size().width()); const int yTranslate = abs(drawable->size().height() - copy.rect.height()) / 2; copy.rect.translate(drawable->size().width() / 2, yTranslate); m_progressDrawable->draw(p, ©); - if (styleOption->orientation == Qt::Vertical) - qCritical() << "Vertical slider are not supported"; int pos = copy.rect.width() * factor - drawable->size().width() / 2; copy.rect.translate(pos, -yTranslate); copy.rect.setSize(drawable->size()); m_seekBarThumb->draw(p, ©); + + p->restore(); } } @@ -1772,8 +1787,13 @@ QRect QAndroidStyle::AndroidSeekBarControl::subControlRect(const QStyleOptionCom QRect r(option->rect); double factor = double(styleOption->sliderPosition - styleOption->minimum) / (styleOption->maximum - styleOption->minimum); - int pos = option->rect.width() * factor - double(drawable->size().width() / 2); - r.setX(r.x() + pos); + if (styleOption->orientation == Qt::Vertical) { + int pos = option->rect.height() * (1 - factor) - double(drawable->size().height() / 2); + r.setY(r.y() + pos); + } else { + int pos = option->rect.width() * factor - double(drawable->size().width() / 2); + r.setX(r.x() + pos); + } r.setSize(drawable->size()); return r; } diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 7e9a631c5e..6b8cba1b18 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -4587,7 +4587,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid ret = int(QStyleHelper::dpiScaled(4.)); break; case PM_HeaderMarkSize: - ret = int(QStyleHelper::dpiScaled(32.)); + ret = int(QStyleHelper::dpiScaled(16.)); break; case PM_HeaderGripMargin: ret = int(QStyleHelper::dpiScaled(4.)); @@ -4907,10 +4907,13 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget case SH_TabBar_Alignment: - case SH_Header_ArrowAlignment: ret = Qt::AlignLeft; break; + case SH_Header_ArrowAlignment: + ret = Qt::AlignRight | Qt::AlignVCenter; + break; + case SH_TitleBar_AutoRaise: ret = false; break; diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 328378cb8e..3918b874e6 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -5592,7 +5592,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex CGContextTranslateCTM(ctx, 0, rect.size.height); CGContextScaleCTM(ctx, 1, -1); } - [sl.cell drawBarInside:tdi.bounds flipped:NO]; + [sl.cell drawBarInside:NSRectFromCGRect(tdi.bounds) flipped:NO]; // No need to restore the CTM later, the context has been saved // and will be restored at the end of drawNSViewInRect() }); diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index 109a0ea451..2d5f676b65 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -1663,7 +1663,8 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value SH_Header_ArrowAlignment The placement of the sorting indicator may appear in list or table headers. Possible values - are Qt::Left or Qt::Right. + are Qt::Alignment values (that is, an OR combination of + Qt::AlignmentFlag flags). \value SH_Slider_SnapToValue Sliders snap to values while moving, as they do on Windows. diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index 463b120e04..42a85e8f64 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -2112,6 +2112,9 @@ int QWindowsVistaStyle::styleHint(StyleHint hint, const QStyleOption *option, co else ret = -1; break; + case SH_Header_ArrowAlignment: + ret = Qt::AlignTop | Qt::AlignHCenter; + break; default: ret = QWindowsXPStyle::styleHint(hint, option, widget, returnData); break; diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index fda37c49de..40cf2f0f95 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -942,8 +942,8 @@ QComboBox::QComboBox(QComboBoxPrivate &dd, QWidget *parent) void QComboBoxPrivate::init() { Q_Q(QComboBox); -#ifdef Q_OS_MAC - // On Mac, only line edits and list views always get tab focus. It's only +#ifdef Q_OS_OSX + // On OS X, only line edits and list views always get tab focus. It's only // when we enable full keyboard access that other controls can get tab focus. // When it's not editable, a combobox looks like a button, and it behaves as // such in this respect. diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 6862daf84e..121fb2da49 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -1009,6 +1009,8 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect } bool wasFloating = q->isFloating(); + if (wasFloating) // Prevent repetitive unplugging from nested invocations (QTBUG-42818) + unplug = false; bool hidden = q->isHidden(); if (q->isVisible()) diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp index d14ace1b73..9e8e0aee27 100644 --- a/src/widgets/widgets/qmainwindowlayout.cpp +++ b/src/widgets/widgets/qmainwindowlayout.cpp @@ -1440,7 +1440,7 @@ void QMainWindowLayout::setGeometry(const QRect &_r) QLayout::setGeometry(r); if (statusbar) { - QRect sbr(QPoint(0, 0), + QRect sbr(QPoint(r.left(), 0), QSize(r.width(), statusbar->heightForWidth(r.width())) .expandedTo(statusbar->minimumSize())); sbr.moveBottom(r.bottom()); diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp index 97991d97b5..5f40e4b1d9 100644 --- a/src/widgets/widgets/qmenubar.cpp +++ b/src/widgets/widgets/qmenubar.cpp @@ -1631,9 +1631,8 @@ QSize QMenuBar::sizeHint() const int margin = 2*vmargin + 2*fw + spaceBelowMenuBar; if(d->leftWidget) { QSize sz = d->leftWidget->sizeHint(); - ret.setWidth(ret.width() + sz.width()); - if(sz.height() + margin > ret.height()) - ret.setHeight(sz.height() + margin); + sz.rheight() += margin; + ret.expandedTo(sz); } if(d->rightWidget) { QSize sz = d->rightWidget->sizeHint(); diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp index 17e64be4f4..77119a0d7d 100644 --- a/src/widgets/widgets/qtoolbar.cpp +++ b/src/widgets/widgets/qtoolbar.cpp @@ -220,10 +220,8 @@ void QToolBarPrivate::endDrag() if (!layout->plug(state->widgetItem)) { if (q->isFloatable()) { layout->restore(); -#if defined(Q_WS_X11) || defined(Q_WS_MAC) setWindowState(true); // gets rid of the X11BypassWindowManager window flag // and activates the resizer -#endif q->activateWindow(); } else { layout->revert(state->widgetItem); diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 93835156da..eabaa160a0 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -110,7 +110,7 @@ QWidgetTextControlPrivate::QWidgetTextControlPrivate() #ifndef Q_OS_ANDROID interactionFlags(Qt::TextEditorInteraction), #else - interactionFlags(Qt::TextEditable), + interactionFlags(Qt::TextEditable | Qt::TextSelectableByKeyboard), #endif dragEnabled(true), #ifndef QT_NO_DRAGANDDROP @@ -1582,10 +1582,8 @@ void QWidgetTextControlPrivate::mousePressEvent(QEvent *e, Qt::MouseButton butto cursor.clearSelection(); } } - // Do not start selection on a mouse event synthesized from a touch event. if (!(button & Qt::LeftButton) || - !((interactionFlags & Qt::TextSelectableByMouse) || (interactionFlags & Qt::TextEditable)) - || QApplicationPrivate::mouseEventSource(e) != Qt::MouseEventNotSynthesized) { + !((interactionFlags & Qt::TextSelectableByMouse) || (interactionFlags & Qt::TextEditable))) { e->ignore(); return; } @@ -1756,11 +1754,6 @@ void QWidgetTextControlPrivate::mouseReleaseEvent(QEvent *e, Qt::MouseButton but { Q_Q(QWidgetTextControl); - if (QApplicationPrivate::mouseEventSource(e) != Qt::MouseEventNotSynthesized) { - setCursorPosition(pos); // Emulate Tap to set cursor for events synthesized from touch. - return; - } - const QTextCursor oldSelection = cursor; if (sendMouseEventToInputContext( e, QEvent::MouseButtonRelease, button, pos, modifiers, buttons, globalPos)) { |