summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.h15
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm28
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.h26
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm2
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm1
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.h22
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h52
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm2
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h2
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm50
-rw-r--r--src/plugins/platforms/cocoa/qpaintengine_mac.mm2
15 files changed, 101 insertions, 111 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index 67d9de859f..cac50825af 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -131,8 +131,8 @@ QT_END_NAMESPACE
@synchronized(self) {
if (sharedCocoaApplicationDelegate == nil) {
sharedCocoaApplicationDelegate = [super allocWithZone:zone];
- return sharedCocoaApplicationDelegate;
qAddPostRoutine(cleanupCocoaApplicationDelegate);
+ return sharedCocoaApplicationDelegate;
}
}
return nil;
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index d1d6330249..2098f0dc8c 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -72,7 +72,7 @@ void QCocoaCursor::setPos(const QPoint &position)
pos.x = position.x();
pos.y = position.y();
- CGEventRef e = CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, 0);
+ CGEventRef e = CGEventCreateMouseEvent(0, kCGEventMouseMoved, pos, kCGMouseButtonLeft);
CGEventPost(kCGHIDEventTap, e);
CFRelease(e);
}
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
index 36943a563e..576bb3af08 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
@@ -50,20 +50,19 @@ public:
QCocoaFileDialogHelper();
virtual ~QCocoaFileDialogHelper();
- void exec();
- void execModalForWindow(QWindow *parent);
+ void exec() Q_DECL_OVERRIDE;
- bool defaultNameFilterDisables() const;
+ bool defaultNameFilterDisables() const Q_DECL_OVERRIDE;
- bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent);
- void hide();
+ bool show(Qt::WindowFlags windowFlags, Qt::WindowModality windowModality, QWindow *parent) Q_DECL_OVERRIDE;
+ void hide() Q_DECL_OVERRIDE;
void setDirectory(const QUrl &directory) Q_DECL_OVERRIDE;
QUrl directory() const Q_DECL_OVERRIDE;
void selectFile(const QUrl &filename) Q_DECL_OVERRIDE;
QList<QUrl> selectedFiles() const Q_DECL_OVERRIDE;
- void setFilter();
- void selectNameFilter(const QString &filter);
- QString selectedNameFilter() const;
+ void setFilter() Q_DECL_OVERRIDE;
+ void selectNameFilter(const QString &filter) Q_DECL_OVERRIDE;
+ QString selectedNameFilter() const Q_DECL_OVERRIDE;
public:
bool showCocoaFilePanel(Qt::WindowModality windowModality, QWindow *parent);
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
index fad3f28053..93ee4e8624 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
@@ -253,22 +253,17 @@ static QString strippedText(QString s)
|| [self panel:nil shouldShowFilename:filepath];
[self updateProperties];
+ QCocoaMenuBar::redirectKnownMenuItemsToFirstResponder();
[mSavePanel setDirectoryURL: [NSURL fileURLWithPath:mCurrentDir]];
[mSavePanel setNameFieldStringValue:selectable ? QCFString::toNSString(info.fileName()) : @""];
NSWindow *nsparent = static_cast<NSWindow *>(qGuiApp->platformNativeInterface()->nativeResourceForWindow("nswindow", parent));
- qApp->processEvents(QEventLoop::ExcludeUserInputEvents | QEventLoop::ExcludeSocketNotifiers);
- QCocoaMenuBar::redirectKnownMenuItemsToFirstResponder();
-
[mSavePanel beginSheetModalForWindow:nsparent completionHandler:^(NSInteger result){
- [[NSApplication sharedApplication] stopModalWithCode:result];
+ mReturnCode = result;
+ if (mHelper)
+ mHelper->QNSOpenSavePanelDelegate_panelClosed(result == NSOKButton);
}];
-
- mReturnCode = [[NSApplication sharedApplication] runModalForWindow:nsparent];
- QAbstractEventDispatcher::instance()->interrupt();
- if (mHelper)
- mHelper->QNSOpenSavePanelDelegate_panelClosed(mReturnCode == NSOKButton);
}
- (BOOL)isHiddenFile:(NSString *)filename isDir:(BOOL)isDir
@@ -710,15 +705,14 @@ void QCocoaFileDialogHelper::createNSOpenSavePanelDelegate()
bool QCocoaFileDialogHelper::showCocoaFilePanel(Qt::WindowModality windowModality, QWindow *parent)
{
- Q_UNUSED(parent)
-
createNSOpenSavePanelDelegate();
if (!mDelegate)
return false;
if (windowModality == Qt::NonModal)
[mDelegate showModelessPanel];
- // no need to show a Qt::ApplicationModal dialog here, since it will be done in exec;
- // Qt::WindowModal will be done in execModalForWindow.
+ else if (windowModality == Qt::WindowModal && parent)
+ [mDelegate showWindowModalSheet:parent];
+ // no need to show a Qt::ApplicationModal dialog here, since it will be done in _q_platformRunNativeAppModalPanel()
return true;
}
@@ -750,14 +744,6 @@ void QCocoaFileDialogHelper::exec()
}
-void QCocoaFileDialogHelper::execModalForWindow(QWindow *parent)
-{
- if (!parent)
- return exec();
-
- [mDelegate showWindowModalSheet:parent];
-}
-
bool QCocoaFileDialogHelper::defaultNameFilterDisables() const
{
return true;
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index c2f0c730fe..3ecfd1b429 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -775,7 +775,7 @@ QString qt_mac_removeAmpersandEscapes(QString s)
returned if it can't be obtained. It is the caller's responsibility to
CGContextRelease the context when finished using it.
- \warning This function is only available on Mac OS X.
+ \warning This function is only available on OS X.
\warning This function is duplicated in qmacstyle_mac.mm
*/
CGContextRef qt_mac_cg_context(QPaintDevice *pdev)
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h
index cc235135f1..d7dc8e67de 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.h
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.h
@@ -60,19 +60,19 @@ public:
// ----------------------------------------------------
// Virtual methods overridden from QPlatformScreen
- QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
- QRect geometry() const { return m_geometry; }
- QRect availableGeometry() const { return m_availableGeometry; }
- int depth() const { return m_depth; }
- QImage::Format format() const { return m_format; }
- qreal devicePixelRatio() const;
- QSizeF physicalSize() const { return m_physicalSize; }
- QDpi logicalDpi() const { return m_logicalDpi; }
- qreal refreshRate() const { return m_refreshRate; }
- QString name() const { return m_name; }
- QPlatformCursor *cursor() const { return m_cursor; }
- QWindow *topLevelAt(const QPoint &point) const;
- QList<QPlatformScreen *> virtualSiblings() const { return m_siblings; }
+ QPixmap grabWindow(WId window, int x, int y, int width, int height) const Q_DECL_OVERRIDE;
+ QRect geometry() const Q_DECL_OVERRIDE { return m_geometry; }
+ QRect availableGeometry() const Q_DECL_OVERRIDE { return m_availableGeometry; }
+ int depth() const Q_DECL_OVERRIDE { return m_depth; }
+ QImage::Format format() const Q_DECL_OVERRIDE { return m_format; }
+ qreal devicePixelRatio() const Q_DECL_OVERRIDE;
+ QSizeF physicalSize() const Q_DECL_OVERRIDE { return m_physicalSize; }
+ QDpi logicalDpi() const Q_DECL_OVERRIDE { return m_logicalDpi; }
+ qreal refreshRate() const Q_DECL_OVERRIDE { return m_refreshRate; }
+ QString name() const Q_DECL_OVERRIDE { return m_name; }
+ QPlatformCursor *cursor() const Q_DECL_OVERRIDE { return m_cursor; }
+ QWindow *topLevelAt(const QPoint &point) const Q_DECL_OVERRIDE;
+ QList<QPlatformScreen *> virtualSiblings() const Q_DECL_OVERRIDE { return m_siblings; }
// ----------------------------------------------------
// Additional methods
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index eb231f064e..57739f3a58 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -162,6 +162,8 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QCocoaMenuDelegate);
// Whatever the current first responder is, let's give it a chance
// and do not touch the Qt's focusObject (which is different from some native view
// having a focus inside NSSave/OpenPanel.
+ *target = nil;
+ *action = menuItem.action;
return YES;
}
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
index 33326702c1..d018c05635 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
@@ -54,9 +54,9 @@ public:
QCocoaNativeInterface();
#ifndef QT_NO_OPENGL
- void *nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context);
+ void *nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context) Q_DECL_OVERRIDE;
#endif
- void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window);
+ void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window) Q_DECL_OVERRIDE;
NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource) Q_DECL_OVERRIDE;
diff --git a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
index f50f552623..713758cc7e 100644
--- a/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
+++ b/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm
@@ -446,6 +446,7 @@ QT_END_NAMESPACE
-(void)dealloc {
[[NSStatusBar systemStatusBar] removeStatusItem:item];
+ [[NSNotificationCenter defaultCenter] removeObserver:imageCell];
[imageCell release];
[item release];
[super dealloc];
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.h b/src/plugins/platforms/cocoa/qcocoatheme.h
index 203f05c8bb..0cd7b7d4c8 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.h
+++ b/src/plugins/platforms/cocoa/qcocoatheme.h
@@ -46,25 +46,25 @@ public:
QCocoaTheme();
~QCocoaTheme();
- virtual QPlatformMenuItem* createPlatformMenuItem() const;
- virtual QPlatformMenu* createPlatformMenu() const;
- virtual QPlatformMenuBar* createPlatformMenuBar() const;
+ QPlatformMenuItem* createPlatformMenuItem() const Q_DECL_OVERRIDE;
+ QPlatformMenu* createPlatformMenu() const Q_DECL_OVERRIDE;
+ QPlatformMenuBar* createPlatformMenuBar() const Q_DECL_OVERRIDE;
#ifndef QT_NO_SYSTEMTRAYICON
- QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const;
+ QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const Q_DECL_OVERRIDE;
#endif
- bool usePlatformNativeDialog(DialogType dialogType) const;
- QPlatformDialogHelper *createPlatformDialogHelper(DialogType dialogType) const;
+ bool usePlatformNativeDialog(DialogType dialogType) const Q_DECL_OVERRIDE;
+ QPlatformDialogHelper *createPlatformDialogHelper(DialogType dialogType) const Q_DECL_OVERRIDE;
- const QPalette *palette(Palette type = SystemPalette) const;
- const QFont *font(Font type = SystemFont) const;
- QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const;
+ const QPalette *palette(Palette type = SystemPalette) const Q_DECL_OVERRIDE;
+ const QFont *font(Font type = SystemFont) const Q_DECL_OVERRIDE;
+ QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const Q_DECL_OVERRIDE;
QPixmap fileIconPixmap(const QFileInfo &fileInfo,
const QSizeF &size,
- QPlatformTheme::IconOptions options = 0) const;
+ QPlatformTheme::IconOptions options = 0) const Q_DECL_OVERRIDE;
- QVariant themeHint(ThemeHint hint) const;
+ QVariant themeHint(ThemeHint hint) const Q_DECL_OVERRIDE;
QString standardButtonText(int button) const Q_DECL_OVERRIDE;
static const char *name;
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index d7509e378a..9f74828f2d 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -142,37 +142,37 @@ public:
QCocoaWindow(QWindow *tlw);
~QCocoaWindow();
- void setGeometry(const QRect &rect);
- QRect geometry() const;
+ void setGeometry(const QRect &rect) Q_DECL_OVERRIDE;
+ QRect geometry() const Q_DECL_OVERRIDE;
void setCocoaGeometry(const QRect &rect);
void clipChildWindows();
void clipWindow(const NSRect &clipRect);
void show(bool becauseOfAncestor = false);
void hide(bool becauseOfAncestor = false);
- void setVisible(bool visible);
- void setWindowFlags(Qt::WindowFlags flags);
- void setWindowState(Qt::WindowState state);
- void setWindowTitle(const QString &title);
- void setWindowFilePath(const QString &filePath);
- void setWindowIcon(const QIcon &icon);
- void setAlertState(bool enabled);
- bool isAlertState() const;
- void raise();
- void lower();
- bool isExposed() const;
+ void setVisible(bool visible) Q_DECL_OVERRIDE;
+ void setWindowFlags(Qt::WindowFlags flags) Q_DECL_OVERRIDE;
+ void setWindowState(Qt::WindowState state) Q_DECL_OVERRIDE;
+ void setWindowTitle(const QString &title) Q_DECL_OVERRIDE;
+ void setWindowFilePath(const QString &filePath) Q_DECL_OVERRIDE;
+ void setWindowIcon(const QIcon &icon) Q_DECL_OVERRIDE;
+ void setAlertState(bool enabled) Q_DECL_OVERRIDE;
+ bool isAlertState() const Q_DECL_OVERRIDE;
+ void raise() Q_DECL_OVERRIDE;
+ void lower() Q_DECL_OVERRIDE;
+ bool isExposed() const Q_DECL_OVERRIDE;
bool isOpaque() const;
- void propagateSizeHints();
- void setOpacity(qreal level);
- void setMask(const QRegion &region);
- bool setKeyboardGrabEnabled(bool grab);
- bool setMouseGrabEnabled(bool grab);
- QMargins frameMargins() const;
- QSurfaceFormat format() const;
+ void propagateSizeHints() Q_DECL_OVERRIDE;
+ void setOpacity(qreal level) Q_DECL_OVERRIDE;
+ void setMask(const QRegion &region) Q_DECL_OVERRIDE;
+ bool setKeyboardGrabEnabled(bool grab) Q_DECL_OVERRIDE;
+ bool setMouseGrabEnabled(bool grab) Q_DECL_OVERRIDE;
+ QMargins frameMargins() const Q_DECL_OVERRIDE;
+ QSurfaceFormat format() const Q_DECL_OVERRIDE;
- void requestActivateWindow();
+ void requestActivateWindow() Q_DECL_OVERRIDE;
- WId winId() const;
- void setParent(const QPlatformWindow *window);
+ WId winId() const Q_DECL_OVERRIDE;
+ void setParent(const QPlatformWindow *window) Q_DECL_OVERRIDE;
NSView *contentView() const;
void setContentView(NSView *contentView);
@@ -202,8 +202,8 @@ public:
bool setWindowModified(bool modified) Q_DECL_OVERRIDE;
- void setFrameStrutEventsEnabled(bool enabled);
- bool frameStrutEventsEnabled() const
+ void setFrameStrutEventsEnabled(bool enabled) Q_DECL_OVERRIDE;
+ bool frameStrutEventsEnabled() const Q_DECL_OVERRIDE
{ return m_frameStrutEventsEnabled; }
void setMenubar(QCocoaMenuBar *mb);
@@ -220,7 +220,7 @@ public:
void applyContentBorderThickness(NSWindow *window);
void updateNSToolbar();
- qreal devicePixelRatio() const;
+ qreal devicePixelRatio() const Q_DECL_OVERRIDE;
bool isWindowExposable();
void exposeWindow();
void obscureWindow();
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 37d9ada44c..e1d09c0400 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -749,7 +749,7 @@ void QCocoaWindow::setVisible(bool visible)
}
removeMonitor();
- if (window()->type() == Qt::Popup)
+ if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip)
QCocoaIntegration::instance()->popupWindowStack()->removeAll(this);
if (parentCocoaWindow && window()->type() == Qt::Popup) {
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index 32bc15d092..05ab8ae2c7 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -57,7 +57,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(QT_MANGLE_NAMESPACE(QNSViewMouseMoveHelper));
CGImageRef m_maskImage;
uchar *m_maskData;
bool m_shouldInvalidateWindowShadow;
- QWindow *m_window;
+ QPointer<QWindow> m_window;
QCocoaWindow *m_platformWindow;
NSTrackingArea *m_trackingArea;
Qt::MouseButtons m_buttons;
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index c71c9f0680..3caed80e38 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -613,7 +613,7 @@ QT_WARNING_POP
- (BOOL)becomeFirstResponder
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return NO;
if (!m_platformWindow->windowIsPopupType())
QWindowSystemInterface::handleWindowActivated([self topLevelWindow]);
@@ -624,7 +624,7 @@ QT_WARNING_POP
{
if (m_platformWindow->shouldRefuseKeyWindowAndFirstResponder())
return NO;
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return NO;
if ((m_window->flags() & Qt::ToolTip) == Qt::ToolTip)
return NO;
@@ -634,7 +634,7 @@ QT_WARNING_POP
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
Q_UNUSED(theEvent)
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return NO;
return YES;
}
@@ -773,7 +773,7 @@ QT_WARNING_POP
- (void)mouseDown:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super mouseDown:theEvent];
m_sendUpAsRightButton = false;
@@ -824,7 +824,7 @@ QT_WARNING_POP
- (void)mouseDragged:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super mouseDragged:theEvent];
if (!(m_buttons & (m_sendUpAsRightButton ? Qt::RightButton : Qt::LeftButton)))
qWarning("QNSView mouseDragged: Internal mouse button tracking invalid (missing Qt::LeftButton)");
@@ -833,7 +833,7 @@ QT_WARNING_POP
- (void)mouseUp:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super mouseUp:theEvent];
if (m_sendUpAsRightButton) {
m_buttons &= ~Qt::RightButton;
@@ -889,7 +889,7 @@ QT_WARNING_POP
- (void)mouseMovedImpl:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return;
QPointF windowPoint;
@@ -922,7 +922,7 @@ QT_WARNING_POP
Q_UNUSED(theEvent)
m_platformWindow->m_windowUnderMouse = true;
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return;
// Top-level windows generate enter events for sub-windows.
@@ -941,7 +941,7 @@ QT_WARNING_POP
Q_UNUSED(theEvent);
m_platformWindow->m_windowUnderMouse = false;
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return;
// Top-level windows generate leave events for sub-windows.
@@ -954,7 +954,7 @@ QT_WARNING_POP
- (void)rightMouseDown:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super rightMouseDown:theEvent];
m_buttons |= Qt::RightButton;
m_sendUpAsRightButton = true;
@@ -963,7 +963,7 @@ QT_WARNING_POP
- (void)rightMouseDragged:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super rightMouseDragged:theEvent];
if (!(m_buttons & Qt::RightButton))
qWarning("QNSView rightMouseDragged: Internal mouse button tracking invalid (missing Qt::RightButton)");
@@ -972,7 +972,7 @@ QT_WARNING_POP
- (void)rightMouseUp:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super rightMouseUp:theEvent];
m_buttons &= ~Qt::RightButton;
m_sendUpAsRightButton = false;
@@ -981,7 +981,7 @@ QT_WARNING_POP
- (void)otherMouseDown:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super otherMouseDown:theEvent];
m_buttons |= cocoaButton2QtButton([theEvent buttonNumber]);
[self handleMouseEvent:theEvent];
@@ -989,7 +989,7 @@ QT_WARNING_POP
- (void)otherMouseDragged:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super otherMouseDragged:theEvent];
if (!(m_buttons & ~(Qt::LeftButton | Qt::RightButton)))
qWarning("QNSView otherMouseDragged: Internal mouse button tracking invalid (missing Qt::MiddleButton or Qt::ExtraButton*)");
@@ -998,7 +998,7 @@ QT_WARNING_POP
- (void)otherMouseUp:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super otherMouseUp:theEvent];
m_buttons &= ~cocoaButton2QtButton([theEvent buttonNumber]);
[self handleMouseEvent:theEvent];
@@ -1077,7 +1077,7 @@ Q_GLOBAL_STATIC(QCocoaTabletDeviceDataHash, tabletDeviceDataHash)
- (void)tabletPoint: (NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super tabletPoint:theEvent];
[self handleTabletEvent: theEvent];
@@ -1125,7 +1125,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
- (void)tabletProximity: (NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super tabletProximity:theEvent];
ulong timestamp = [theEvent timestamp] * 1000;
@@ -1297,7 +1297,7 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
#ifndef QT_NO_WHEELEVENT
- (void)scrollWheel:(NSEvent *)theEvent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super scrollWheel:theEvent];
QPoint angleDelta;
@@ -1470,14 +1470,14 @@ static QTabletEvent::TabletDevice wacomTabletDevice(NSEvent *theEvent)
- (void)keyDown:(NSEvent *)nsevent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super keyDown:nsevent];
[self handleKeyEvent:nsevent eventType:int(QEvent::KeyPress)];
}
- (void)keyUp:(NSEvent *)nsevent
{
- if (m_window->flags() & Qt::WindowTransparentForInput)
+ if (m_window && (m_window->flags() & Qt::WindowTransparentForInput) )
return [super keyUp:nsevent];
[self handleKeyEvent:nsevent eventType:int(QEvent::KeyRelease)];
}
@@ -1918,8 +1918,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin
QGuiApplicationPrivate::modifier_buttons = [QNSView convertKeyModifiers: [[NSApp currentEvent] modifierFlags]];
QPlatformDragQtResponse response(false, Qt::IgnoreAction, QRect());
- if ([sender draggingSource] != nil) {
- QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag();
+ QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag();
+ if (nativeDrag->currentDrag()) {
+ // The drag was started from within the application
response = QWindowSystemInterface::handleDrag(target, nativeDrag->platformDropData(), mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed);
[self updateCursorFromDragResponse:response drag:nativeDrag];
} else {
@@ -1955,8 +1956,9 @@ static QPoint mapWindowCoordinates(QWindow *source, QWindow *target, QPoint poin
Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations([sender draggingSourceOperationMask]);
QPlatformDropQtResponse response(false, Qt::IgnoreAction);
- if ([sender draggingSource] != nil) {
- QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag();
+ QCocoaDrag* nativeDrag = QCocoaIntegration::instance()->drag();
+ if (nativeDrag->currentDrag()) {
+ // The drag was started from within the application
response = QWindowSystemInterface::handleDrop(target, nativeDrag->platformDropData(), mapWindowCoordinates(m_window, target, qt_windowPoint), qtAllowed);
} else {
QCocoaDropData mimeData([sender draggingPasteboard]);
diff --git a/src/plugins/platforms/cocoa/qpaintengine_mac.mm b/src/plugins/platforms/cocoa/qpaintengine_mac.mm
index 1131fb5fc6..a6b4456916 100644
--- a/src/plugins/platforms/cocoa/qpaintengine_mac.mm
+++ b/src/plugins/platforms/cocoa/qpaintengine_mac.mm
@@ -559,7 +559,7 @@ QCoreGraphicsPaintEngine::begin(QPaintDevice *pdev)
if ((w->windowType() == Qt::Desktop)) {
if (!unclipped)
- qWarning("QCoreGraphicsPaintEngine::begin: Does not support clipped desktop on Mac OS X");
+ qWarning("QCoreGraphicsPaintEngine::begin: Does not support clipped desktop on OS X");
// ## need to do [qt_mac_window_for(w) makeKeyAndOrderFront]; (need to rename the file)
} else if (unclipped) {
qWarning("QCoreGraphicsPaintEngine::begin: Does not support unclipped painting");