summaryrefslogtreecommitdiffstats
path: root/tests/manual/cocoa
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2012-06-10 22:59:24 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-09-24 21:27:51 +0200
commit8b7b6b6969ea36a42379ee9427d71b61b2e7a6a3 (patch)
treee29303e390c12c3ce11de19ac77fb2b95ec90020 /tests/manual/cocoa
parent99f2bdd28f72aed95f3a4a50374a93f79398094b (diff)
Add a manual test for QMacCocoaViewContainer
Added a test for QMacCocoaViewContainer which will enable the testing of the fixes coming Change-Id: I73e9540bc58411634f0da7d398eca4b7ffafba8e Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'tests/manual/cocoa')
-rw-r--r--tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.h50
-rw-r--r--tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.m120
-rw-r--r--tests/manual/cocoa/qmaccocoaviewcontainer/main.mm107
-rw-r--r--tests/manual/cocoa/qmaccocoaviewcontainer/qmaccocoaviewcontainer.pro9
4 files changed, 286 insertions, 0 deletions
diff --git a/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.h b/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.h
new file mode 100644
index 0000000000..86ab7ba6d2
--- /dev/null
+++ b/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of the test suite of the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+@interface TestMouseMovedNSView : NSView {
+ NSPoint mouseMovedPoint_;
+ BOOL wasAcceptingMouseEvents_;
+ NSTrackingRectTag trackingRect_;
+ NSTrackingArea* trackingArea_;
+}
+@end
diff --git a/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.m b/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.m
new file mode 100644
index 0000000000..5fe26785e4
--- /dev/null
+++ b/tests/manual/cocoa/qmaccocoaviewcontainer/TestMouseMovedNSView.m
@@ -0,0 +1,120 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of the test suite of the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+#import "TestMouseMovedNSView.h"
+
+@implementation TestMouseMovedNSView
+
+- (id)initWithFrame:(NSRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self)
+ mouseMovedPoint_ = NSMakePoint(50, 50);
+ return self;
+}
+
+- (void)viewDidMoveToWindow
+{
+ trackingArea_ = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
+ [self addTrackingArea:trackingArea_];
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow
+{
+ if ([self window] && trackingArea_)
+ [self removeTrackingArea:trackingArea_];
+}
+
+- (void)updateTrackingAreas
+{
+ [super updateTrackingAreas];
+ [self removeTrackingArea: trackingArea_];
+ trackingArea_ = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways) owner:self userInfo:nil];
+ [self addTrackingArea:trackingArea_];
+}
+
+- (BOOL)acceptsFirstResponder { return YES; }
+- (BOOL)becomeFirstResponder { return YES; }
+
+- (void)mouseEntered:(NSEvent *)theEvent
+{
+ wasAcceptingMouseEvents_ = [[self window] acceptsMouseMovedEvents];
+ [[self window] setAcceptsMouseMovedEvents:YES];
+ [[self window] makeFirstResponder:self];
+}
+
+- (void)mouseExited:(NSEvent *)theEvent
+{
+ [[self window] setAcceptsMouseMovedEvents:wasAcceptingMouseEvents_];
+ [self setNeedsDisplay:YES];
+ [self displayIfNeeded];
+}
+
+-(void)mouseMoved:(NSEvent *)pTheEvent
+{
+ mouseMovedPoint_ = [self convertPoint:[pTheEvent locationInWindow] fromView:nil];
+ [self setNeedsDisplay:YES];
+ [self displayIfNeeded];
+}
+
+- (void)drawRect:(NSRect)dirtyRect
+{
+ [[NSColor whiteColor] set];
+ NSRectFill(dirtyRect);
+
+ NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext currentContext];
+ CGContextRef cgContextRef = (CGContextRef) [nsGraphicsContext graphicsPort];
+
+ CGContextSetRGBStrokeColor(cgContextRef, 0, 0, 0, .5);
+ CGContextSetLineWidth(cgContextRef, 1.0);
+
+ CGContextBeginPath(cgContextRef);
+
+ CGContextMoveToPoint(cgContextRef, mouseMovedPoint_.x, 0);
+ CGContextAddLineToPoint(cgContextRef, mouseMovedPoint_.x, 1000);
+
+ CGContextMoveToPoint(cgContextRef, 0, mouseMovedPoint_.y);
+ CGContextAddLineToPoint(cgContextRef, 1000, mouseMovedPoint_.y);
+
+ CGContextDrawPath(cgContextRef, kCGPathStroke);
+}
+
+@end
diff --git a/tests/manual/cocoa/qmaccocoaviewcontainer/main.mm b/tests/manual/cocoa/qmaccocoaviewcontainer/main.mm
new file mode 100644
index 0000000000..911acfef10
--- /dev/null
+++ b/tests/manual/cocoa/qmaccocoaviewcontainer/main.mm
@@ -0,0 +1,107 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+ ** Contact: http://www.qt-project.org/legal
+ **
+ ** This file is part of the test suite of the Qt Toolkit.
+ **
+ ** $QT_BEGIN_LICENSE:LGPL$
+ ** Commercial License Usage
+ ** Licensees holding valid commercial Qt licenses may use this file in
+ ** accordance with the commercial license agreement provided with the
+ ** Software or, alternatively, in accordance with the terms contained in
+ ** a written agreement between you and Digia. For licensing terms and
+ ** conditions see http://qt.digia.com/licensing. For further information
+ ** use the contact form at http://qt.digia.com/contact-us.
+ **
+ ** GNU Lesser General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU Lesser
+ ** General Public License version 2.1 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.LGPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU Lesser General Public License version 2.1 requirements
+ ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+ **
+ ** In addition, as a special exception, Digia gives you certain additional
+ ** rights. These rights are described in the Digia Qt LGPL Exception
+ ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+ **
+ ** GNU General Public License Usage
+ ** Alternatively, this file may be used under the terms of the GNU
+ ** General Public License version 3.0 as published by the Free Software
+ ** Foundation and appearing in the file LICENSE.GPL included in the
+ ** packaging of this file. Please review the following information to
+ ** ensure the GNU General Public License version 3.0 requirements will be
+ ** met: http://www.gnu.org/copyleft/gpl.html.
+ **
+ **
+ ** $QT_END_LICENSE$
+ **
+ ****************************************************************************/
+
+
+#import "TestMouseMovedNSView.h"
+#include <QtGui>
+#include <QMacCocoaViewContainer>
+
+class MyWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ MyWidget(QMacCocoaViewContainer *c, QWidget *parent = 0) : QWidget(parent), container(c), currentlyVisible(true)
+ {
+ QVBoxLayout *vbox = new QVBoxLayout;
+ QLabel *label = new QLabel("1: Check that the cross hairs move when the mouse is moved over the widget\n"
+ "2: Check that clicking on change visibility causes the NSView to hide/show as appropriate\n"
+ "3: Check that clicking on resize makes the view be 200x200");
+ vbox->addWidget(label);
+ QPushButton *button = new QPushButton("Change visibility");
+ connect(button, SIGNAL(clicked()), this, SLOT(changeVisibility()));
+ vbox->addWidget(button);
+ button = new QPushButton("Change size");
+ connect(button, SIGNAL(clicked()), this, SLOT(changeSize()));
+ vbox->addWidget(button);
+ setLayout(vbox);
+ }
+public slots:
+ void changeVisibility()
+ {
+ currentlyVisible = !currentlyVisible;
+ if (!currentlyVisible)
+ container->hide();
+ else
+ container->show();
+ bool b = !([(NSView *)container->cocoaView() isHidden]);
+ QMessageBox::information(this, "Is visible", QString("NSView visibility: %1").arg(b));
+ }
+ void changeSize()
+ {
+ NSRect r = NSMakeRect(0, 0, 200, 200);
+ [(NSView *)container->cocoaView() setFrame:r];
+ }
+private:
+ QMacCocoaViewContainer *container;
+ bool currentlyVisible;
+};
+
+#include "main.moc"
+
+int main(int argc, char **argv)
+{
+ QApplication a(argc, argv);
+ QPoint pos(100,100);
+ QWidget w;
+ w.move(pos);
+ w.setWindowTitle("QMacCocoaViewContainer");
+ NSRect r = NSMakeRect(0, 0, 100, 100);
+ NSView *view = [[TestMouseMovedNSView alloc] initWithFrame: r];
+ QMacCocoaViewContainer *nativeChild = new QMacCocoaViewContainer(view, &w);
+ QVBoxLayout *vbox = new QVBoxLayout;
+ vbox->addWidget(nativeChild);
+ w.setLayout(vbox);
+ w.show();
+ MyWidget w2(nativeChild);
+ w2.show();
+ return a.exec();
+}
+
diff --git a/tests/manual/cocoa/qmaccocoaviewcontainer/qmaccocoaviewcontainer.pro b/tests/manual/cocoa/qmaccocoaviewcontainer/qmaccocoaviewcontainer.pro
new file mode 100644
index 0000000000..a7aa675d87
--- /dev/null
+++ b/tests/manual/cocoa/qmaccocoaviewcontainer/qmaccocoaviewcontainer.pro
@@ -0,0 +1,9 @@
+TEMPLATE = app
+TARGET = qmaccocoaviewcontainer
+DEPENDPATH += .
+INCLUDEPATH += .
+QT += widgets
+LIBS += -framework Cocoa
+# Input
+OBJECTIVE_SOURCES += main.mm TestMouseMovedNSView.m
+HEADERS += TestMouseMovedNSView.h