reflexion 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.doc/ext/reflex/application.cpp +35 -76
- data/.doc/ext/reflex/defs.cpp +8 -0
- data/.doc/ext/reflex/key.cpp +38 -43
- data/.doc/ext/reflex/native.cpp +6 -4
- data/.doc/ext/reflex/points.cpp +47 -52
- data/.doc/ext/reflex/reflex.cpp +12 -13
- data/.doc/ext/reflex/view.cpp +242 -0
- data/.doc/ext/reflex/window.cpp +87 -178
- data/.gitignore +14 -0
- data/Rakefile +6 -31
- data/VERSION +1 -1
- data/examples/hello/.gitignore +2 -0
- data/examples/ruby/app.rb +2 -2
- data/examples/ruby/checker.rb +3 -3
- data/examples/ruby/fps.rb +14 -14
- data/examples/ruby/grid.rb +65 -0
- data/examples/ruby/hello.rb +19 -7
- data/examples/ruby/key.rb +4 -4
- data/examples/ruby/shapes.rb +6 -6
- data/examples/ruby/text.rb +20 -17
- data/examples/ruby/views.rb +88 -0
- data/examples/ruby/visuals.rb +27 -0
- data/ext/reflex/application.cpp +36 -76
- data/ext/reflex/defs.cpp +8 -0
- data/ext/reflex/defs.h +1 -18
- data/ext/reflex/extconf.rb +16 -8
- data/ext/reflex/key.cpp +39 -43
- data/ext/reflex/native.cpp +6 -4
- data/ext/reflex/points.cpp +48 -52
- data/ext/reflex/reflex.cpp +12 -13
- data/ext/reflex/view.cpp +260 -0
- data/ext/reflex/window.cpp +89 -178
- data/include/reflex/application.h +14 -7
- data/include/reflex/defs.h +8 -6
- data/include/reflex/exception.h +1 -1
- data/include/reflex/ruby/application.h +31 -10
- data/include/reflex/ruby/key.h +3 -3
- data/include/reflex/ruby/points.h +3 -3
- data/include/reflex/ruby/view.h +106 -0
- data/include/reflex/ruby/window.h +83 -12
- data/include/reflex/ruby.h +3 -2
- data/include/reflex/view.h +103 -0
- data/include/reflex/window.h +43 -18
- data/include/reflex.h +2 -1
- data/lib/reflex/application.rb +8 -7
- data/lib/reflex/autoinit.rb +1 -1
- data/lib/reflex/bitmap.rb +13 -0
- data/lib/reflex/bounds.rb +2 -122
- data/lib/reflex/ext.rb +5 -0
- data/lib/reflex/helpers.rb +36 -31
- data/lib/reflex/image.rb +13 -0
- data/lib/reflex/module.rb +9 -2
- data/lib/reflex/painter.rb +13 -0
- data/lib/reflex/point.rb +3 -59
- data/lib/reflex/reflex.rb +1 -1
- data/lib/reflex/texture.rb +13 -0
- data/lib/reflex/view.rb +33 -0
- data/lib/reflex/visuals/string.rb +53 -0
- data/lib/reflex/window.rb +18 -43
- data/lib/reflex.rb +3 -3
- data/reflex.gemspec +16 -42
- data/src/cocoa/application.mm +17 -23
- data/src/cocoa/applicationdata.h +3 -9
- data/src/cocoa/cocoaapplication.h +6 -4
- data/src/cocoa/cocoaapplication.mm +61 -19
- data/src/cocoa/cocoawindow.h +7 -5
- data/src/cocoa/cocoawindow.mm +109 -50
- data/src/cocoa/defs.mm +5 -2
- data/src/cocoa/window.mm +71 -41
- data/src/cocoa/windowdata.h +14 -9
- data/src/defs.cpp +1 -1
- data/src/exception.cpp +3 -18
- data/src/helpers.h +12 -0
- data/src/reflex.cpp +11 -5
- data/src/view.cpp +326 -0
- data/src/win32/application.cpp +7 -8
- data/src/win32/defs.h +1 -1
- data/src/win32/window.cpp +137 -41
- data/src/window.cpp +38 -1
- data/test/helpers.rb +2 -5
- data/test/test_application.rb +17 -0
- data/test/test_reflex.rb +4 -2
- data/test/test_view.rb +74 -0
- data/test/test_window.rb +33 -2
- metadata +157 -97
- data/include/reflex/helpers.h +0 -32
- data/test/test_bounds.rb +0 -163
- data/test/test_point.rb +0 -81
data/src/cocoa/application.mm
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
#include "reflex/application.h"
|
3
3
|
|
4
4
|
|
5
|
+
#include <assert.h>
|
5
6
|
#import <Cocoa/Cocoa.h>
|
6
7
|
#include <reflex/exception.h>
|
7
8
|
#include "applicationdata.h"
|
@@ -24,25 +25,14 @@ namespace Reflex
|
|
24
25
|
|
25
26
|
Application::Application ()
|
26
27
|
{
|
27
|
-
if (instance)
|
28
|
-
|
28
|
+
if (instance) reflex_error("multiple application instance.");
|
29
29
|
instance = this;
|
30
30
|
|
31
|
-
|
32
|
-
self->self_ = NSApp ? [NSApp retain] : nil;
|
33
|
-
if (self->self_)
|
34
|
-
[self->self_ setApplicationData: self];
|
31
|
+
if (NSApp) [NSApp bind: this];
|
35
32
|
}
|
36
33
|
|
37
34
|
Application::~Application ()
|
38
35
|
{
|
39
|
-
if (self->self_)
|
40
|
-
{
|
41
|
-
[self->self_ release];
|
42
|
-
self->self_ = nil;
|
43
|
-
}
|
44
|
-
self->this_ = NULL;
|
45
|
-
|
46
36
|
instance = NULL;
|
47
37
|
}
|
48
38
|
|
@@ -50,7 +40,8 @@ namespace Reflex
|
|
50
40
|
Application::run ()
|
51
41
|
{
|
52
42
|
if (!*this) return false;
|
53
|
-
|
43
|
+
|
44
|
+
[self->cocoa run];
|
54
45
|
return true;
|
55
46
|
}
|
56
47
|
|
@@ -58,7 +49,8 @@ namespace Reflex
|
|
58
49
|
Application::quit ()
|
59
50
|
{
|
60
51
|
if (!*this) return false;
|
61
|
-
|
52
|
+
|
53
|
+
[self->cocoa terminate: nil];
|
62
54
|
return true;
|
63
55
|
}
|
64
56
|
|
@@ -72,15 +64,8 @@ namespace Reflex
|
|
72
64
|
Application::about ()
|
73
65
|
{
|
74
66
|
if (!*this) return false;
|
75
|
-
[self->self_ orderFrontStandardAboutPanel: nil];
|
76
|
-
return true;
|
77
|
-
}
|
78
67
|
|
79
|
-
|
80
|
-
Application::get_name (String* name) const
|
81
|
-
{
|
82
|
-
if (!*this || !name) return false;
|
83
|
-
*name = self->name;
|
68
|
+
[self->cocoa orderFrontStandardAboutPanel: nil];
|
84
69
|
return true;
|
85
70
|
}
|
86
71
|
|
@@ -88,10 +73,19 @@ namespace Reflex
|
|
88
73
|
Application::set_name (const char* name)
|
89
74
|
{
|
90
75
|
if (!*this || !name) return false;
|
76
|
+
|
91
77
|
self->name = name;
|
92
78
|
return true;
|
93
79
|
}
|
94
80
|
|
81
|
+
const char*
|
82
|
+
Application::name () const
|
83
|
+
{
|
84
|
+
if (!*this) return NULL;
|
85
|
+
|
86
|
+
return self->name.c_str();
|
87
|
+
}
|
88
|
+
|
95
89
|
Application::operator bool () const
|
96
90
|
{
|
97
91
|
return self && *self;
|
data/src/cocoa/applicationdata.h
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
#define __REFLEX_COCOA_APPLICATIONDATA_H__
|
5
5
|
|
6
6
|
|
7
|
-
#include <boost/shared_ptr.hpp>
|
8
7
|
#include <reflex/application.h>
|
9
8
|
|
10
9
|
|
@@ -18,20 +17,18 @@ namespace Reflex
|
|
18
17
|
struct Application::Data
|
19
18
|
{
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
CocoaApplication* self_;
|
20
|
+
CocoaApplication* cocoa;
|
24
21
|
|
25
22
|
String name;
|
26
23
|
|
27
24
|
Data ()
|
28
|
-
:
|
25
|
+
: cocoa(nil)
|
29
26
|
{
|
30
27
|
}
|
31
28
|
|
32
29
|
operator bool () const
|
33
30
|
{
|
34
|
-
return
|
31
|
+
return cocoa;
|
35
32
|
}
|
36
33
|
|
37
34
|
bool operator ! () const
|
@@ -42,9 +39,6 @@ namespace Reflex
|
|
42
39
|
};// Application::Data
|
43
40
|
|
44
41
|
|
45
|
-
typedef boost::shared_ptr<Reflex::Application::Data> ApplicationData;
|
46
|
-
|
47
|
-
|
48
42
|
}// Reflex
|
49
43
|
|
50
44
|
|
@@ -1,19 +1,21 @@
|
|
1
1
|
// -*- objc -*-
|
2
2
|
#import <AppKit/NSApplication.h>
|
3
|
-
#include "
|
3
|
+
#include "reflex/application.h"
|
4
4
|
|
5
5
|
|
6
6
|
@interface CocoaApplication : NSApplication <NSApplicationDelegate>
|
7
7
|
|
8
8
|
{
|
9
9
|
@private
|
10
|
-
Reflex::
|
10
|
+
Reflex::Application::Ref* pref;
|
11
11
|
}
|
12
12
|
|
13
|
+
- (BOOL) bind: (Reflex::Application*) instance;
|
14
|
+
|
15
|
+
- (void) unbind;
|
16
|
+
|
13
17
|
- (void) about;
|
14
18
|
|
15
19
|
- (void) quit;
|
16
20
|
|
17
|
-
- (BOOL) setApplicationData: (Reflex::ApplicationData) data;
|
18
|
-
|
19
21
|
@end// CocoaApplication
|
@@ -2,8 +2,10 @@
|
|
2
2
|
#import "cocoaapplication.h"
|
3
3
|
|
4
4
|
|
5
|
+
#include <assert.h>
|
5
6
|
#import <Cocoa/Cocoa.h>
|
6
7
|
#include <reflex/reflex.h>
|
8
|
+
#include "applicationdata.h"
|
7
9
|
|
8
10
|
|
9
11
|
@implementation CocoaApplication
|
@@ -17,34 +19,84 @@
|
|
17
19
|
[self setActivationPolicy: NSApplicationActivationPolicyRegular];
|
18
20
|
[self activateIgnoringOtherApps: YES];
|
19
21
|
|
22
|
+
pref = new Reflex::Application::Ref;
|
23
|
+
|
20
24
|
return self;
|
21
25
|
}
|
22
26
|
|
23
|
-
- (
|
27
|
+
- (void) dealloc
|
28
|
+
{
|
29
|
+
[self unbind];
|
30
|
+
delete pref;
|
31
|
+
|
32
|
+
[super dealloc];
|
33
|
+
}
|
34
|
+
|
35
|
+
- (BOOL) bind: (Reflex::Application*) instance
|
24
36
|
{
|
25
|
-
if (
|
26
|
-
|
37
|
+
if (instance && instance->self->cocoa)
|
38
|
+
return NO;
|
39
|
+
|
40
|
+
[self unbind];
|
41
|
+
|
42
|
+
assert(pref);
|
43
|
+
Reflex::Application::Ref& ref = *pref;
|
44
|
+
|
45
|
+
ref = instance;
|
46
|
+
if (ref) ref->self->cocoa = [self retain];
|
27
47
|
return YES;
|
28
48
|
}
|
29
49
|
|
50
|
+
- (void) unbind
|
51
|
+
{
|
52
|
+
assert(pref);
|
53
|
+
Reflex::Application::Ref& ref = *pref;
|
54
|
+
if (!ref) return;
|
55
|
+
|
56
|
+
if (ref->self->cocoa) [ref->self->cocoa release];
|
57
|
+
ref->self->cocoa = nil;
|
58
|
+
ref.reset();
|
59
|
+
}
|
60
|
+
|
30
61
|
- (void) quit
|
31
62
|
{
|
32
|
-
|
33
|
-
|
63
|
+
assert(pref);
|
64
|
+
|
65
|
+
if (*pref)
|
66
|
+
(*pref)->quit();
|
34
67
|
else
|
35
68
|
Reflex::quit();
|
36
69
|
}
|
37
70
|
|
38
71
|
- (void) about
|
39
72
|
{
|
40
|
-
|
41
|
-
|
73
|
+
assert(pref);
|
74
|
+
|
75
|
+
if (*pref)
|
76
|
+
(*pref)->about();
|
42
77
|
else
|
43
78
|
[self orderFrontStandardAboutPanel: nil];
|
44
79
|
}
|
45
80
|
|
81
|
+
- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication*) app
|
82
|
+
{
|
83
|
+
return YES;
|
84
|
+
}
|
85
|
+
|
86
|
+
- (void) applicationDidFinishLaunching: (NSNotification*) notification
|
87
|
+
{
|
88
|
+
[self setupMenu];
|
89
|
+
}
|
90
|
+
|
91
|
+
- (void) applicationWillTerminate: (NSNotification*) notification
|
92
|
+
{
|
93
|
+
[self unbind];
|
94
|
+
}
|
95
|
+
|
46
96
|
- (BOOL) setupApplicationMenu: (NSMenu*) parent
|
47
97
|
{
|
98
|
+
assert(pref);
|
99
|
+
|
48
100
|
if (!parent) return NO;
|
49
101
|
|
50
102
|
NSMenu* menu = [[[NSMenu alloc]
|
@@ -53,8 +105,8 @@
|
|
53
105
|
if ([self respondsToSelector: @selector(setAppleMenu:)])
|
54
106
|
[self performSelector: @selector(setAppleMenu:) withObject: menu];
|
55
107
|
|
56
|
-
NSString* name = !
|
57
|
-
[NSString stringWithUTF8String:
|
108
|
+
NSString* name = !(*pref)->self->name.empty() ?
|
109
|
+
[NSString stringWithUTF8String: (*pref)->self->name.c_str()] : @"";
|
58
110
|
if ([name length] > 0)
|
59
111
|
name = [@" " stringByAppendingString: name];
|
60
112
|
|
@@ -167,14 +219,4 @@
|
|
167
219
|
return YES;
|
168
220
|
}
|
169
221
|
|
170
|
-
- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication*) app
|
171
|
-
{
|
172
|
-
return YES;
|
173
|
-
}
|
174
|
-
|
175
|
-
- (void) applicationDidFinishLaunching: (NSNotification*) notification
|
176
|
-
{
|
177
|
-
[self setupMenu];
|
178
|
-
}
|
179
|
-
|
180
222
|
@end// CocoaApplication
|
data/src/cocoa/cocoawindow.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
// -*- objc -*-
|
2
2
|
#import <AppKit/NSWindow.h>
|
3
|
-
#include "
|
3
|
+
#include "reflex/window.h"
|
4
4
|
|
5
5
|
|
6
6
|
@class OpenGLView;
|
@@ -10,12 +10,14 @@
|
|
10
10
|
|
11
11
|
{
|
12
12
|
@private
|
13
|
-
Reflex::
|
13
|
+
Reflex::Window::Ref* pref;
|
14
14
|
OpenGLView* view;
|
15
15
|
NSTimer* timer;
|
16
16
|
}
|
17
17
|
|
18
|
-
- (
|
18
|
+
- (BOOL) bind: (Reflex::Window*) instance;
|
19
|
+
|
20
|
+
- (void) unbind;
|
19
21
|
|
20
22
|
- (void) setupContentView;
|
21
23
|
|
@@ -27,8 +29,6 @@
|
|
27
29
|
|
28
30
|
- (void) draw;
|
29
31
|
|
30
|
-
- (void) redraw;
|
31
|
-
|
32
32
|
- (void) keyDown: (NSEvent*) event;
|
33
33
|
|
34
34
|
- (void) keyUp: (NSEvent*) event;
|
@@ -41,4 +41,6 @@
|
|
41
41
|
|
42
42
|
- (void) mouseDragged: (NSEvent*) event;
|
43
43
|
|
44
|
+
+ (NSRect) frameRectForContentRect: (NSRect) contentRect;
|
45
|
+
|
44
46
|
@end// CocoaWindow
|
data/src/cocoa/cocoawindow.mm
CHANGED
@@ -2,32 +2,35 @@
|
|
2
2
|
#import "cocoawindow.h"
|
3
3
|
|
4
4
|
|
5
|
+
#include <assert.h>
|
5
6
|
#import <Cocoa/Cocoa.h>
|
6
|
-
#
|
7
|
-
|
7
|
+
#include <rays/bounds.h>
|
8
8
|
#include <reflex/window.h>
|
9
9
|
#include "defs.h"
|
10
|
+
#include "windowdata.h"
|
11
|
+
#import "openglview.h"
|
12
|
+
|
13
|
+
|
14
|
+
static const NSUInteger WINDOW_STYLE_MASK =
|
15
|
+
NSTitledWindowMask |
|
16
|
+
NSClosableWindowMask |
|
17
|
+
NSMiniaturizableWindowMask |
|
18
|
+
NSResizableWindowMask |
|
19
|
+
0;//NSTexturedBackgroundWindowMask
|
10
20
|
|
11
21
|
|
12
22
|
@implementation CocoaWindow
|
13
23
|
|
14
|
-
- (id)
|
24
|
+
- (id) init
|
15
25
|
{
|
16
|
-
NSRect frame = NSMakeRect(0, 0, 0, 0);
|
17
|
-
|
18
26
|
self = [super
|
19
27
|
initWithContentRect: NSMakeRect(0, 0, 0, 0)
|
20
|
-
styleMask:
|
21
|
-
NSTitledWindowMask |
|
22
|
-
NSClosableWindowMask |
|
23
|
-
NSMiniaturizableWindowMask |
|
24
|
-
NSResizableWindowMask |
|
25
|
-
0//NSTexturedBackgroundWindowMask
|
28
|
+
styleMask: WINDOW_STYLE_MASK
|
26
29
|
backing: NSBackingStoreBuffered
|
27
30
|
defer: NO];
|
28
31
|
if (!self) return nil;
|
29
32
|
|
30
|
-
|
33
|
+
pref = new Reflex::Window::Ref;
|
31
34
|
view = nil;
|
32
35
|
timer = nil;
|
33
36
|
|
@@ -43,11 +46,41 @@
|
|
43
46
|
- (void) dealloc
|
44
47
|
{
|
45
48
|
[self stopTimer];
|
46
|
-
|
49
|
+
|
50
|
+
if (view) [view release];
|
51
|
+
|
52
|
+
[self unbind];
|
53
|
+
delete pref;
|
47
54
|
|
48
55
|
[super dealloc];
|
49
56
|
}
|
50
57
|
|
58
|
+
- (BOOL) bind: (Reflex::Window*) instance
|
59
|
+
{
|
60
|
+
if (instance && instance->self->cocoa)
|
61
|
+
return NO;
|
62
|
+
|
63
|
+
[self unbind];
|
64
|
+
|
65
|
+
assert(pref);
|
66
|
+
Reflex::Window::Ref& ref = *pref;
|
67
|
+
|
68
|
+
ref = instance;
|
69
|
+
if (ref) ref->self->cocoa = [self retain];
|
70
|
+
return YES;
|
71
|
+
}
|
72
|
+
|
73
|
+
- (void) unbind
|
74
|
+
{
|
75
|
+
assert(pref);
|
76
|
+
Reflex::Window::Ref& ref = *pref;
|
77
|
+
if (!ref) return;
|
78
|
+
|
79
|
+
if (ref->self->cocoa) [ref->self->cocoa release];
|
80
|
+
ref->self->cocoa = nil;
|
81
|
+
ref.reset();
|
82
|
+
}
|
83
|
+
|
51
84
|
- (void) setupContentView
|
52
85
|
{
|
53
86
|
NSRect rect = [self contentRectForFrameRect: [self frame]];
|
@@ -78,94 +111,120 @@
|
|
78
111
|
|
79
112
|
- (void) stopTimer
|
80
113
|
{
|
81
|
-
if (timer)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
timer = nil;
|
86
|
-
}
|
114
|
+
if (!timer) return;
|
115
|
+
|
116
|
+
[timer invalidate];
|
117
|
+
timer = nil;
|
87
118
|
}
|
88
119
|
|
89
120
|
- (void) update: (NSTimer*) t
|
90
121
|
{
|
91
|
-
|
92
|
-
|
122
|
+
assert(pref);
|
123
|
+
if (!*pref) return;
|
124
|
+
|
125
|
+
(*pref)->update(1);
|
126
|
+
|
127
|
+
if ((*pref)->self->redraw)
|
128
|
+
{
|
129
|
+
[self display];
|
130
|
+
(*pref)->self->redraw = false;
|
131
|
+
}
|
93
132
|
}
|
94
133
|
|
95
134
|
- (void) draw
|
96
135
|
{
|
97
|
-
|
98
|
-
|
99
|
-
}
|
136
|
+
assert(pref);
|
137
|
+
if (!*pref) return;
|
100
138
|
|
101
|
-
|
102
|
-
{
|
103
|
-
[self display];
|
139
|
+
(*pref)->draw();
|
104
140
|
}
|
105
141
|
|
106
142
|
- (BOOL) windowShouldClose: (id) sender
|
107
143
|
{
|
108
|
-
|
109
|
-
|
144
|
+
assert(pref);
|
145
|
+
if (!*pref) return YES;
|
146
|
+
|
147
|
+
(*pref)->close();
|
110
148
|
return NO;
|
111
149
|
}
|
112
150
|
|
113
151
|
- (void) windowWillClose: (NSNotification*) notification
|
114
152
|
{
|
115
153
|
[self stopTimer];
|
116
|
-
|
154
|
+
[self unbind];
|
117
155
|
}
|
118
156
|
|
119
157
|
- (void) windowDidMove: (NSNotification*) notification
|
120
158
|
{
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
159
|
+
assert(pref);
|
160
|
+
if (!*pref) return;
|
161
|
+
|
162
|
+
const Reflex::Bounds& b = (*pref)->bounds();
|
163
|
+
(*pref)->moved(b.x, b.y);
|
125
164
|
}
|
126
165
|
|
127
166
|
- (void) windowDidResize: (NSNotification*) notification
|
128
167
|
{
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
168
|
+
assert(pref);
|
169
|
+
if (!*pref) return;
|
170
|
+
|
171
|
+
const Reflex::Bounds& b = (*pref)->bounds();
|
172
|
+
(*pref)->resized(b.width, b.height);
|
133
173
|
}
|
134
174
|
|
135
175
|
- (void) keyDown: (NSEvent*) event
|
136
176
|
{
|
137
|
-
|
138
|
-
|
177
|
+
assert(pref);
|
178
|
+
if (!*pref) return;
|
179
|
+
|
180
|
+
(*pref)->key_down(Reflex::CocoaKey(event));
|
139
181
|
}
|
140
182
|
|
141
183
|
- (void) keyUp: (NSEvent*) event
|
142
184
|
{
|
143
|
-
|
144
|
-
|
185
|
+
assert(pref);
|
186
|
+
if (!*pref) return;
|
187
|
+
|
188
|
+
(*pref)->key_up(Reflex::CocoaKey(event));
|
145
189
|
}
|
146
190
|
|
147
191
|
- (void) mouseDown: (NSEvent*) event
|
148
192
|
{
|
149
|
-
|
150
|
-
|
193
|
+
assert(pref);
|
194
|
+
if (!*pref) return;
|
195
|
+
|
196
|
+
(*pref)->points_down(Reflex::CocoaPoints(event, view));
|
151
197
|
}
|
152
198
|
|
153
199
|
- (void) mouseUp: (NSEvent*) event
|
154
200
|
{
|
155
|
-
|
156
|
-
|
201
|
+
assert(pref);
|
202
|
+
if (!*pref) return;
|
203
|
+
|
204
|
+
(*pref)->points_up(Reflex::CocoaPoints(event, view));
|
157
205
|
}
|
158
206
|
|
159
207
|
- (void) mouseMoved: (NSEvent*) event
|
160
208
|
{
|
161
|
-
|
162
|
-
|
209
|
+
assert(pref);
|
210
|
+
if (!*pref) return;
|
211
|
+
|
212
|
+
(*pref)->points_moved(Reflex::CocoaPoints(event, view));
|
163
213
|
}
|
164
214
|
|
165
215
|
- (void) mouseDragged: (NSEvent*) event
|
166
216
|
{
|
167
|
-
|
168
|
-
|
217
|
+
assert(pref);
|
218
|
+
if (!*pref) return;
|
219
|
+
|
220
|
+
(*pref)->points_moved(Reflex::CocoaPoints(event, view));
|
221
|
+
}
|
222
|
+
|
223
|
+
+ (NSRect) frameRectForContentRect: (NSRect) contentRect
|
224
|
+
{
|
225
|
+
return [NSWindow
|
226
|
+
frameRectForContentRect: contentRect
|
227
|
+
styleMask: WINDOW_STYLE_MASK];
|
169
228
|
}
|
170
229
|
|
171
230
|
@end// CocoaWindow
|
data/src/cocoa/defs.mm
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
// -*- c++ -*-
|
1
2
|
#include "defs.h"
|
2
3
|
|
3
4
|
|
@@ -71,13 +72,15 @@ namespace Reflex
|
|
71
72
|
|
72
73
|
CocoaPoints::CocoaPoints (NSEvent* e, NSView* view)
|
73
74
|
: Points(
|
74
|
-
get_point_type(e), (coord) 0, (coord) 0,
|
75
|
+
get_point_type(e), (coord) 0, (coord) 0,
|
76
|
+
get_modifiers(e), (uint) [e clickCount],
|
75
77
|
[e type] == NSLeftMouseDragged || [e type] == NSRightMouseDragged)
|
76
78
|
{
|
77
79
|
NSPoint p = [e locationInWindow];
|
80
|
+
NSRect b = [view bounds];
|
78
81
|
if (view) p = [view convertPoint: p fromView: nil];
|
79
82
|
x = p.x;
|
80
|
-
y = p.y;
|
83
|
+
y = b.size.height - p.y;
|
81
84
|
}
|
82
85
|
|
83
86
|
|