diff --git a/qtbase/src/widgets/widgets/qcombobox.cpp b/qtbase/src/widgets/widgets/qcombobox.cpp
index 9f6a6bb545..8c6703db46 100644
--- a/qtbase/src/widgets/widgets/qcombobox.cpp
+++ b/qtbase/src/widgets/widgets/qcombobox.cpp
@@ -2178,12 +2178,6 @@ void QComboBoxPrivate::setCurrentIndex(const QModelIndex &mi)
         indexBeforeChange = -1;
 
     if (indexChanged || modelResetToEmpty) {
-        QItemSelectionModel::SelectionFlags selectionMode = QItemSelectionModel::ClearAndSelect;
-        if (q->view()->selectionBehavior() == QAbstractItemView::SelectRows)
-            selectionMode.setFlag(QItemSelectionModel::Rows);
-        if (auto *model = q->view()->selectionModel())
-            model->setCurrentIndex(currentIndex, selectionMode);
-
         q->update();
         emitCurrentIndexChanged(currentIndex);
     }
@@ -2617,6 +2611,11 @@ void QComboBox::showPopup()
         return;
 #endif // Q_OS_MAC
 
+    // set current item and select it
+    QItemSelectionModel::SelectionFlags selectionMode = QItemSelectionModel::ClearAndSelect;
+    if (view()->selectionBehavior() == QAbstractItemView::SelectRows)
+        selectionMode.setFlag(QItemSelectionModel::Rows);
+    view()->selectionModel()->setCurrentIndex(d->currentIndex, selectionMode);
     QComboBoxPrivateContainer* container = d->viewContainer();
     QRect listRect(style->subControlRect(QStyle::CC_ComboBox, &opt,
                                          QStyle::SC_ComboBoxListBoxPopup, this));
diff --git a/qtbase/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/qtbase/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 455ccf3c35..5d8fff15eb 100644
--- a/qtbase/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/qtbase/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -3711,8 +3711,6 @@ void tst_QAccessibility::comboBoxTest()
     QCOMPARE(iface->text(QAccessible::Name), QLatin1String("one"));
 #endif
     QCOMPARE(iface->text(QAccessible::Value), QLatin1String("one"));
-    QCOMPARE(combo.view()->selectionModel()->currentIndex().row(), 0);
-
     combo.setCurrentIndex(2);
 #ifdef Q_OS_UNIX
     QCOMPARE(iface->text(QAccessible::Name), QLatin1String("three"));
@@ -3723,13 +3721,7 @@ void tst_QAccessibility::comboBoxTest()
     QCOMPARE(listIface->role(), QAccessible::List);
     QCOMPARE(listIface->childCount(), 3);
 
-    QAccessibleSelectionInterface *selectionIface = listIface->selectionInterface();
-    QVERIFY(selectionIface);
-    QCOMPARE(selectionIface->selectedItemCount(), 1);
-    QCOMPARE(listIface->indexOfChild(selectionIface->selectedItem(0)), 2);
-
     QVERIFY(!combo.view()->isVisible());
-    QCOMPARE(combo.view()->selectionModel()->currentIndex().row(), 2);
     QVERIFY(iface->actionInterface());
     QCOMPARE(iface->actionInterface()->actionNames(), QStringList() << QAccessibleActionInterface::showMenuAction() << QAccessibleActionInterface::pressAction());
     iface->actionInterface()->doAction(QAccessibleActionInterface::showMenuAction());
diff --git a/qtbase/src/widgets/accessible/qaccessiblewidgetfactory.cpp b/qtbase/src/widgets/accessible/qaccessiblewidgetfactory.cpp
index e13b7ebcf79..271352aeb89 100644
--- a/qtbase/src/widgets/accessible/qaccessiblewidgetfactory.cpp
+++ b/qtbase/src/widgets/accessible/qaccessiblewidgetfactory.cpp
@@ -114,11 +114,11 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
     } else if (classname == "QMenu"_L1) {
         iface = new QAccessibleMenu(widget);
 #endif
-#if QT_CONFIG(treeview)
+#if QT_CONFIG(treeview) && !defined(Q_OS_MACOS)
     } else if (classname == "QTreeView"_L1) {
         iface = new QAccessibleTree(widget);
 #endif // QT_CONFIG(treeview)
-#if QT_CONFIG(itemviews)
+#if QT_CONFIG(itemviews) && !defined(Q_OS_MACOS)
     } else if (classname == "QTableView"_L1 || classname == "QListView"_L1) {
         iface = new QAccessibleTable(widget);
     // ### This should be cleaned up. We return the parent for the scrollarea to hide it.
diff --git a/qtbase/src/widgets/itemviews/qabstractitemview.cpp b/qtbase/src/widgets/itemviews/qabstractitemview.cpp
index c04a699a56c..16b6f0bef60 100644
--- a/qtbase/src/widgets/itemviews/qabstractitemview.cpp
+++ b/qtbase/src/widgets/itemviews/qabstractitemview.cpp
@@ -30,7 +30,7 @@
 #include <private/qapplication_p.h>
 #include <private/qguiapplication_p.h>
 #include <private/qscrollbar_p.h>
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
 #include <qaccessible.h>
 #endif
 #if QT_CONFIG(gestures) && QT_CONFIG(scroller)
@@ -1131,7 +1131,7 @@ void QAbstractItemView::reset()
     setRootIndex(QModelIndex());
     if (d->selectionModel)
         d->selectionModel->reset();
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(this, QAccessibleTableModelChangeEvent::ModelReset);
         QAccessible::updateAccessibility(&accessibleEvent);
@@ -1153,7 +1153,7 @@ void QAbstractItemView::setRootIndex(const QModelIndex &index)
         return;
     }
     d->root = index;
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(this, QAccessibleTableModelChangeEvent::ModelReset);
         QAccessible::updateAccessibility(&accessibleEvent);
