diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-04-22 13:50:18 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-23 18:57:45 +0200 |
commit | f2fa65e4bfa09da6e857cd8c333eec5b1a87d318 (patch) | |
tree | df9bf0f66ce42aae95a23e6cfa1267ad6172c221 /src/plugins | |
parent | 1f6ab6a661a468dc6b5fb2dc24b05148e052c858 (diff) |
Cocoa: Add setAlertState(), isAlertState(), beep() functions
Also, fix operator precedence error in QApplication::alert().
Change-Id: I140ccfba29638d24bc1c97f5f9a9611f66eb6b8f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.mm | 5 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.h | 5 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 18 |
4 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h index ca84312059..c344ebc42c 100644 --- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h +++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h @@ -65,6 +65,8 @@ public: NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource) Q_DECL_OVERRIDE; + Q_INVOKABLE void beep(); + static void *cglContextForContext(QOpenGLContext *context); static void *nsOpenGLContextForContext(QOpenGLContext* context); diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm index 84261ad273..daceb1e8ad 100644 --- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm +++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm @@ -124,6 +124,11 @@ QPlatformNativeInterface::NativeResourceForIntegrationFunction QCocoaNativeInter return 0; } +void QCocoaNativeInterface::beep() +{ + NSBeep(); +} + QPlatformPrinterSupport *QCocoaNativeInterface::createPlatformPrinterSupport() { #ifndef QT_NO_WIDGETS diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index e1de5f0add..ff7f99f96a 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -106,6 +106,8 @@ public: 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; @@ -190,6 +192,9 @@ public: // for QNSView bool m_frameStrutEventsEnabled; bool m_isExposed; int m_registerTouchCount; + + static const int NoAlertRequest; + NSInteger m_alertRequest; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index e726c1e4fd..e3cd791930 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -188,6 +188,8 @@ static bool isMouseEvent(NSEvent *ev) @end +const int QCocoaWindow::NoAlertRequest = -1; + QCocoaWindow::QCocoaWindow(QWindow *tlw) : QPlatformWindow(tlw) , m_nsWindow(0) @@ -202,6 +204,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw) , m_frameStrutEventsEnabled(false) , m_isExposed(false) , m_registerTouchCount(0) + , m_alertRequest(NoAlertRequest) { #ifdef QT_COCOA_ENABLE_WINDOW_DEBUG qDebug() << "QCocoaWindow::QCocoaWindow" << this; @@ -496,6 +499,21 @@ void QCocoaWindow::setWindowIcon(const QIcon &icon) } } +void QCocoaWindow::setAlertState(bool enabled) +{ + if (m_alertRequest == NoAlertRequest && enabled) { + m_alertRequest = [NSApp requestUserAttention:NSCriticalRequest]; + } else if (m_alertRequest != NoAlertRequest && !enabled) { + [NSApp cancelUserAttentionRequest:m_alertRequest]; + m_alertRequest = NoAlertRequest; + } +} + +bool QCocoaWindow::isAlertState() const +{ + return m_alertRequest != NoAlertRequest; +} + void QCocoaWindow::raise() { //qDebug() << "raise" << this; |