summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabriel de Dietrich <gabriel.dedietrich@digia.com>2013-04-22 13:50:18 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-23 18:57:45 +0200
commitf2fa65e4bfa09da6e857cd8c333eec5b1a87d318 (patch)
treedf9bf0f66ce42aae95a23e6cfa1267ad6172c221
parent1f6ab6a661a468dc6b5fb2dc24b05148e052c858 (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>
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.mm5
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h5
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm18
-rw-r--r--src/widgets/kernel/qapplication_qpa.cpp2
5 files changed, 31 insertions, 1 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;
diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp
index 6567ef5c2f..2761c84a8d 100644
--- a/src/widgets/kernel/qapplication_qpa.cpp
+++ b/src/widgets/kernel/qapplication_qpa.cpp
@@ -415,7 +415,7 @@ void QApplication::beep()
void QApplication::alert(QWidget *widget, int duration)
{
if (widget) {
- if (widget->window()->isActiveWindow()&& !widget->window()->windowState() & Qt::WindowMinimized)
+ if (widget->window()->isActiveWindow() && !(widget->window()->windowState() & Qt::WindowMinimized))
return;
if (QWindow *window= QApplicationPrivate::windowForWidget(widget))
window->alert(duration);