diff options
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qdatetimeedit_p.h | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 5 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 19 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qmaccocoaviewcontainer_mac.mm | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qmacnativewidget_mac.mm | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qtabbar.cpp | 13 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 5 |
9 files changed, 43 insertions, 16 deletions
diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h index 7df2b59710..d36b6f8f9a 100644 --- a/src/widgets/widgets/qdatetimeedit_p.h +++ b/src/widgets/widgets/qdatetimeedit_p.h @@ -107,7 +107,7 @@ public: if (keyboardTracking) return maximum.toDateTime(); if (spec != Qt::LocalTime) - return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); + return QDateTime(QDATETIMEEDIT_DATE_MAX.endOfDay(spec)); return QDateTimeParser::getMaximum(); } QLocale locale() const override { return q_func()->locale(); } diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 807d84db95..d9379b0f33 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -1236,6 +1236,11 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect on whether it is docked; a docked QDockWidget has no frame and a smaller title bar. + \note On macOS, if the QDockWidget has a native window handle (for example, + if winId() is called on it or the child widget), then due to a limitation it will not be + possible to drag the dock widget when undocking. Starting the drag will undock + the dock widget, but a second drag will be needed to move the dock widget itself. + \sa QMainWindow, {Dock Widgets Example} */ diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index a437d45c52..11367879e2 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -82,8 +82,7 @@ #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include "qkeysequence.h" -#define ACCEL_KEY(k) ((!QCoreApplication::testAttribute(Qt::AA_DontShowIconsInMenus) \ - && QGuiApplication::styleHints()->showShortcutsInContextMenus()) \ +#define ACCEL_KEY(k) (!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ && !QGuiApplicationPrivate::instance()->shortcutMap.hasShortcutForKeySequence(k) ? \ QLatin1Char('\t') + QKeySequence(k).toString(QKeySequence::NativeText) : QString()) #else @@ -1901,8 +1900,11 @@ void QLineEdit::focusInEvent(QFocusEvent *e) d->control->moveCursor(d->control->nextMaskBlank(0)); else if (!d->control->hasSelectedText()) selectAll(); + else + updateMicroFocus(); } else if (e->reason() == Qt::MouseFocusReason) { d->clickCausedFocus = 1; + updateMicroFocus(); } #ifdef QT_KEYPAD_NAVIGATION if (!QApplicationPrivate::keypadNavigationEnabled() || (hasEditFocus() && ( e->reason() == Qt::PopupFocusReason))) { diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 36d818d00c..80c9258da4 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -407,8 +407,9 @@ void QLineEditIconButton::setHideWithText(bool hide) void QLineEditIconButton::onAnimationFinished() { - if (shouldHideWithText() && isVisible() && !m_wasHidden) { + if (shouldHideWithText() && isVisible() && m_fadingOut) { hide(); + m_fadingOut = false; // Invalidate previous geometry to take into account new size of side widgets if (auto le = lineEditPrivate()) @@ -418,7 +419,7 @@ void QLineEditIconButton::onAnimationFinished() void QLineEditIconButton::animateShow(bool visible) { - m_wasHidden = visible; + m_fadingOut = !visible; if (shouldHideWithText() && !isVisible()) { show(); @@ -664,10 +665,18 @@ static int effectiveTextMargin(int defaultMargin, const QLineEditPrivate::SideWi if (widgets.empty()) return defaultMargin; - return defaultMargin + (parameters.margin + parameters.widgetWidth) * - int(std::count_if(widgets.begin(), widgets.end(), + const auto visibleSideWidgetCount = std::count_if(widgets.begin(), widgets.end(), [](const QLineEditPrivate::SideWidgetEntry &e) { - return e.widget->isVisibleTo(e.widget->parentWidget()); })); +#if QT_CONFIG(animation) + // a button that's fading out doesn't get any space + if (auto* iconButton = qobject_cast<QLineEditIconButton*>(e.widget)) + return iconButton->needsSpace(); + +#endif + return e.widget->isVisibleTo(e.widget->parentWidget()); + }); + + return defaultMargin + (parameters.margin + parameters.widgetWidth) * visibleSideWidgetCount; } QMargins QLineEditPrivate::effectiveTextMargins() const diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index 5ae402b992..f55210fc7f 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -95,6 +95,11 @@ public: bool shouldHideWithText() const; void setHideWithText(bool hide); + bool needsSpace() const { + if (m_fadingOut) + return false; + return isVisibleTo(parentWidget()); + } #endif protected: @@ -118,7 +123,7 @@ private: #if QT_CONFIG(animation) bool m_hideWithText = false; - bool m_wasHidden = false; + bool m_fadingOut = false; #endif }; diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm index d56c6ab68b..fb49efc7a6 100644 --- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm +++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm @@ -48,6 +48,7 @@ /*! \class QMacCocoaViewContainer + \obsolete Use QWidget::createWindowContainer() and QWindow::fromWinId() instead. \since 4.5 \brief The QMacCocoaViewContainer class provides a widget for \macos that can be used to wrap arbitrary diff --git a/src/widgets/widgets/qmacnativewidget_mac.mm b/src/widgets/widgets/qmacnativewidget_mac.mm index 874ca84b61..3566f4ed79 100644 --- a/src/widgets/widgets/qmacnativewidget_mac.mm +++ b/src/widgets/widgets/qmacnativewidget_mac.mm @@ -47,6 +47,7 @@ /*! \class QMacNativeWidget + \obsolete Use QWidget::winId() instead. \since 4.5 \brief The QMacNativeWidget class provides a widget for \macos that provides a way to put Qt widgets into Cocoa hierarchies. diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 579df64d15..ee7445f5bf 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -407,10 +407,12 @@ void QTabBarPrivate::init() { Q_Q(QTabBar); leftB = new QToolButton(q); + leftB->setObjectName(QStringLiteral("ScrollLeftButton")); leftB->setAutoRepeat(true); QObject::connect(leftB, SIGNAL(clicked()), q, SLOT(_q_scrollTabs())); leftB->hide(); rightB = new QToolButton(q); + rightB->setObjectName(QStringLiteral("ScrollRightButton")); rightB->setAutoRepeat(true); QObject::connect(rightB, SIGNAL(clicked()), q, SLOT(_q_scrollTabs())); rightB->hide(); @@ -831,21 +833,24 @@ void QTabBarPrivate::_q_scrollTabs() Q_Q(QTabBar); const QObject *sender = q->sender(); const bool horizontal = !verticalTabs(shape); - const QRect scrollRect = normalizedScrollRect(); + const QRect scrollRect = normalizedScrollRect().translated(scrollOffset, 0); + int i = -1; if (sender == leftB) { for (i = tabList.count() - 1; i >= 0; --i) { int start = horizontal ? tabList.at(i).rect.left() : tabList.at(i).rect.top(); - if (start < scrollRect.left() + scrollOffset) { + if (start < scrollRect.left()) { makeVisible(i); return; } } } else if (sender == rightB) { for (i = 0; i < tabList.count(); ++i) { - int end = horizontal ? tabList.at(i).rect.right() : tabList.at(i).rect.bottom(); - if (end > scrollRect.right() + scrollOffset) { + const auto tabRect = tabList.at(i).rect; + int start = horizontal ? tabRect.left() : tabRect.top(); + int end = horizontal ? tabRect.right() : tabRect.bottom(); + if (end > scrollRect.right() && start > scrollOffset) { makeVisible(i); return; } diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index f4eac623fb..6a5a77ddc6 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -97,8 +97,7 @@ #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include <qkeysequence.h> -#define ACCEL_KEY(k) ((!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ - && QGuiApplication::styleHints()->showShortcutsInContextMenus()) \ +#define ACCEL_KEY(k) (!QCoreApplication::testAttribute(Qt::AA_DontShowShortcutsInContextMenus) \ && !QGuiApplicationPrivate::instance()->shortcutMap.hasShortcutForKeySequence(k) ? \ QLatin1Char('\t') + QKeySequence(k).toString(QKeySequence::NativeText) : QString()) @@ -1281,7 +1280,7 @@ void QWidgetTextControlPrivate::keyPressEvent(QKeyEvent *e) // example) repaintSelection(); - if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~Qt::ShiftModifier)) { + if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~(Qt::ShiftModifier | Qt::GroupSwitchModifier))) { QTextBlockFormat blockFmt = cursor.blockFormat(); QTextList *list = cursor.currentList(); if (list && cursor.atBlockStart() && !cursor.hasSelection()) { |