Merge remote-tracking branch 'origin/5.12.0' into 5.12
Change-Id: I12f26470e01a8582d0f02f51e20d5b742bd95d6f
This commit is contained in:
commit
eedb3a06cb
@ -7,7 +7,8 @@ QMAKE_MAC_SDK = macosx
|
||||
|
||||
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
|
||||
QMAKE_APPLE_DEVICE_ARCHS = x86_64
|
||||
QT_MAC_SDK_VERSION_TESTED_WITH = 10.14
|
||||
QT_MAC_SDK_VERSION_MIN = 10.13
|
||||
QT_MAC_SDK_VERSION_MAX = 10.14
|
||||
|
||||
device.sdk = macosx
|
||||
device.target = device
|
||||
|
@ -3,25 +3,28 @@ load(default_post)
|
||||
contains(TEMPLATE, .*app) {
|
||||
!macx-xcode {
|
||||
# Detect changes to the platform SDK
|
||||
QMAKE_EXTRA_VARIABLES += QMAKE_MAC_SDK QMAKE_MAC_SDK_VERSION
|
||||
QMAKE_EXTRA_VARIABLES += QMAKE_MAC_SDK QMAKE_MAC_SDK_VERSION QMAKE_XCODE_DEVELOPER_PATH
|
||||
QMAKE_EXTRA_INCLUDES += $$shell_quote($$PWD/sdk.mk)
|
||||
}
|
||||
|
||||
# Detect incompatible SDK versions
|
||||
|
||||
!versionAtLeast(QMAKE_MAC_SDK_VERSION, $$QT_MAC_SDK_VERSION): \
|
||||
warning("Qt requires at least version $$QT_MAC_SDK_VERSION of the platform SDK," \
|
||||
isEmpty(QT_MAC_SDK_VERSION_MIN): \
|
||||
QT_MAC_SDK_VERSION_MIN = $$QT_MAC_SDK_VERSION
|
||||
|
||||
!versionAtLeast(QMAKE_MAC_SDK_VERSION, $$QT_MAC_SDK_VERSION_MIN): \
|
||||
warning("Qt requires at least version $$QT_MAC_SDK_VERSION_MIN of the platform SDK," \
|
||||
"you're using $${QMAKE_MAC_SDK_VERSION}. Please upgrade.")
|
||||
|
||||
!isEmpty(QT_MAC_SDK_VERSION_TESTED_WITH) {
|
||||
!isEmpty(QT_MAC_SDK_VERSION_MAX) {
|
||||
# For Qt developers only
|
||||
!isEmpty($$list($$(QT_MAC_SDK_NO_VERSION_CHECK))): \
|
||||
CONFIG += sdk_no_version_check
|
||||
|
||||
QMAKE_MAC_SDK_MAJOR_MINOR_VERSION = $$replace(QMAKE_MAC_SDK_VERSION, "(\d+)(\.\d+)(\.\d+)?", \1\2)
|
||||
|
||||
!sdk_no_version_check:!versionAtMost(QMAKE_MAC_SDK_MAJOR_MINOR_VERSION, $$QT_MAC_SDK_VERSION_TESTED_WITH) {
|
||||
warning("Qt has only been tested with version $$QT_MAC_SDK_VERSION_TESTED_WITH"\
|
||||
!sdk_no_version_check:!versionAtMost(QMAKE_MAC_SDK_MAJOR_MINOR_VERSION, $$QT_MAC_SDK_VERSION_MAX) {
|
||||
warning("Qt has only been tested with version $$QT_MAC_SDK_VERSION_MAX"\
|
||||
"of the platform SDK, you're using $${QMAKE_MAC_SDK_MAJOR_MINOR_VERSION}.")
|
||||
warning("This is an unsupported configuration. You may experience build issues," \
|
||||
"and by using")
|
||||
@ -29,7 +32,7 @@ contains(TEMPLATE, .*app) {
|
||||
"that Qt has not been prepared for.")
|
||||
|
||||
warning("Please downgrade the SDK you use to build your app to version" \
|
||||
"$$QT_MAC_SDK_VERSION_TESTED_WITH, or configure")
|
||||
"$$QT_MAC_SDK_VERSION_MAX, or configure")
|
||||
warning("with CONFIG+=sdk_no_version_check when running qmake" \
|
||||
"to silence this warning.")
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
CURRENT_MAC_SDK_VERSION := $(shell /usr/bin/xcrun --sdk $(EXPORT_QMAKE_MAC_SDK) -show-sdk-version)
|
||||
CURRENT_MAC_SDK_VERSION := $(shell DEVELOPER_DIR=$(EXPORT_QMAKE_XCODE_DEVELOPER_PATH) /usr/bin/xcrun --sdk $(EXPORT_QMAKE_MAC_SDK) -show-sdk-version)
|
||||
|
||||
ifneq ($(CURRENT_MAC_SDK_VERSION),$(EXPORT_QMAKE_MAC_SDK_VERSION))
|
||||
$(info The platform SDK has been changed from version $(EXPORT_QMAKE_MAC_SDK_VERSION) to version $(CURRENT_MAC_SDK_VERSION).)
|
||||
|
@ -3038,6 +3038,7 @@
|
||||
|
||||
\snippet code/doc_src_qmake-manual.pro 59
|
||||
|
||||
\target qmake-cat
|
||||
\section2 cat(filename[, mode])
|
||||
|
||||
Returns the contents of \c filename. You can specify the following options
|
||||
@ -3404,6 +3405,10 @@
|
||||
|
||||
\snippet code/doc_src_qmake-manual.pro 72
|
||||
|
||||
Like \l {qmake-cat}{$$cat()}, the \a mode argument takes \c blob, \c lines,
|
||||
\c true, and \false as value. However, the legacy word splitting rules
|
||||
(i.e. empty or \c true, and \c false) differ subtly.
|
||||
|
||||
If you pass \c stsvar, the command's exit status will be stored in that
|
||||
variable. If the command crashes, the status will be -1, otherwise a
|
||||
non-negative exit code of the command's choosing. Usually, comparing
|
||||
|
@ -17,7 +17,7 @@ repositories {
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
dependencies {
|
||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
}
|
||||
|
||||
android {
|
||||
|
@ -92,7 +92,7 @@
|
||||
\note For the current keyboard input locale take a look at
|
||||
QInputMethod::locale().
|
||||
|
||||
QLocale's data is based on Common Locale Data Repository v33.1.
|
||||
QLocale's data is based on Common Locale Data Repository v34.
|
||||
|
||||
\sa QString::arg(), QString::toInt(), QString::toDouble(),
|
||||
QInputMethod::locale()
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -408,9 +408,10 @@ inline char QLocaleData::digitToCLocale(QChar in) const
|
||||
if (in == m_exponential || in == QChar::toUpper(m_exponential))
|
||||
return 'e';
|
||||
|
||||
// In several languages group() is the char 0xA0, which looks like a space.
|
||||
// People use a regular space instead of it and complain it doesn't work.
|
||||
if (m_group == 0xA0 && in.unicode() == ' ')
|
||||
// In several languages group() is a non-breaking space (U+00A0) or its thin
|
||||
// version (U+202f), which look like spaces. People (and thus some of our
|
||||
// tests) use a regular space instead and complain if it doesn't work.
|
||||
if ((m_group == 0xA0 || m_group == 0x202f) && in.unicode() == ' ')
|
||||
return ',';
|
||||
|
||||
return 0;
|
||||
|
@ -1384,6 +1384,9 @@ QtSharedPointer::ExternalRefCountData *QtSharedPointer::ExternalRefCountData::ge
|
||||
x->strongref.store(-1);
|
||||
x->weakref.store(2); // the QWeakPointer that called us plus the QObject itself
|
||||
if (!d->sharedRefcount.testAndSetRelease(0, x)) {
|
||||
// ~ExternalRefCountData has a Q_ASSERT, so we use this trick to
|
||||
// only execute this if Q_ASSERTs are enabled
|
||||
Q_ASSERT((x->weakref.store(0), true));
|
||||
delete x;
|
||||
x = d->sharedRefcount.loadAcquire();
|
||||
x->weakref.ref();
|
||||
|
@ -20,13 +20,14 @@
|
||||
"Name": "Unicode Common Locale Data Repository (CLDR)",
|
||||
"QDocModule": "qtcore",
|
||||
"QtUsage": "Used in Qt Core (QTimeZone, QLocale).",
|
||||
"Files": "For update, see qtbase/util/local_database/cldr2qlocalexml.py",
|
||||
"Files": "qlocale_data_p.h qtimezoneprivate_data_p.h",
|
||||
|
||||
"Description": "The Unicode CLDR provides key building blocks for software to support the
|
||||
world's languages, with the largest and most extensive standard repository of locale data
|
||||
available.",
|
||||
"Homepage": "http://cldr.unicode.org/",
|
||||
"Version": "v33.1",
|
||||
"Version": "v34",
|
||||
"License": "// as specified in https://spdx.org/licenses/Unicode-DFS-2016.html",
|
||||
"License": "Unicode License Agreement - Data Files and Software (2016)",
|
||||
"LicenseId": "Unicode-DFS-2016",
|
||||
|
@ -2533,6 +2533,7 @@ QTabletEvent::QTabletEvent(Type type, const QPointF &pos, const QPointF &globalP
|
||||
*/
|
||||
QTabletEvent::~QTabletEvent()
|
||||
{
|
||||
delete static_cast<QTabletEventPrivate *>(mExtra);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@ -803,7 +803,8 @@ static void updateBlockedStatusRecursion(QWindow *window, bool shouldBeBlocked)
|
||||
void QGuiApplicationPrivate::updateBlockedStatus(QWindow *window)
|
||||
{
|
||||
bool shouldBeBlocked = false;
|
||||
if (!QWindowPrivate::get(window)->isPopup() && !self->modalWindowList.isEmpty())
|
||||
const bool popupType = (window->type() == Qt::ToolTip) || (window->type() == Qt::Popup);
|
||||
if (!popupType && !self->modalWindowList.isEmpty())
|
||||
shouldBeBlocked = self->isWindowBlocked(window);
|
||||
updateBlockedStatusRecursion(window, shouldBeBlocked);
|
||||
}
|
||||
|
@ -40,8 +40,10 @@
|
||||
#include "qopenglvertexarrayobject.h"
|
||||
|
||||
#include <QtCore/private/qobject_p.h>
|
||||
#include <QtCore/qthread.h>
|
||||
#include <QtGui/qopenglcontext.h>
|
||||
#include <QtGui/qoffscreensurface.h>
|
||||
#include <QtGui/qguiapplication.h>
|
||||
|
||||
#include <QtGui/qopenglfunctions_3_0.h>
|
||||
#include <QtGui/qopenglfunctions_3_2_core.h>
|
||||
@ -204,18 +206,25 @@ void QOpenGLVertexArrayObjectPrivate::destroy()
|
||||
if (context && context != ctx) {
|
||||
oldContext = ctx;
|
||||
oldContextSurface = ctx ? ctx->surface() : 0;
|
||||
// Cannot just make the current surface current again with another context.
|
||||
// The format may be incompatible and some platforms (iOS) may impose
|
||||
// restrictions on using a window with different contexts. Create an
|
||||
// offscreen surface (a pbuffer or a hidden window) instead to be safe.
|
||||
offscreenSurface.reset(new QOffscreenSurface);
|
||||
offscreenSurface->setFormat(context->format());
|
||||
offscreenSurface->create();
|
||||
if (context->makeCurrent(offscreenSurface.data())) {
|
||||
ctx = context;
|
||||
} else {
|
||||
qWarning("QOpenGLVertexArrayObject::destroy() failed to make VAO's context current");
|
||||
// Before going through the effort of creating an offscreen surface
|
||||
// check that we are on the GUI thread because otherwise many platforms
|
||||
// will not able to create that offscreen surface.
|
||||
if (QThread::currentThread() != qGuiApp->thread()) {
|
||||
ctx = 0;
|
||||
} else {
|
||||
// Cannot just make the current surface current again with another context.
|
||||
// The format may be incompatible and some platforms (iOS) may impose
|
||||
// restrictions on using a window with different contexts. Create an
|
||||
// offscreen surface (a pbuffer or a hidden window) instead to be safe.
|
||||
offscreenSurface.reset(new QOffscreenSurface);
|
||||
offscreenSurface->setFormat(context->format());
|
||||
offscreenSurface->create();
|
||||
if (context->makeCurrent(offscreenSurface.data())) {
|
||||
ctx = context;
|
||||
} else {
|
||||
qWarning("QOpenGLVertexArrayObject::destroy() failed to make VAO's context current");
|
||||
ctx = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -224,7 +233,7 @@ void QOpenGLVertexArrayObjectPrivate::destroy()
|
||||
context = 0;
|
||||
}
|
||||
|
||||
if (vao) {
|
||||
if (vao && ctx) {
|
||||
switch (vaoFuncsType) {
|
||||
#ifndef QT_OPENGL_ES_2
|
||||
case Core_3_2:
|
||||
|
@ -216,8 +216,13 @@ NSOpenGLPixelFormat *QCocoaGLContext::pixelFormatForSurfaceFormat(const QSurface
|
||||
<< NSOpenGLPFASamples << NSOpenGLPixelFormatAttribute(format.samples());
|
||||
}
|
||||
|
||||
// Allow rendering on GPUs without a connected display
|
||||
attrs << NSOpenGLPFAAllowOfflineRenderers;
|
||||
//Workaround for problems with Chromium and offline renderers on the lat 2013 MacPros.
|
||||
//FIXME: Think if this could be solved via QSurfaceFormat in the future.
|
||||
static bool offlineRenderersAllowed = qEnvironmentVariableIsEmpty("QT_MAC_PRO_WEBENGINE_WORKAROUND");
|
||||
if (offlineRenderersAllowed) {
|
||||
// Allow rendering on GPUs without a connected display
|
||||
attrs << NSOpenGLPFAAllowOfflineRenderers;
|
||||
}
|
||||
|
||||
// FIXME: Pull this information out of the NSView
|
||||
QByteArray useLayer = qgetenv("QT_MAC_WANTS_LAYER");
|
||||
|
@ -52,6 +52,7 @@
|
||||
//
|
||||
#include "qt_mac_p.h"
|
||||
#include <private/qguiapplication_p.h>
|
||||
#include <QtCore/qoperatingsystemversion.h>
|
||||
#include <QtGui/qpalette.h>
|
||||
#include <QtGui/qscreen.h>
|
||||
|
||||
@ -60,6 +61,8 @@
|
||||
|
||||
Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSView));
|
||||
|
||||
struct mach_header;
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Q_DECLARE_LOGGING_CATEGORY(lcQpaWindow)
|
||||
@ -173,6 +176,34 @@ T qt_mac_resolveOption(const T &fallback, QWindow *window, const QByteArray &pro
|
||||
return fallback;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
#if !defined(Q_PROCESSOR_X86_64)
|
||||
#error "32-bit builds are not supported"
|
||||
#endif
|
||||
|
||||
class QMacVersion
|
||||
{
|
||||
public:
|
||||
enum VersionTarget {
|
||||
ApplicationBinary,
|
||||
QtLibraries
|
||||
};
|
||||
|
||||
static QOperatingSystemVersion buildSDK(VersionTarget target = ApplicationBinary);
|
||||
static QOperatingSystemVersion deploymentTarget(VersionTarget target = ApplicationBinary);
|
||||
static QOperatingSystemVersion currentRuntime();
|
||||
|
||||
private:
|
||||
QMacVersion() = default;
|
||||
using VersionTuple = QPair<QOperatingSystemVersion, QOperatingSystemVersion>;
|
||||
static VersionTuple versionsForImage(const mach_header *machHeader);
|
||||
static VersionTuple applicationVersion();
|
||||
static VersionTuple libraryVersion();
|
||||
};
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
// @compatibility_alias doesn't work with protocols
|
||||
|
@ -55,6 +55,9 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include <mach-o/dyld.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Q_LOGGING_CATEGORY(lcQpaWindow, "qt.qpa.window");
|
||||
@ -368,6 +371,85 @@ QString qt_mac_removeAmpersandEscapes(QString s)
|
||||
return QPlatformTheme::removeMnemonics(s).trimmed();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
#if !defined(Q_PROCESSOR_X86_64)
|
||||
#error "32-bit builds are not supported"
|
||||
#endif
|
||||
|
||||
QOperatingSystemVersion QMacVersion::buildSDK(VersionTarget target)
|
||||
{
|
||||
switch (target) {
|
||||
case ApplicationBinary: return applicationVersion().second;
|
||||
case QtLibraries: return libraryVersion().second;
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
QOperatingSystemVersion QMacVersion::deploymentTarget(VersionTarget target)
|
||||
{
|
||||
switch (target) {
|
||||
case ApplicationBinary: return applicationVersion().first;
|
||||
case QtLibraries: return libraryVersion().first;
|
||||
}
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
QOperatingSystemVersion QMacVersion::currentRuntime()
|
||||
{
|
||||
return QOperatingSystemVersion::current();
|
||||
}
|
||||
|
||||
QMacVersion::VersionTuple QMacVersion::versionsForImage(const mach_header *machHeader)
|
||||
{
|
||||
auto commandCursor = uintptr_t(machHeader) + sizeof(mach_header_64);
|
||||
for (uint32_t i = 0; i < machHeader->ncmds; ++i) {
|
||||
load_command *loadCommand = reinterpret_cast<load_command *>(commandCursor);
|
||||
if (loadCommand->cmd == LC_VERSION_MIN_MACOSX) {
|
||||
auto versionCommand = reinterpret_cast<version_min_command *>(loadCommand);
|
||||
uint32_t dt = versionCommand->version; // Deployment target
|
||||
uint32_t sdk = versionCommand->sdk; // Build SDK
|
||||
return qMakePair(
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS,
|
||||
dt >> 16 & 0xffff, dt >> 8 & 0xff, dt & 0xff),
|
||||
QOperatingSystemVersion(QOperatingSystemVersion::MacOS,
|
||||
sdk >> 16 & 0xffff, sdk >> 8 & 0xff, sdk & 0xff)
|
||||
);
|
||||
}
|
||||
commandCursor += loadCommand->cmdsize;
|
||||
}
|
||||
Q_ASSERT_X(false, "QCocoaIntegration", "Could not find version-min load command");
|
||||
Q_UNREACHABLE();
|
||||
}
|
||||
|
||||
QMacVersion::VersionTuple QMacVersion::applicationVersion()
|
||||
{
|
||||
static VersionTuple version = []() {
|
||||
const mach_header *executableHeader = nullptr;
|
||||
for (uint32_t i = 0; i < _dyld_image_count(); ++i) {
|
||||
auto header = _dyld_get_image_header(i);
|
||||
if (header->filetype == MH_EXECUTE) {
|
||||
executableHeader = header;
|
||||
break;
|
||||
}
|
||||
}
|
||||
Q_ASSERT_X(executableHeader, "QCocoaIntegration", "Failed to resolve Mach-O header of executable");
|
||||
return versionsForImage(executableHeader);
|
||||
}();
|
||||
return version;
|
||||
}
|
||||
|
||||
QMacVersion::VersionTuple QMacVersion::libraryVersion()
|
||||
{
|
||||
static VersionTuple version = []() {
|
||||
Dl_info cocoaPluginImage;
|
||||
dladdr((const void *)&QMacVersion::libraryVersion, &cocoaPluginImage);
|
||||
Q_ASSERT_X(cocoaPluginImage.dli_fbase, "QCocoaIntegration", "Failed to resolve Mach-O header of Cocoa plugin");
|
||||
return versionsForImage(static_cast<mach_header*>(cocoaPluginImage.dli_fbase));
|
||||
}();
|
||||
return version;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
/*! \internal
|
||||
|
@ -79,6 +79,32 @@ static void initResources()
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
Q_LOGGING_CATEGORY(lcQpa, "qt.qpa", QtWarningMsg);
|
||||
|
||||
static void logVersionInformation()
|
||||
{
|
||||
if (!lcQpa().isInfoEnabled())
|
||||
return;
|
||||
|
||||
auto osVersion = QMacVersion::currentRuntime();
|
||||
auto qtBuildSDK = QMacVersion::buildSDK(QMacVersion::QtLibraries);
|
||||
auto qtDeploymentTarget = QMacVersion::deploymentTarget(QMacVersion::QtLibraries);
|
||||
auto appBuildSDK = QMacVersion::buildSDK(QMacVersion::ApplicationBinary);
|
||||
auto appDeploymentTarget = QMacVersion::deploymentTarget(QMacVersion::ApplicationBinary);
|
||||
|
||||
qCInfo(lcQpa, "Loading macOS (Cocoa) platform plugin for Qt " QT_VERSION_STR ", running on macOS %d.%d.%d\n\n" \
|
||||
" Component SDK version Deployment target \n" \
|
||||
" ------------- ------------- -------------------\n" \
|
||||
" Qt " QT_VERSION_STR " %d.%d.%d %d.%d.%d\n" \
|
||||
" Application %d.%d.%d %d.%d.%d\n",
|
||||
osVersion.majorVersion(), osVersion.minorVersion(), osVersion.microVersion(),
|
||||
qtBuildSDK.majorVersion(), qtBuildSDK.minorVersion(), qtBuildSDK.microVersion(),
|
||||
qtDeploymentTarget.majorVersion(), qtDeploymentTarget.minorVersion(), qtDeploymentTarget.microVersion(),
|
||||
appBuildSDK.majorVersion(), appBuildSDK.minorVersion(), appBuildSDK.microVersion(),
|
||||
appDeploymentTarget.majorVersion(), appDeploymentTarget.minorVersion(), appDeploymentTarget.microVersion());
|
||||
}
|
||||
|
||||
|
||||
class QCoreTextFontEngine;
|
||||
class QFontEngineFT;
|
||||
|
||||
@ -112,6 +138,8 @@ QCocoaIntegration::QCocoaIntegration(const QStringList ¶mList)
|
||||
, mServices(new QCocoaServices)
|
||||
, mKeyboardMapper(new QCocoaKeyMapper)
|
||||
{
|
||||
logVersionInformation();
|
||||
|
||||
if (mInstance)
|
||||
qWarning("Creating multiple Cocoa platform integrations is not supported");
|
||||
mInstance = this;
|
||||
|
@ -541,6 +541,12 @@ void QCocoaWindow::setWindowZoomButton(Qt::WindowFlags flags)
|
||||
|
||||
void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags)
|
||||
{
|
||||
// Updating the window flags may affect the window's theme frame, which
|
||||
// in the process retains and then autoreleases the NSWindow. To make
|
||||
// sure this doesn't leave lingering releases when there is no pool in
|
||||
// place (e.g. during main(), before exec), we add one locally here.
|
||||
QMacAutoReleasePool pool;
|
||||
|
||||
if (!isContentView())
|
||||
return;
|
||||
|
||||
@ -1372,11 +1378,14 @@ void QCocoaWindow::recreateWindowIfNeeded()
|
||||
if (m_windowModality != window()->modality())
|
||||
recreateReason |= WindowModalityChanged;
|
||||
|
||||
const bool shouldBeContentView = !parentWindow && !isEmbeddedView;
|
||||
Qt::WindowType type = window()->type();
|
||||
|
||||
const bool shouldBeContentView = !parentWindow
|
||||
&& !((type & Qt::SubWindow) == Qt::SubWindow)
|
||||
&& !isEmbeddedView;
|
||||
if (isContentView() != shouldBeContentView)
|
||||
recreateReason |= ContentViewChanged;
|
||||
|
||||
Qt::WindowType type = window()->type();
|
||||
const bool isPanel = isContentView() && [m_view.window isKindOfClass:[QNSPanel class]];
|
||||
const bool shouldBePanel = shouldBeContentView &&
|
||||
((type & Qt::Popup) == Qt::Popup || (type & Qt::Dialog) == Qt::Dialog);
|
||||
|
@ -71,6 +71,7 @@ QEglFSKmsGbmCursor::QEglFSKmsGbmCursor(QEglFSKmsGbmScreen *screen)
|
||||
, m_bo(nullptr)
|
||||
, m_cursorImage(0, 0, 0, 0, 0, 0)
|
||||
, m_state(CursorPendingVisible)
|
||||
, m_deviceListener(nullptr)
|
||||
{
|
||||
QByteArray hideCursorVal = qgetenv("QT_QPA_EGLFS_HIDECURSOR");
|
||||
if (!hideCursorVal.isEmpty() && hideCursorVal.toInt()) {
|
||||
|
@ -112,13 +112,6 @@ QXcbVirtualDesktop::QXcbVirtualDesktop(QXcbConnection *connection, xcb_screen_t
|
||||
|
||||
xcb_depth_next(&depth_iterator);
|
||||
}
|
||||
|
||||
if (connection->hasXRandr()) {
|
||||
xcb_connection_t *conn = connection->xcb_connection();
|
||||
auto screen_info = Q_XCB_REPLY(xcb_randr_get_screen_info, conn, screen->root);
|
||||
if (screen_info)
|
||||
m_rotation = screen_info->rotation;
|
||||
}
|
||||
}
|
||||
|
||||
QXcbVirtualDesktop::~QXcbVirtualDesktop()
|
||||
|
@ -134,7 +134,7 @@ private:
|
||||
QString m_windowManagerName;
|
||||
QMap<xcb_visualid_t, xcb_visualtype_t> m_visuals;
|
||||
QMap<xcb_visualid_t, quint8> m_visualDepths;
|
||||
uint16_t m_rotation = XCB_RANDR_ROTATION_ROTATE_0;
|
||||
uint16_t m_rotation = 0;
|
||||
};
|
||||
|
||||
class Q_XCB_EXPORT QXcbScreen : public QXcbObject, public QPlatformScreen
|
||||
|
@ -904,6 +904,8 @@ void QXcbWindow::doFocusOut()
|
||||
|
||||
struct QtMotifWmHints {
|
||||
quint32 flags, functions, decorations;
|
||||
qint32 input_mode; // unused
|
||||
quint32 status; // unused
|
||||
};
|
||||
|
||||
enum {
|
||||
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
@ -954,6 +954,7 @@ QLineEdit[echoMode="2"] {
|
||||
//! [119]
|
||||
QLineEdit:read-only {
|
||||
background: lightblue;
|
||||
}
|
||||
//! [119]
|
||||
|
||||
|
||||
|
@ -1029,7 +1029,7 @@ QRect QGridLayoutPrivate::cellRect(int row, int col) const
|
||||
This illustration shows a fragment of a dialog with a five-column,
|
||||
three-row grid (the grid is shown overlaid in magenta):
|
||||
|
||||
\image gridlayout.png A grid layout
|
||||
\image qgridlayout.png A grid layout
|
||||
|
||||
Columns 0, 2 and 4 in this dialog fragment are made up of a
|
||||
QLabel, a QLineEdit, and a QListBox. Columns 1 and 3 are
|
||||
|
@ -3848,7 +3848,7 @@ void tst_QDateTimeEdit::dateEditCorrectSectionSize_data()
|
||||
<< threeDigitDayIssueKeypresses_DayName << QString::fromLatin1("00/2/Tuesday");
|
||||
|
||||
QTest::newRow("no fixday, leap, yy/M/ddd") << defaultLocale << defaultDate << QString::fromLatin1("yy/M/ddd")
|
||||
<< threeDigitDayIssueKeypresses_DayName << QString::fromLatin1("00/2/Tue.");
|
||||
<< threeDigitDayIssueKeypresses_DayName << QString::fromLatin1("00/2/Tue");
|
||||
|
||||
QTest::newRow("no fixday, leap, yy/MM/dddd") << defaultLocale << defaultDate << QString::fromLatin1("yy/MM/dddd")
|
||||
<< threeDigitDayIssueKeypresses_DayName << QString::fromLatin1("00/02/Tuesday");
|
||||
@ -3896,13 +3896,13 @@ void tst_QDateTimeEdit::dateEditCorrectSectionSize_data()
|
||||
<< threeDigitDayIssueKeypresses_YearDayMonth << QString::fromLatin1("2000/29/2");
|
||||
|
||||
QTest::newRow("fixday, leap, yyyy/MMM/dd") << defaultLocale << defaultDate << QString::fromLatin1("yyyy/MMM/dd")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("2000/Feb./29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("2000/Feb/29");
|
||||
|
||||
QTest::newRow("fixday, leap, yyyy/MMM/d") << defaultLocale << defaultDate << QString::fromLatin1("yyyy/MMM/d")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("2000/Feb./29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("2000/Feb/29");
|
||||
|
||||
QTest::newRow("fixday, leap, yy/MMM/dd") << defaultLocale << defaultDate << QString::fromLatin1("yy/MMM/dd")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("00/Feb./29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName << QString::fromLatin1("00/Feb/29");
|
||||
|
||||
QTest::newRow("fixday, leap, yyyy/dddd/M") << defaultLocale << defaultDate << QString::fromLatin1("yyyy/dddd/M")
|
||||
<< threeDigitDayIssueKeypresses_DayName_YearDayMonth << QString::fromLatin1("2000/Tuesday/2");
|
||||
@ -3977,16 +3977,16 @@ void tst_QDateTimeEdit::dateEditCorrectSectionSize_data()
|
||||
<< threeDigitDayIssueKeypresses_MonthYearDay << QString::fromLatin1("02/2000/29");
|
||||
|
||||
QTest::newRow("fixday, leap, MMM/yy/d") << defaultLocale << defaultDate << QString::fromLatin1("MMM/yy/d")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb./00/29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb/00/29");
|
||||
|
||||
QTest::newRow("fixday, leap, MMM/yyyy/d") << defaultLocale << defaultDate << QString::fromLatin1("MMM/yyyy/d")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb./2000/29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb/2000/29");
|
||||
|
||||
QTest::newRow("fixday, MMM/yyyy/d") << defaultLocale << defaultDate.addYears(1) << QString::fromLatin1("MMM/yyyy/d")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb./2001/28");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb/2001/28");
|
||||
|
||||
QTest::newRow("fixday, leap, MMM/yyyy/dd") << defaultLocale << defaultDate << QString::fromLatin1("MMM/yyyy/dd")
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb./2000/29");
|
||||
<< threeDigitDayIssueKeypresses_ShortMonthName_MonthYearDay << QString::fromLatin1("Feb/2000/29");
|
||||
|
||||
QTest::newRow("fixday, leap, dddd, dd. MMMM yyyy") << defaultLocale
|
||||
<< defaultDate << QString::fromLatin1("dddd, dd. MMMM yyyy")
|
||||
|
Loading…
Reference in New Issue
Block a user