@@ -3415,7 +3415,7 @@ void QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelInde
         }
     }
 
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(this, QAccessibleTableModelChangeEvent::DataChanged);
         accessibleEvent.setFirstRow(topLeft.row());
@@ -3543,7 +3543,7 @@ void QAbstractItemViewPrivate::_q_rowsRemoved(const QModelIndex &index, int star
     if (q->isVisible())
         q->updateEditorGeometries();
     q->setState(QAbstractItemView::NoState);
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(q, QAccessibleTableModelChangeEvent::RowsRemoved);
         accessibleEvent.setFirstRow(start);
@@ -3634,7 +3634,7 @@ void QAbstractItemViewPrivate::_q_columnsRemoved(const QModelIndex &index, int s
     if (q->isVisible())
         q->updateEditorGeometries();
     q->setState(QAbstractItemView::NoState);
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(q, QAccessibleTableModelChangeEvent::ColumnsRemoved);
         accessibleEvent.setFirstColumn(start);
@@ -3657,7 +3657,7 @@ void QAbstractItemViewPrivate::_q_rowsInserted(const QModelIndex &index, int sta
     Q_UNUSED(start);
     Q_UNUSED(end);
 
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     Q_Q(QAbstractItemView);
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(q, QAccessibleTableModelChangeEvent::RowsInserted);
@@ -3683,7 +3683,7 @@ void QAbstractItemViewPrivate::_q_columnsInserted(const QModelIndex &index, int
     Q_Q(QAbstractItemView);
     if (q->isVisible())
         q->updateEditorGeometries();
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(q, QAccessibleTableModelChangeEvent::ColumnsInserted);
         accessibleEvent.setFirstColumn(start);
@@ -3711,7 +3711,7 @@ void QAbstractItemViewPrivate::_q_modelDestroyed()
 void QAbstractItemViewPrivate::_q_layoutChanged()
 {
     doDelayedItemsLayout();
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     Q_Q(QAbstractItemView);
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent accessibleEvent(q, QAccessibleTableModelChangeEvent::ModelReset);
diff --git a/qtbase/src/widgets/itemviews/qlistview.cpp b/qtbase/src/widgets/itemviews/qlistview.cpp
index a4cb4c76fbc..2b966578c45 100644
--- a/qtbase/src/widgets/itemviews/qlistview.cpp
+++ b/qtbase/src/widgets/itemviews/qlistview.cpp
@@ -5,7 +5,7 @@
 #include "qlistview.h"
 
 #include <qabstractitemdelegate.h>
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
 #include <qaccessible.h>
 #endif
 #include <qapplication.h>
@@ -1622,7 +1622,7 @@ void QListView::setModelColumn(int column)
         return;
     d->column = column;
     d->doDelayedItemsLayout();
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         QAccessibleTableModelChangeEvent event(this, QAccessibleTableModelChangeEvent::ModelReset);
         QAccessible::updateAccessibility(&event);
@@ -3406,7 +3406,7 @@ void QIconModeViewBase::updateContentsSize()
 void QListView::currentChanged(const QModelIndex &current, const QModelIndex &previous)
 {
     QAbstractItemView::currentChanged(current, previous);
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         if (current.isValid()) {
             int entry = visualIndex(current);
@@ -3424,7 +3424,7 @@ void QListView::currentChanged(const QModelIndex &current, const QModelIndex &pr
 void QListView::selectionChanged(const QItemSelection &selected,
                                  const QItemSelection &deselected)
 {
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         // ### does not work properly for selection ranges.
         QModelIndex sel = selected.indexes().value(0);
diff --git a/qtbase/src/widgets/itemviews/qtableview.cpp b/qtbase/src/widgets/itemviews/qtableview.cpp
index 9d6499de5b9..d4c4da32ab4 100644
--- a/qtbase/src/widgets/itemviews/qtableview.cpp
+++ b/qtbase/src/widgets/itemviews/qtableview.cpp
@@ -19,7 +19,7 @@
 #include <private/qtableview_p.h>
 #include <private/qheaderview_p.h>
 #include <private/qscrollbar_p.h>
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
 #include <qaccessible.h>
 #endif
 
@@ -3476,7 +3476,7 @@ void QTableViewPrivate::selectColumn(int column, bool anchor)
  */
 void QTableView::currentChanged(const QModelIndex &current, const QModelIndex &previous)
 {
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         if (current.isValid()) {
             Q_D(QTableView);
@@ -3498,7 +3498,7 @@ void QTableView::selectionChanged(const QItemSelection &selected,
 {
     Q_D(QTableView);
     Q_UNUSED(d);
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         // ### does not work properly for selection ranges.
         QModelIndex sel = selected.indexes().value(0);
diff --git a/qtbase/src/widgets/itemviews/qtreeview.cpp b/qtbase/src/widgets/itemviews/qtreeview.cpp
index 7454fb83a7c..be071310715 100644
--- a/qtbase/src/widgets/itemviews/qtreeview.cpp
+++ b/qtbase/src/widgets/itemviews/qtreeview.cpp
@@ -15,7 +15,7 @@
 #include <qdebug.h>
 #include <QMetaMethod>
 #include <private/qscrollbar_p.h>
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
 #include <qaccessible.h>
 #endif
 
@@ -3352,7 +3352,7 @@ void QTreeViewPrivate::layout(int i, bool recursiveExpanding, bool afterIsUninit
         return;
     }
 
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     // QAccessibleTree's rowCount implementation uses viewItems.size(), so
     // we need to invalidate any cached accessibility data structures if
     // that value changes during the run of this function.
@@ -4035,7 +4035,7 @@ void QTreeView::currentChanged(const QModelIndex &current, const QModelIndex &pr
         if (current.isValid())
             viewport()->update(d->visualRect(current, QTreeViewPrivate::FullRow));
     }
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive() && current.isValid()) {
         Q_D(QTreeView);
 
@@ -4053,7 +4053,7 @@ void QTreeView::selectionChanged(const QItemSelection &selected,
                                  const QItemSelection &deselected)
 {
     QAbstractItemView::selectionChanged(selected, deselected);
-#if QT_CONFIG(accessibility)
+#if QT_CONFIG(accessibility) && !defined(Q_OS_MACOS)
     if (QAccessible::isActive()) {
         Q_D(QTreeView);
 
diff --git a/qtbase/src/gui/kernel/qguiapplication.cpp b/qtbase/src/gui/kernel/qguiapplication.cpp
index 4c819e0915..6070a01334 100644
--- a/qtbase/src/gui/kernel/qguiapplication.cpp
+++ b/qtbase/src/gui/kernel/qguiapplication.cpp
@@ -1409,7 +1409,7 @@ void QGuiApplicationPrivate::createPlatformIntegration()
     const bool defaultIsWayland = !defaultIsXcb && platformPluginBase.startsWith("wayland");
     const QByteArray waylandPlatformName = defaultIsWayland ? platformName : "wayland";
     if (hasWaylandDisplay || isWaylandSessionType) {
-        preferredPlatformOrder.prepend(waylandPlatformName);
+        preferredPlatformOrder.append(waylandPlatformName);
 
         if (defaultIsWayland)
             platformName.clear();
diff --git a/qtbase/src/gui/painting/qdrawhelper.cpp b/qtbase/src/gui/painting/qdrawhelper.cpp
index 35c44b8286..83bddae681 100644
--- a/qtbase/src/gui/painting/qdrawhelper.cpp
+++ b/qtbase/src/gui/painting/qdrawhelper.cpp
@@ -26,7 +26,7 @@
 #include <qmath.h>
 
 #if QT_CONFIG(thread) && !defined(Q_OS_WASM)
-#define QT_USE_THREAD_PARALLEL_FILLS
+//#define QT_USE_THREAD_PARALLEL_FILLS
 #endif
 
 #if defined(QT_USE_THREAD_PARALLEL_FILLS)
diff --git a/qtbase/src/plugins/platforms/cocoa/qcocoatheme.mm b/qtbase/src/plugins/platforms/cocoa/qcocoatheme.mm
index 56171b6dc2..2a55166ecc 100644
--- a/qtbase/src/plugins/platforms/cocoa/qcocoatheme.mm
+++ b/qtbase/src/plugins/platforms/cocoa/qcocoatheme.mm
@@ -213,18 +213,6 @@ inline QMacPaletteMap(QPlatformTheme::Palette p, NSColor *a, NSColor *i) :
 QCocoaTheme::QCocoaTheme()
     : m_systemPalette(nullptr)
 {
-    if (QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSMojave) {
-        m_appearanceObserver = QMacKeyValueObserver(NSApp, @"effectiveAppearance", [this] {
-            NSAppearance.currentAppearance = NSApp.effectiveAppearance;
-            handleSystemThemeChange();
-        });
-    }
-
-    m_systemColorObserver = QMacNotificationObserver(nil,
-        NSSystemColorsDidChangeNotification, [this] {
-            handleSystemThemeChange();
-    });
-
     updateColorScheme();
 }
 
diff --git a/qtbase/src/widgets/dialogs/qmessagebox.cpp b/qtbase/src/widgets/dialogs/qmessagebox.cpp
index b4d76bc5ec..42853617a6 100644
--- a/qtbase/src/widgets/dialogs/qmessagebox.cpp
+++ b/qtbase/src/widgets/dialogs/qmessagebox.cpp
@@ -798,6 +798,9 @@ QMessageBox::QMessageBox(QWidget *parent)
 {
     Q_D(QMessageBox);
     d->init();
+
+    if (parent)
+        setWindowModality(Qt::WindowModal);
 }
 
 /*!
diff --git a/qtbase/src/gui/text/qtextimagehandler.cpp b/qtbase/src/gui/text/qtextimagehandler.cpp
index 70e8961467..1b246a82e6 100644
--- a/qtbase/src/gui/text/qtextimagehandler.cpp
+++ b/qtbase/src/gui/text/qtextimagehandler.cpp
@@ -133,6 +133,7 @@ void QTextImageHandler::drawObject(QPainter *p, const QRectF &rect, QTextDocumen
     Q_UNUSED(posInDocument);
         const QTextImageFormat imageFormat = format.toImageFormat();
 
+    p->setRenderHint(QPainter::SmoothPixmapTransform);
     if (QCoreApplication::instance()->thread() != QThread::currentThread()) {
         const QImage image = getAs<QImage>(doc, imageFormat, p->device()->devicePixelRatio());
         p->drawImage(rect, image, image.rect());
diff --git a/configure.bat b/configure.bat
index 500d627f..dd48ba05 100644
--- a/configure.bat
+++ b/configure.bat
@@ -40,7 +40,7 @@ echo + cd qtbase
 cd qtbase || exit /b 1

 echo + %configure% -top-level %*
-call %configure% -top-level %*
+call "%configure%" -top-level %*
 set err=%errorlevel%

 cd ..
diff --git a/qtbase/src/plugins/platforms/cocoa/qcocoascreen.mm b/qtbase/src/plugins/platforms/cocoa/qcocoascreen.mm
index 0e5b704ca8..b594f680af 100644
--- a/qtbase/src/plugins/platforms/cocoa/qcocoascreen.mm
+++ b/qtbase/src/plugins/platforms/cocoa/qcocoascreen.mm
@@ -522,6 +522,8 @@ void flushOutput() {
             QWindow *w = cocoaWindow->window();
             if (!w->isVisible())
                 return;
+            if (w->flags() & Qt::WindowTransparentForInput)
+                return;
 
             if (!QHighDpi::toNativePixels(w->geometry(), w).contains(point))
                 return;
diff --git a/qtbase/src/gui/kernel/qevent.cpp b/qtbase/src/gui/kernel/qevent.cpp
index 326d9020f3..f9db205d74 100644
--- a/qtbase/src/gui/kernel/qevent.cpp
+++ b/qtbase/src/gui/kernel/qevent.cpp
@@ -1359,6 +1359,10 @@ QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const
 {
      if (type == QEvent::ShortcutOverride)
         ignore();
+
+	 // Ignore characters in the private use area, macOS for example uses these for arrow keys
+	 if (m_text.size() == 1 && m_text[0].unicode() >= 0xe000 && m_text[0].unicode() <= 0xf8ff)
+		 m_text = QString();
 }
 
 /*!
@@ -1388,6 +1392,10 @@ QKeyEvent::QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers,
 {
     if (type == QEvent::ShortcutOverride)
         ignore();
+
+	 // Ignore characters in the private use area, macOS for example uses these for arrow keys
+	 if (m_text.size() == 1 && m_text[0].unicode() >= 0xe000 && m_text[0].unicode() <= 0xf8ff)
+		 m_text = QString();
 }
 
 
