Merge remote-tracking branch 'origin/5.9' into 5.10
Change-Id: I896b0cf54f317c4336cc3d3db319a0b89e421728
This commit is contained in:
commit
e2a546a18b
183
dist/changes-5.9.4
vendored
Normal file
183
dist/changes-5.9.4
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
Qt 5.9.4 is a bug-fix release. It maintains both forward and backward
|
||||
compatibility (source and binary) with Qt 5.9.0 through 5.9.3.
|
||||
|
||||
For more details, refer to the online documentation included in this
|
||||
distribution. The documentation is also available online:
|
||||
|
||||
http://doc.qt.io/qt-5/index.html
|
||||
|
||||
The Qt version 5.9 series is binary compatible with the 5.8.x series.
|
||||
Applications compiled for 5.8 will continue to run with 5.9.
|
||||
|
||||
Some of the changes listed in this file include issue tracking numbers
|
||||
corresponding to tasks in the Qt Bug Tracker:
|
||||
|
||||
https://bugreports.qt.io/
|
||||
|
||||
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||
information about a particular change.
|
||||
|
||||
****************************************************************************
|
||||
* Qt 5.9.4 Changes *
|
||||
****************************************************************************
|
||||
|
||||
QtCore
|
||||
------
|
||||
|
||||
- [QTBUG-64529] Fixed a compilation issue with qfloat16 if AVX2 support is
|
||||
enabled in the compiler. Since all processors that support AVX2 also
|
||||
support F16C, for GCC and Clang it is recommended to either add -mf16c
|
||||
to your build or to use the corresponding -march= switch.
|
||||
|
||||
- QCoreApplication:
|
||||
* [QTBUG-58919] Fixed a crash if QCoreApplication is recreated on Windows
|
||||
and the passed argv parameter is different.
|
||||
|
||||
- QFileInfo:
|
||||
* [QTBUG-30148] Fixed isWritable() on Windows to return whether the given
|
||||
file is writable only under current privilege levels. Previously, the
|
||||
result would take into account privilege elevation.
|
||||
|
||||
- QObject:
|
||||
* Fixed a crash that could happen if the context QObject pointer passed to
|
||||
new-style connect() was null.
|
||||
|
||||
- QStandardPaths:
|
||||
* On Windows, it is now possible to resolve configuration paths even
|
||||
without QCoreApplication created.
|
||||
|
||||
- QString:
|
||||
* QString::unicode(), constData() and `data() const` do not return a
|
||||
NUL-terminated string. This was true before, but the documentation
|
||||
claimed the opposite.
|
||||
|
||||
- QVector:
|
||||
* Fixed a problem when calling removeAll() on an element from the
|
||||
container, if the container had more than one copy of the that element.
|
||||
|
||||
- QXmlStreamWriter:
|
||||
* [QTBUG-63538] Empty namespace URIs are now possible.
|
||||
|
||||
- State Machine:
|
||||
* [QTBUG-61463] Fixed a failed assertion that could happen when emitting a
|
||||
signal from another thread.
|
||||
|
||||
QtNetwork
|
||||
---------
|
||||
|
||||
- QUdpSocket:
|
||||
* [QTBUG-64718] Fixed a regression from Qt 5.9.3 caused by an apparent
|
||||
Win32 API quirk we triggered when using readDatagram(), resulting in
|
||||
an invalid QHostAddress sender address. receiveDatagram() was not
|
||||
affected.
|
||||
|
||||
QtPrintSupport
|
||||
--------------
|
||||
|
||||
- QPrintDialog:
|
||||
* [QTBUG-63933] Properly pre-select explicitly requested printer on
|
||||
Unix.
|
||||
|
||||
QtWidgets
|
||||
---------
|
||||
|
||||
- QFileSystemModel:
|
||||
* [QTBUG-46684] It is now possible to enable per-file watching by
|
||||
setting the environment variable QT_FILESYSTEMMODEL_WATCH_FILES,
|
||||
allowing to track for example changes in file size.
|
||||
* [QTBUG-64098] Fixed column alignment issues.
|
||||
* [QTBUG-62841] Fixed assert when monitoring directories.
|
||||
|
||||
- QPixmapCache:
|
||||
* [QTBUG-65475] Changing application palette runtime will now affect
|
||||
(and invalidate) cached widget pixmaps used by the current style.
|
||||
|
||||
- QTreeView:
|
||||
* [QTBUG-57538] Fixed issue with drag and drop sometimes being inaccurate.
|
||||
* [QTBUG-63396] Fixed issue with child indicator not drawn correctly in RTL mode.
|
||||
* [QTBUG-63869] Fixed key navigation issue when using hidden items.
|
||||
* [QTBUG-8376] Fixed row heights being wrong because of hidden columns.
|
||||
|
||||
- QTableView:
|
||||
* [QTBUG-60219] Fixed grid lines being drawn outside header.
|
||||
|
||||
- QHeaderView:
|
||||
* [QTBUG-53221] Fixed assert in QHeaderView because of layout changes.
|
||||
* [QTBUG-65017] Fixed a font issue when using drag and drop.
|
||||
* [QTBUG-56520] Fixed drawing issues in RTL mode.
|
||||
* [QTBUG-41124] [QTBUG-54610] Fixed update issues.
|
||||
|
||||
- QWidget:
|
||||
* [QTBUG-61213] Fixed crash related to the usage of Qt::WA_WindowPropagation.
|
||||
|
||||
- QPlainTextEdit:
|
||||
* [QTBUG-62818] Fixed QPlainTextedit hanging because of scrollbar usage.
|
||||
|
||||
- QMenu:
|
||||
* [QTBUG-63576] Fixed HiDPI issue in QFusionStyle for QCheckBoxes in QMenus.
|
||||
* [QTBUG-59794] Fixed HiDPI issue in QMenu when using several screens.
|
||||
|
||||
- QMenuItem:
|
||||
* [QTBUG-64055] Fixed drawing issue when setting a font style.
|
||||
|
||||
- QAbstractButton:
|
||||
* [QTBUG-53244] Fixed issue with released signal not being emmited when using
|
||||
several mouse buttons at the same time.
|
||||
|
||||
- QGraphicsEffect:
|
||||
* [QTBUG-60231] Fixed crash when using child widgets with graphic effects.
|
||||
|
||||
Third-Party Code
|
||||
----------------
|
||||
|
||||
- [QTBUG-65138] Fixed glitch in attribution documentation for Freetype
|
||||
licenses / Qt Gui.
|
||||
|
||||
Platform Specific Changes
|
||||
-------------------------
|
||||
|
||||
- eglfs:
|
||||
* [QTBUG-65119] Fixed crash when using cursors and multiple GL contexts.
|
||||
|
||||
- iOS/tvOS:
|
||||
* Qt will now take the safe area margins of the device into account when
|
||||
computing layouts for QtWidgets.
|
||||
|
||||
- macOS:
|
||||
* [QTBUG-57487][QTBUG-54160] If you have changed the button mapping of
|
||||
your Wacom tablet in System Preferences, it will be respected by Qt
|
||||
applications now. To revert to the old behavior, set the environment
|
||||
variable QT_MAC_TABLET_IGNORE_BUTTON_MAPPING.
|
||||
|
||||
- macOS/iOS:
|
||||
* [QTBUG-63476] Fixed an issue where text using one of the system theme
|
||||
fonts would under certain circumstances display random glyphs.
|
||||
|
||||
- INTEGRITY:
|
||||
* Added mkspec for INTEGRITY Qualcomm s820 MSM8996AU
|
||||
|
||||
- QNX:
|
||||
* [QTBUG-64033] Fixed a build issue when using slog2 in QNX7.
|
||||
|
||||
- X11 / XCB:
|
||||
* [QTBUG-62224] Minimal libXi version requirement has been updated from
|
||||
1.7.4 to 1.7.5. This is because XIAllowTouchEvents is known to
|
||||
deadlock with libXi 1.7.4 and earlier. When touch events are never
|
||||
received, this is not an issue. Plain mouse / keyboard systems are not
|
||||
affected.
|
||||
|
||||
configure & build system
|
||||
------------------------
|
||||
|
||||
- [QTBUG-61431][QTBUG-62521] Fixed processing of *_LIBS_{DEBUG|RELEASE}=
|
||||
configure command line arguments.
|
||||
- [QTBUG-63452] Fixed bogus complaints about DUMMY platform when
|
||||
re-configuring a build on a different day than initially configuring it.
|
||||
- Fixed logic errors in the conditions of various Qt features.
|
||||
|
||||
qmake
|
||||
-----
|
||||
|
||||
- [QTBUG-41246][QTBUG-50896][Xcode] It is now possible to enable generation
|
||||
of dSYM debug symbols for release builds.
|
||||
- [iOS] Fixed compilation of asset catalogs for a generic simulator.
|
@ -1,3 +1,7 @@
|
||||
# This avoids spurious errors when a project is explicitly disabled
|
||||
# due to required Qt modules being missing.
|
||||
!isEmpty(QMAKE_FAILED_REQUIREMENTS): return()
|
||||
|
||||
CONFIG *= thread
|
||||
|
||||
#handle defines
|
||||
|
@ -248,9 +248,9 @@ QString QStandardPaths::displayName(StandardLocation type)
|
||||
if (QStandardPaths::ApplicationsLocation == type)
|
||||
return QCoreApplication::translate("QStandardPaths", "Applications");
|
||||
|
||||
const QCFString fsPath(standardLocations(type).constFirst());
|
||||
if (QCFType<CFURLRef> url = CFURLCreateWithFileSystemPath(kCFAllocatorDefault,
|
||||
standardLocations(type).constFirst().toCFString(),
|
||||
kCFURLPOSIXPathStyle, true)) {
|
||||
fsPath, kCFURLPOSIXPathStyle, true)) {
|
||||
QCFString name;
|
||||
CFURLCopyResourcePropertyForKey(url, kCFURLLocalizedNameKey, &name, NULL);
|
||||
if (name && CFStringGetLength(name))
|
||||
|
@ -32,7 +32,7 @@ It allows browsers to, for example:
|
||||
supported by Qt (by the QNetworkCookieJar class).",
|
||||
|
||||
"Homepage": "http://publicsuffix.org/",
|
||||
"Version": "Generated on 2016-10-20 from revision 915565885d0fbd25caf7d8b339cd3478f558da94",
|
||||
"Version": "Generated on 2018-01-04",
|
||||
"License": "Mozilla Public License 2.0",
|
||||
"LicenseFile": "PSL-LICENSE.txt",
|
||||
"LicenseId": "MPL-2.0",
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1467,6 +1467,9 @@ void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority)
|
||||
return;
|
||||
}
|
||||
|
||||
if (event->type() == QEvent::DeferredDelete)
|
||||
receiver->d_ptr->deleteLaterCalled = true;
|
||||
|
||||
if (event->type() == QEvent::DeferredDelete && data == QThreadData::current()) {
|
||||
// remember the current running eventloop for DeferredDelete
|
||||
// events posted in the receiver's thread.
|
||||
@ -1526,22 +1529,34 @@ bool QCoreApplication::compressEvent(QEvent *event, QObject *receiver, QPostEven
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
if ((event->type() == QEvent::DeferredDelete
|
||||
|| event->type() == QEvent::Quit)
|
||||
&& receiver->d_func()->postedEvents > 0) {
|
||||
for (int i = 0; i < postedEvents->size(); ++i) {
|
||||
const QPostEvent &cur = postedEvents->at(i);
|
||||
if (cur.receiver != receiver
|
||||
|
||||
if (event->type() == QEvent::DeferredDelete) {
|
||||
if (receiver->d_ptr->deleteLaterCalled) {
|
||||
// there was a previous DeferredDelete event, so we can drop the new one
|
||||
delete event;
|
||||
return true;
|
||||
}
|
||||
// deleteLaterCalled is set to true in postedEvents when queueing the very first
|
||||
// deferred deletion event.
|
||||
return false;
|
||||
}
|
||||
|
||||
if (event->type() == QEvent::Quit && receiver->d_func()->postedEvents > 0) {
|
||||
for (int i = 0; i < postedEvents->size(); ++i) {
|
||||
const QPostEvent &cur = postedEvents->at(i);
|
||||
if (cur.receiver != receiver
|
||||
|| cur.event == 0
|
||||
|| cur.event->type() != event->type())
|
||||
continue;
|
||||
// found an event for this receiver
|
||||
delete event;
|
||||
return true;
|
||||
}
|
||||
continue;
|
||||
// found an event for this receiver
|
||||
delete event;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2881,6 +2896,10 @@ void QCoreApplication::setEventDispatcher(QAbstractEventDispatcher *eventDispatc
|
||||
|
||||
If QCoreApplication is deleted and another QCoreApplication is created,
|
||||
the startup function will be invoked again.
|
||||
|
||||
\note This macro is not suitable for use in library code that is then
|
||||
statically linked into an application since the function may not be called
|
||||
at all due to being eliminated by the linker.
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
@ -230,6 +230,7 @@ QObjectPrivate::QObjectPrivate(int version)
|
||||
connectedSignals[0] = connectedSignals[1] = 0;
|
||||
metaObject = 0;
|
||||
isWindow = false;
|
||||
deleteLaterCalled = false;
|
||||
}
|
||||
|
||||
QObjectPrivate::~QObjectPrivate()
|
||||
|
@ -106,7 +106,8 @@ public:
|
||||
uint sendChildEvents : 1;
|
||||
uint receiveChildEvents : 1;
|
||||
uint isWindow : 1; //for QWindow
|
||||
uint unused : 25;
|
||||
uint deleteLaterCalled : 1;
|
||||
uint unused : 24;
|
||||
int postedEvents;
|
||||
QDynamicMetaObjectData *metaObject;
|
||||
QMetaObject *dynamicMetaObject() const;
|
||||
|
@ -931,7 +931,8 @@ QImage::QImage(const uchar *data, int width, int height, int bytesPerLine, Forma
|
||||
|
||||
The loader attempts to read the image using the specified \a
|
||||
format. If the \a format is not specified (which is the default),
|
||||
the loader probes the file for a header to guess the file format.
|
||||
it is auto-detected based on the file's suffix and header. For
|
||||
details, see {QImageReader::setAutoDetectImageFormat()}{QImageReader}.
|
||||
|
||||
If the loading of the image failed, this object is a null image.
|
||||
|
||||
@ -3406,8 +3407,9 @@ void QImage::rgbSwapped_inplace()
|
||||
and returns \c false.
|
||||
|
||||
The loader attempts to read the image using the specified \a format, e.g.,
|
||||
PNG or JPG. If \a format is not specified (which is the default), the
|
||||
loader probes the file for a header to guess the file format.
|
||||
PNG or JPG. If \a format is not specified (which is the default), it is
|
||||
auto-detected based on the file's suffix and header. For details, see
|
||||
{QImageReader::setAutoDetectImageFormat()}{QImageReader}.
|
||||
|
||||
The file name can either refer to an actual file on disk or to one
|
||||
of the application's embedded resources. See the
|
||||
@ -3474,14 +3476,10 @@ bool QImage::loadFromData(const uchar *data, int len, const char *format)
|
||||
Constructs a QImage from the first \a size bytes of the given
|
||||
binary \a data. The loader attempts to read the image using the
|
||||
specified \a format. If \a format is not specified (which is the default),
|
||||
the loader probes the file for a header to guess the file format.
|
||||
binary \a data. The loader attempts to read the image, either using the
|
||||
optional image \a format specified or by determining the image format from
|
||||
the data.
|
||||
the loader probes the data for a header to guess the file format.
|
||||
|
||||
If \a format is not specified (which is the default), the loader probes the
|
||||
file for a header to determine the file format. If \a format is specified,
|
||||
it must be one of the values returned by QImageReader::supportedImageFormats().
|
||||
If \a format is specified, it must be one of the values returned by
|
||||
QImageReader::supportedImageFormats().
|
||||
|
||||
If the loading of the image fails, the image returned will be a null image.
|
||||
|
||||
|
@ -186,6 +186,9 @@ QPaintDevice *QBackingStore::paintDevice()
|
||||
*/
|
||||
void QBackingStore::endPaint()
|
||||
{
|
||||
if (paintDevice()->paintingActive())
|
||||
qWarning() << "QBackingStore::endPaint() called with active painter on backingstore paint device";
|
||||
|
||||
d_ptr->platformBackingStore->endPaint();
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ public Q_SLOTS:
|
||||
}
|
||||
|
||||
protected:
|
||||
bool event(QEvent *event)
|
||||
bool event(QEvent *event) override
|
||||
{
|
||||
if (event->type() == QEvent::MetaCall) {
|
||||
auto metaCallEvent = static_cast<QMetaCallEvent *>(event);
|
||||
|
@ -83,23 +83,11 @@
|
||||
// We mean it.
|
||||
//
|
||||
|
||||
/*
|
||||
Cocoa Application Categories
|
||||
*/
|
||||
#include "qglobal.h"
|
||||
#include "private/qcore_mac_p.h"
|
||||
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
@class QT_MANGLE_NAMESPACE(QCocoaMenuLoader);
|
||||
|
||||
@interface NSApplication (QT_MANGLE_NAMESPACE(QApplicationIntegration))
|
||||
- (void)QT_MANGLE_NAMESPACE(qt_setDockMenu):(NSMenu *)newMenu;
|
||||
- (int)QT_MANGLE_NAMESPACE(qt_validModesForFontPanel):(NSFontPanel *)fontPanel;
|
||||
|
||||
- (void)QT_MANGLE_NAMESPACE(qt_sendPostedMessage):(NSEvent *)event;
|
||||
- (BOOL)QT_MANGLE_NAMESPACE(qt_filterEvent):(NSEvent *)event;
|
||||
@end
|
||||
|
||||
@interface QT_MANGLE_NAMESPACE(QNSApplication) : NSApplication {
|
||||
}
|
||||
|
@ -82,25 +82,7 @@
|
||||
|
||||
QT_USE_NAMESPACE
|
||||
|
||||
@implementation NSApplication (QT_MANGLE_NAMESPACE(QApplicationIntegration))
|
||||
|
||||
- (void)QT_MANGLE_NAMESPACE(qt_setDockMenu):(NSMenu *)newMenu
|
||||
{
|
||||
[[QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate] setDockMenu:newMenu];
|
||||
}
|
||||
|
||||
- (int)QT_MANGLE_NAMESPACE(qt_validModesForFontPanel):(NSFontPanel *)fontPanel
|
||||
{
|
||||
Q_UNUSED(fontPanel);
|
||||
// only display those things that QFont can handle
|
||||
return NSFontPanelFaceModeMask
|
||||
| NSFontPanelSizeModeMask
|
||||
| NSFontPanelCollectionModeMask
|
||||
| NSFontPanelUnderlineEffectModeMask
|
||||
| NSFontPanelStrikethroughEffectModeMask;
|
||||
}
|
||||
|
||||
- (void)QT_MANGLE_NAMESPACE(qt_sendPostedMessage):(NSEvent *)event
|
||||
static void qt_sendPostedMessage(NSEvent *event)
|
||||
{
|
||||
// WARNING: data1 and data2 is truncated to from 64-bit to 32-bit on OS 10.5!
|
||||
// That is why we need to split the address in two parts:
|
||||
@ -128,7 +110,7 @@ QT_USE_NAMESPACE
|
||||
|
||||
static const QByteArray q_macLocalEventType = QByteArrayLiteral("mac_generic_NSEvent");
|
||||
|
||||
- (BOOL)QT_MANGLE_NAMESPACE(qt_filterEvent):(NSEvent *)event
|
||||
static bool qt_filterEvent(NSEvent *event)
|
||||
{
|
||||
if (qApp && qApp->eventDispatcher()->
|
||||
filterNativeEvent(q_macLocalEventType, static_cast<void*>(event), 0))
|
||||
@ -137,7 +119,7 @@ static const QByteArray q_macLocalEventType = QByteArrayLiteral("mac_generic_NSE
|
||||
if ([event type] == NSApplicationDefined) {
|
||||
switch (static_cast<short>([event subtype])) {
|
||||
case QtCocoaEventSubTypePostMessage:
|
||||
[NSApp QT_MANGLE_NAMESPACE(qt_sendPostedMessage):event];
|
||||
qt_sendPostedMessage(event);
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
@ -147,8 +129,6 @@ static const QByteArray q_macLocalEventType = QByteArrayLiteral("mac_generic_NSE
|
||||
return false;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
static void qt_maybeSendKeyEquivalentUpEvent(NSEvent *event)
|
||||
{
|
||||
// Cocoa is known for not sending key up events for key
|
||||
@ -180,7 +160,7 @@ static void qt_maybeSendKeyEquivalentUpEvent(NSEvent *event)
|
||||
// be called instead of sendEvent if redirection occurs.
|
||||
// 'self' will then be an instance of NSApplication
|
||||
// (and not QNSApplication)
|
||||
if (![NSApp QT_MANGLE_NAMESPACE(qt_filterEvent):event]) {
|
||||
if (!qt_filterEvent(event)) {
|
||||
[self QT_MANGLE_NAMESPACE(qt_sendEvent_original):event];
|
||||
qt_maybeSendKeyEquivalentUpEvent(event);
|
||||
}
|
||||
@ -190,7 +170,7 @@ static void qt_maybeSendKeyEquivalentUpEvent(NSEvent *event)
|
||||
{
|
||||
// This method will be called if
|
||||
// no redirection occurs
|
||||
if (![NSApp QT_MANGLE_NAMESPACE(qt_filterEvent):event]) {
|
||||
if (!qt_filterEvent(event)) {
|
||||
[super sendEvent:event];
|
||||
qt_maybeSendKeyEquivalentUpEvent(event);
|
||||
}
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
QT_USE_NAMESPACE
|
||||
|
||||
@interface QT_MANGLE_NAMESPACE(QNSColorPanelDelegate) : NSObject<NSWindowDelegate, QT_MANGLE_NAMESPACE(QNSPanelDelegate)>
|
||||
@interface QT_MANGLE_NAMESPACE(QNSColorPanelDelegate) : NSObject<NSWindowDelegate, QNSPanelDelegate>
|
||||
{
|
||||
@public
|
||||
NSColorPanel *mColorPanel;
|
||||
|
@ -75,7 +75,7 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont)
|
||||
|
||||
@class QT_MANGLE_NAMESPACE(QNSFontPanelDelegate);
|
||||
|
||||
@interface QT_MANGLE_NAMESPACE(QNSFontPanelDelegate) : NSObject<NSWindowDelegate, QT_MANGLE_NAMESPACE(QNSPanelDelegate)>
|
||||
@interface QT_MANGLE_NAMESPACE(QNSFontPanelDelegate) : NSObject<NSWindowDelegate, QNSPanelDelegate>
|
||||
{
|
||||
@public
|
||||
NSFontPanel *mFontPanel;
|
||||
|
@ -164,7 +164,10 @@ T qt_mac_resolveOption(const T &fallback, QWindow *window, const QByteArray &pro
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
@protocol QT_MANGLE_NAMESPACE(QNSPanelDelegate)
|
||||
// @compatibility_alias doesn't work with protocols
|
||||
#define QNSPanelDelegate QT_MANGLE_NAMESPACE(QNSPanelDelegate)
|
||||
|
||||
@protocol QNSPanelDelegate
|
||||
@required
|
||||
- (void)onOkClicked;
|
||||
- (void)onCancelClicked;
|
||||
@ -182,7 +185,7 @@ QT_END_NAMESPACE
|
||||
@property (nonatomic, readonly) NSView *panelContents; // ARC: unretained, make it weak
|
||||
@property (nonatomic, assign) NSEdgeInsets panelContentsMargins;
|
||||
|
||||
- (instancetype)initWithPanelDelegate:(id<QT_MANGLE_NAMESPACE(QNSPanelDelegate)>)panelDelegate;
|
||||
- (instancetype)initWithPanelDelegate:(id<QNSPanelDelegate>)panelDelegate;
|
||||
- (void)dealloc;
|
||||
|
||||
- (NSButton *)createButtonWithTitle:(const char *)title;
|
||||
|
@ -306,7 +306,7 @@ QT_END_NAMESPACE
|
||||
@synthesize panelContents = _panelContents;
|
||||
@synthesize panelContentsMargins = _panelContentsMargins;
|
||||
|
||||
- (instancetype)initWithPanelDelegate:(id<QT_MANGLE_NAMESPACE(QNSPanelDelegate)>)panelDelegate
|
||||
- (instancetype)initWithPanelDelegate:(id<QNSPanelDelegate>)panelDelegate
|
||||
{
|
||||
if ((self = [super initWithFrame:NSZeroRect])) {
|
||||
// create OK and Cancel buttons and add these as subviews
|
||||
|
@ -42,7 +42,7 @@
|
||||
#include "qcocoamenu.h"
|
||||
#include "qcocoamenubar.h"
|
||||
#include "qcocoahelpers.h"
|
||||
#include "qcocoaapplication.h"
|
||||
#include "qcocoaapplicationdelegate.h"
|
||||
#include "qcocoaintegration.h"
|
||||
#include "qcocoaeventdispatcher.h"
|
||||
|
||||
@ -256,7 +256,7 @@ void QCocoaNativeInterface::setDockMenu(QPlatformMenu *platformMenu)
|
||||
QMacAutoReleasePool pool;
|
||||
QCocoaMenu *cocoaPlatformMenu = static_cast<QCocoaMenu *>(platformMenu);
|
||||
NSMenu *menu = cocoaPlatformMenu->nsMenu();
|
||||
[NSApp QT_MANGLE_NAMESPACE(qt_setDockMenu): menu];
|
||||
[[QCocoaApplicationDelegate sharedDelegate] setDockMenu:menu];
|
||||
}
|
||||
|
||||
void *QCocoaNativeInterface::qMenuToNSMenu(QPlatformMenu *platformMenu)
|
||||
|
@ -289,9 +289,6 @@ void QCocoaSystemTrayIcon::showMessage(const QString &title, const QString &mess
|
||||
}
|
||||
QT_END_NAMESPACE
|
||||
|
||||
@implementation NSStatusItem (Qt)
|
||||
@end
|
||||
|
||||
@implementation QNSImageView
|
||||
-(id)initWithParent:(QNSStatusItem*)myParent {
|
||||
self = [super init];
|
||||
|
@ -48,10 +48,17 @@
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QCocoaWindow)
|
||||
|
||||
// @compatibility_alias doesn't work with categories or their methods
|
||||
#define FullScreenProperty QT_MANGLE_NAMESPACE(FullScreenProperty)
|
||||
#define qt_fullScreen QT_MANGLE_NAMESPACE(qt_fullScreen)
|
||||
|
||||
@interface NSWindow (FullScreenProperty)
|
||||
@property(readonly) BOOL qt_fullScreen;
|
||||
@end
|
||||
|
||||
// @compatibility_alias doesn't work with protocols
|
||||
#define QNSWindowProtocol QT_MANGLE_NAMESPACE(QNSWindowProtocol)
|
||||
|
||||
@protocol QNSWindowProtocol
|
||||
@optional
|
||||
- (BOOL)canBecomeKeyWindow;
|
||||
|
@ -1161,7 +1161,7 @@ static void qLibraryInit()
|
||||
#endif // Q_NO_MYSQL_EMBEDDED
|
||||
|
||||
#ifdef MARIADB_BASE_VERSION
|
||||
qAddPostRoutine(mysql_server_end);
|
||||
qAddPostRoutine([]() { mysql_server_end(); });
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -237,6 +237,9 @@ void QTreeView::setModel(QAbstractItemModel *model)
|
||||
// QAbstractItemView connects to a private slot
|
||||
disconnect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
|
||||
// do header layout after the tree
|
||||
disconnect(d->model, SIGNAL(layoutChanged()),
|
||||
d->header, SLOT(_q_layoutChanged()));
|
||||
// QTreeView has a public slot for this
|
||||
connect(d->model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
|
||||
this, SLOT(rowsRemoved(QModelIndex,int,int)));
|
||||
|
@ -3649,6 +3649,8 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
|
||||
QFont oldFont = p->font();
|
||||
if (subRule.hasFont)
|
||||
p->setFont(subRule.font.resolve(p->font()));
|
||||
else
|
||||
p->setFont(mi.font);
|
||||
|
||||
// We fall back to drawing with the style sheet code whenever at least one of the
|
||||
// items are styled in an incompatible way, such as having a background image.
|
||||
@ -3765,8 +3767,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
|
||||
}
|
||||
}
|
||||
|
||||
if (subRule.hasFont)
|
||||
p->setFont(oldFont);
|
||||
p->setFont(oldFont);
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ ubuntu-14.04
|
||||
[modalWindowEnterEventOnHide_QTBUG35109]
|
||||
ubuntu-14.04
|
||||
ubuntu-16.04
|
||||
osx ci
|
||||
[modalDialogClosingOneOfTwoModal]
|
||||
osx
|
||||
[modalWindowModallity]
|
||||
|
@ -2029,9 +2029,6 @@ void tst_QWindow::modalWindowPosition()
|
||||
#ifndef QT_NO_CURSOR
|
||||
void tst_QWindow::modalWindowEnterEventOnHide_QTBUG35109()
|
||||
{
|
||||
if (QGuiApplication::platformName() == QLatin1String("cocoa"))
|
||||
QSKIP("This test fails on OS X on CI");
|
||||
|
||||
if (isPlatformOffscreenOrMinimal())
|
||||
QSKIP("Can't test window focusing on offscreen/minimal");
|
||||
|
||||
|
@ -332,17 +332,6 @@ public:
|
||||
endRemoveColumns();
|
||||
}
|
||||
|
||||
void removeAddLastColumnLayoutChanged() // for taskQTBUG_41124
|
||||
{
|
||||
// make sure QHeaderView::_q_layoutChanged() is called
|
||||
emit layoutAboutToBeChanged();
|
||||
--cols;
|
||||
emit layoutChanged();
|
||||
emit layoutAboutToBeChanged();
|
||||
++cols;
|
||||
emit layoutChanged();
|
||||
}
|
||||
|
||||
void removeAllColumns()
|
||||
{
|
||||
beginRemoveColumns(QModelIndex(), 0, cols - 1);
|
||||
@ -1337,19 +1326,6 @@ void tst_QTreeView::columnHidden()
|
||||
for (int c = 0; c < model.columnCount(); ++c)
|
||||
QCOMPARE(view.isColumnHidden(c), true);
|
||||
view.update();
|
||||
|
||||
// QTBUG_41124:
|
||||
// QHeaderViewPrivate::_q_layoutChanged was not called because it was
|
||||
// disconnected in QTreeView::setModel(). _q_layoutChanged restores
|
||||
// the hidden sections which is tested here
|
||||
view.setColumnHidden(model.cols - 1, true);
|
||||
model.removeAddLastColumnLayoutChanged();
|
||||
// we removed the last column and added a new one
|
||||
// (with layoutToBeChanged/layoutChanged() for both) so column
|
||||
// 1 is a new column and therefore must not be hidden when
|
||||
// _q_layoutChanged() is called and is doing the right stuff
|
||||
QCOMPARE(view.isColumnHidden(model.cols - 1), false);
|
||||
|
||||
}
|
||||
|
||||
void tst_QTreeView::rowHidden()
|
||||
|
Loading…
Reference in New Issue
Block a user