reflexion 0.2 → 0.2.1

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.
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
  #include <assert.h>
6
- #include <rays/opengl.h>
6
+ #include <rays/rays.h>
7
7
  #include "reflex/exception.h"
8
8
  #include "../view.h"
9
9
  #include "../pointer.h"
@@ -136,8 +136,6 @@ ReflexViewController_get_show_fun ()
136
136
  Reflex::Window *pwindow, *ptr_for_rebind;
137
137
  int update_count;
138
138
  int touching_count;
139
- Reflex::Pointer::ID pointer_id;
140
- Reflex::PrevPointerList prev_pointers;
141
139
  }
142
140
 
143
141
  - (id) init
@@ -149,7 +147,6 @@ ReflexViewController_get_show_fun ()
149
147
  ptr_for_rebind = NULL;
150
148
  update_count = 0;
151
149
  touching_count = 0;
152
- pointer_id = 0;
153
150
 
154
151
  return self;
155
152
  }
@@ -272,9 +269,8 @@ ReflexViewController_get_show_fun ()
272
269
  ReflexView* view = self.reflexView;
273
270
  if (!view) return;
274
271
 
275
- EAGLContext* context = view.context;
276
- if (context && context == [EAGLContext currentContext])
277
- [EAGLContext setCurrentContext: (EAGLContext*) Rays::get_offscreen_context()];
272
+ if (view.context && view.context == [EAGLContext currentContext])
273
+ Rays::activate_offscreen_context();
278
274
 
279
275
  view.reflexViewController = nil;
280
276
  [view removeFromSuperview];
@@ -421,23 +417,22 @@ ReflexViewController_get_show_fun ()
421
417
  win->self->prev_position = b.position();
422
418
  win->self->prev_size = b.size();
423
419
 
424
- if (dpos != 0 || dsize != 0)
420
+ if (dpos == 0 && dsize == 0) return;
421
+
422
+ Reflex::FrameEvent e(b, dpos.x, dpos.y, 0, dsize.x, dsize.y, 0);
423
+ if (dpos != 0) win->on_move(&e);
424
+ if (dsize != 0)
425
425
  {
426
- Reflex::FrameEvent e(b, dpos.x, dpos.y, 0, dsize.x, dsize.y, 0);
427
- if (dpos != 0) win->on_move(&e);
428
- if (dsize != 0)
429
- {
430
- Rays::Bounds b = win->frame();
431
- b.move_to(0, 0);
426
+ Rays::Bounds b = win->frame();
427
+ b.move_to(0, 0);
432
428
 
433
- if (win->painter())
434
- win->painter()->canvas(b, win->painter()->pixel_density());
429
+ if (win->painter())
430
+ win->painter()->canvas(b, win->painter()->pixel_density());
435
431
 
436
- if (win->root())
437
- View_set_frame(win->root(), b);
432
+ if (win->root())
433
+ View_set_frame(win->root(), b);
438
434
 
439
- win->on_resize(&e);
440
- }
435
+ win->on_resize(&e);
441
436
  }
442
437
  }
443
438
 
@@ -481,12 +476,10 @@ ReflexViewController_get_show_fun ()
481
476
  Reflex::Window* win = self.window;
482
477
  if (!win) return;
483
478
 
484
- Reflex::NativePointerEvent e(touches, event, self.reflexView, &pointer_id);
485
- [self addToPrevPointers: e];
479
+ Reflex::NativePointerEvent e(touches, event, self.reflexView);
480
+ Window_call_pointer_event(win, &e);
486
481
 
487
482
  touching_count += e.size();
488
-
489
- Window_call_pointer_event(win, &e);
490
483
  }
491
484
 
492
485
  - (void) touchesEnded: (NSSet*) touches withEvent: (UIEvent*) event
@@ -494,15 +487,14 @@ ReflexViewController_get_show_fun ()
494
487
  Reflex::Window* win = self.window;
495
488
  if (!win) return;
496
489
 
497
- Reflex::NativePointerEvent e(touches, event, self.reflexView, &prev_pointers);
490
+ Reflex::NativePointerEvent e(touches, event, self.reflexView);
491
+ Window_call_pointer_event(win, &e);
498
492
 
499
493
  touching_count -= e.size();
500
494
  if (touching_count == 0)
501
- prev_pointers.clear();
495
+ win->self->prev_pointers.clear();
502
496
  else if (touching_count < 0)
503
497
  Reflex::invalid_state_error(__FILE__, __LINE__);
504
-
505
- Window_call_pointer_event(win, &e);
506
498
  }
507
499
 
508
500
  - (void) touchesCancelled: (NSSet*) touches withEvent: (UIEvent*) event
@@ -515,23 +507,8 @@ ReflexViewController_get_show_fun ()
515
507
  Reflex::Window* win = self.window;
516
508
  if (!win) return;
517
509
 
518
- Reflex::NativePointerEvent e(touches, event, self.reflexView, &prev_pointers);
519
- [self addToPrevPointers: e];
520
-
510
+ Reflex::NativePointerEvent e(touches, event, self.reflexView);
521
511
  Window_call_pointer_event(win, &e);
522
512
  }
523
513
 
524
- - (void) addToPrevPointers: (const Reflex::PointerEvent&) event
525
- {
526
- size_t size = event.size();
527
- for (size_t i = 0; i < size; ++i)
528
- {
529
- prev_pointers.emplace_back(event[i]);
530
- if (prev_pointers.size() > 10)
531
- Reflex::invalid_state_error(__FILE__, __LINE__);
532
-
533
- Reflex::Pointer_set_prev(&prev_pointers.back(), NULL);
534
- }
535
- }
536
-
537
514
  @end// ReflexViewController
data/src/ios/window.mm CHANGED
@@ -142,6 +142,25 @@ namespace Reflex
142
142
  return Bounds(b.origin.x, b.origin.y, b.size.width, b.size.height);
143
143
  }
144
144
 
145
+ static UIScreen*
146
+ get_screen (const Window& window)
147
+ {
148
+ UIWindow* w = get_vc(&window).view.window;
149
+ if (@available(iOS 13.0, *))
150
+ return w.windowScene.screen;
151
+ else
152
+ return w.screen;
153
+ }
154
+
155
+ Screen
156
+ Window_get_screen (const Window& window)
157
+ {
158
+ Screen s;
159
+ UIScreen* screen = get_screen(window);
160
+ Screen_initialize(&s, screen ? screen : UIScreen.mainScreen);
161
+ return s;
162
+ }
163
+
145
164
  static UIInterfaceOrientationMask g_orientation_mask =
146
165
  UIInterfaceOrientationMaskAll;
147
166
 
@@ -246,25 +265,6 @@ namespace Reflex
246
265
  flags_to_orientation_mask(flags & (Window::FLAG_PORTRAIT | Window::FLAG_LANDSCAPE)));
247
266
  }
248
267
 
249
- static UIScreen*
250
- get_screen (const Window& window)
251
- {
252
- UIWindow* w = get_vc(&window).view.window;
253
- if (@available(iOS 13.0, *))
254
- return w.windowScene.screen;
255
- else
256
- return w.screen;
257
- }
258
-
259
- Screen
260
- Window_get_screen (const Window& window)
261
- {
262
- Screen s;
263
- UIScreen* screen = get_screen(window);
264
- Screen_initialize(&s, screen ? screen : UIScreen.mainScreen);
265
- return s;
266
- }
267
-
268
268
  float
269
269
  Window_get_pixel_density (const Window& window)
270
270
  {
data/src/osx/event.h CHANGED
@@ -38,7 +38,7 @@ namespace Reflex
38
38
  public:
39
39
 
40
40
  NativePointerEvent (
41
- NSEvent* event, NSView* view, Pointer::ID id, Pointer::Action action);
41
+ NSEvent* event, NSView* view, Pointer::Action action);
42
42
 
43
43
  };// NativePointerEvent
44
44
 
data/src/osx/event.mm CHANGED
@@ -11,145 +11,47 @@ namespace Reflex
11
11
  {
12
12
 
13
13
 
14
- static const char*
15
- get_chars (NSEvent* e)
14
+ static uint
15
+ get_modifiers (const NSEvent* e)
16
16
  {
17
- NSString* chars = [e characters];//charactersIgnoringModifiers];
18
- return [chars UTF8String];
17
+ NSUInteger flags = e.modifierFlags;
18
+ return
19
+ (flags & NSAlphaShiftKeyMask) ? MOD_CAPS : 0 |
20
+ (flags & NSShiftKeyMask) ? MOD_SHIFT : 0 |
21
+ (flags & NSControlKeyMask) ? MOD_CONTROL : 0 |
22
+ (flags & NSAlternateKeyMask) ? MOD_OPTION : 0 |
23
+ (flags & NSCommandKeyMask) ? MOD_COMMAND : 0 |
24
+ (flags & NSNumericPadKeyMask) ? MOD_NUMPAD : 0 |
25
+ (flags & NSHelpKeyMask) ? MOD_HELP : 0 |
26
+ (flags & NSFunctionKeyMask) ? MOD_FUNCTION : 0;
19
27
  }
20
28
 
21
- static KeyCode
22
- get_code (UInt16 code)
29
+ static Point
30
+ get_pointer_position (NSEvent* e, NSView* view)
23
31
  {
24
- switch (code)
25
- {
26
- case kVK_ANSI_A: return KEY_A;
27
- case kVK_ANSI_S: return KEY_S;
28
- case kVK_ANSI_D: return KEY_D;
29
- case kVK_ANSI_F: return KEY_F;
30
- case kVK_ANSI_H: return KEY_H;
31
- case kVK_ANSI_G: return KEY_G;
32
- case kVK_ANSI_Z: return KEY_Z;
33
- case kVK_ANSI_X: return KEY_X;
34
- case kVK_ANSI_C: return KEY_C;
35
- case kVK_ANSI_V: return KEY_V;
36
- case kVK_ANSI_B: return KEY_B;
37
- case kVK_ANSI_Q: return KEY_Q;
38
- case kVK_ANSI_W: return KEY_W;
39
- case kVK_ANSI_E: return KEY_E;
40
- case kVK_ANSI_R: return KEY_R;
41
- case kVK_ANSI_Y: return KEY_Y;
42
- case kVK_ANSI_T: return KEY_T;
43
- case kVK_ANSI_1: return KEY_1;
44
- case kVK_ANSI_2: return KEY_2;
45
- case kVK_ANSI_3: return KEY_3;
46
- case kVK_ANSI_4: return KEY_4;
47
- case kVK_ANSI_6: return KEY_6;
48
- case kVK_ANSI_5: return KEY_5;
49
- case kVK_ANSI_Equal: return KEY_EQUAL;
50
- case kVK_ANSI_9: return KEY_9;
51
- case kVK_ANSI_7: return KEY_7;
52
- case kVK_ANSI_Minus: return KEY_MINUS;
53
- case kVK_ANSI_8: return KEY_8;
54
- case kVK_ANSI_0: return KEY_0;
55
- case kVK_ANSI_RightBracket: return KEY_RBRACKET;
56
- case kVK_ANSI_O: return KEY_O;
57
- case kVK_ANSI_U: return KEY_U;
58
- case kVK_ANSI_LeftBracket: return KEY_LBRACKET;
59
- case kVK_ANSI_I: return KEY_I;
60
- case kVK_ANSI_P: return KEY_P;
61
- case kVK_ANSI_L: return KEY_L;
62
- case kVK_ANSI_J: return KEY_J;
63
- case kVK_ANSI_Quote: return KEY_QUOTE;
64
- case kVK_ANSI_K: return KEY_K;
65
- case kVK_ANSI_Semicolon: return KEY_SEMICOLON;
66
- case kVK_ANSI_Backslash: return KEY_BACKSLASH;
67
- case kVK_ANSI_Comma: return KEY_COMMA;
68
- case kVK_ANSI_Slash: return KEY_SLASH;
69
- case kVK_ANSI_N: return KEY_N;
70
- case kVK_ANSI_M: return KEY_M;
71
- case kVK_ANSI_Period: return KEY_PERIOD;
72
- case kVK_ANSI_Grave: return KEY_GRAVE;
73
- case kVK_ANSI_KeypadDecimal: return KEY_NUM_DECIMAL;
74
- case kVK_ANSI_KeypadMultiply: return KEY_NUM_MULTIPLY;
75
- case kVK_ANSI_KeypadPlus: return KEY_NUM_PLUS;
76
- case kVK_ANSI_KeypadClear: return KEY_NUM_CLEAR;
77
- case kVK_ANSI_KeypadDivide: return KEY_NUM_DIVIDE;
78
- case kVK_ANSI_KeypadEnter: return KEY_ENTER;
79
- case kVK_ANSI_KeypadMinus: return KEY_NUM_MINUS;
80
- case kVK_ANSI_KeypadEquals: return KEY_NUM_EQUAL;
81
- case kVK_ANSI_Keypad0: return KEY_NUM_0;
82
- case kVK_ANSI_Keypad1: return KEY_NUM_1;
83
- case kVK_ANSI_Keypad2: return KEY_NUM_2;
84
- case kVK_ANSI_Keypad3: return KEY_NUM_3;
85
- case kVK_ANSI_Keypad4: return KEY_NUM_4;
86
- case kVK_ANSI_Keypad5: return KEY_NUM_5;
87
- case kVK_ANSI_Keypad6: return KEY_NUM_6;
88
- case kVK_ANSI_Keypad7: return KEY_NUM_7;
89
- case kVK_ANSI_Keypad8: return KEY_NUM_8;
90
- case kVK_ANSI_Keypad9: return KEY_NUM_9;
32
+ assert(view);
91
33
 
92
- case kVK_Return: return KEY_RETURN;
93
- case kVK_Tab: return KEY_TAB;
94
- case kVK_Space: return KEY_SPACE;
95
- case kVK_Delete: return KEY_BACKSPACE;
96
- case kVK_Escape: return KEY_ESCAPE;
97
- case kVK_Command: return KEY_LCOMMAND;
98
- case kVK_Shift: return KEY_LSHIFT;
99
- case kVK_CapsLock: return KEY_CAPSLOCK;
100
- case kVK_Option: return KEY_LOPTION;
101
- case kVK_Control: return KEY_LCONTROL;
102
- case kVK_RightCommand: return KEY_RCOMMAND;
103
- case kVK_RightShift: return KEY_RSHIFT;
104
- case kVK_RightOption: return KEY_ROPTION;
105
- case kVK_RightControl: return KEY_RCONTROL;
106
- case kVK_Function: return KEY_FUNCTION;
107
- case kVK_F17: return KEY_F17;
108
- case kVK_VolumeUp: return KEY_VOLUME_UP;
109
- case kVK_VolumeDown: return KEY_VOLUME_DOWN;
110
- case kVK_Mute: return KEY_MUTE;
111
- case kVK_F18: return KEY_F18;
112
- case kVK_F19: return KEY_F19;
113
- case kVK_F20: return KEY_F20;
114
- case kVK_F5: return KEY_F5;
115
- case kVK_F6: return KEY_F6;
116
- case kVK_F7: return KEY_F7;
117
- case kVK_F3: return KEY_F3;
118
- case kVK_F8: return KEY_F8;
119
- case kVK_F9: return KEY_F9;
120
- case kVK_F11: return KEY_F11;
121
- case kVK_F13: return KEY_F13;
122
- case kVK_F16: return KEY_F16;
123
- case kVK_F14: return KEY_F14;
124
- case kVK_F10: return KEY_F10;
125
- case kVK_F12: return KEY_F12;
126
- case kVK_F15: return KEY_F15;
127
- case kVK_Help: return KEY_HELP;
128
- case kVK_Home: return KEY_HOME;
129
- case kVK_PageUp: return KEY_PAGEUP;
130
- case kVK_ForwardDelete: return KEY_DELETE;
131
- case kVK_F4: return KEY_F4;
132
- case kVK_End: return KEY_END;
133
- case kVK_F2: return KEY_F2;
134
- case kVK_PageDown: return KEY_PAGEDOWN;
135
- case kVK_F1: return KEY_F1;
136
- case kVK_LeftArrow: return KEY_LEFT;
137
- case kVK_RightArrow: return KEY_RIGHT;
138
- case kVK_DownArrow: return KEY_DOWN;
139
- case kVK_UpArrow: return KEY_UP;
34
+ NSPoint p = [view convertPoint: e.locationInWindow fromView: nil];
35
+ p.y = view.bounds.size.height - p.y;
36
+ return Point(p.x, p.y);
37
+ }
140
38
 
141
- case kVK_ISO_Section: return KEY_SECTION;
142
39
 
143
- case kVK_JIS_Yen: return KEY_YEN;
144
- case kVK_JIS_Underscore: return KEY_UNDERSCORE;
145
- case kVK_JIS_KeypadComma: return KEY_NUM_COMMA;
146
- case kVK_JIS_Eisu: return KEY_IME_EISU;
147
- case kVK_JIS_Kana: return KEY_IME_KANA;
148
- }
40
+ static const char*
41
+ get_chars (NSEvent* e)
42
+ {
43
+ NSString* chars = [e characters];//charactersIgnoringModifiers];
44
+ return [chars UTF8String];
45
+ }
149
46
 
150
- return KEY_NONE;
47
+ NativeKeyEvent::NativeKeyEvent (NSEvent* e, Action action)
48
+ : KeyEvent(
49
+ action, get_chars(e), [e keyCode],
50
+ get_modifiers(e), [e isARepeat] ? 1 : 0)
51
+ {
151
52
  }
152
53
 
54
+
153
55
  static uint
154
56
  get_modifier_flag_mask (const NSEvent* e)
155
57
  {
@@ -180,6 +82,23 @@ namespace Reflex
180
82
  : Reflex::KeyEvent::UP;
181
83
  }
182
84
 
85
+ NativeFlagKeyEvent::NativeFlagKeyEvent (NSEvent* e)
86
+ : KeyEvent(
87
+ get_flag_key_event_action(e), "", [e keyCode],
88
+ get_modifiers(e), 0)
89
+ {
90
+ }
91
+
92
+
93
+ static bool
94
+ is_pointer_dragging (NSEvent* e)
95
+ {
96
+ return
97
+ [e type] == NSLeftMouseDragged ||
98
+ [e type] == NSRightMouseDragged ||
99
+ [e type] == NSOtherMouseDragged;
100
+ }
101
+
183
102
  static uint
184
103
  get_current_pointer_type ()
185
104
  {
@@ -219,75 +138,18 @@ namespace Reflex
219
138
  }
220
139
  }
221
140
 
222
- static uint
223
- get_modifiers (const NSEvent* e)
224
- {
225
- NSUInteger flags = [e modifierFlags];
226
- return
227
- (flags & NSAlphaShiftKeyMask) ? MOD_CAPS : 0 |
228
- (flags & NSShiftKeyMask) ? MOD_SHIFT : 0 |
229
- (flags & NSControlKeyMask) ? MOD_CONTROL : 0 |
230
- (flags & NSAlternateKeyMask) ? MOD_ALT : 0 |
231
- (flags & NSCommandKeyMask) ? MOD_COMMAND : 0 |
232
- (flags & NSNumericPadKeyMask) ? MOD_NUMPAD : 0 |
233
- (flags & NSHelpKeyMask) ? MOD_HELP : 0 |
234
- (flags & NSFunctionKeyMask) ? MOD_FUNCTION : 0;
235
- }
236
-
237
- static NSPoint
238
- correct_point (NSView* view, const NSPoint& point)
239
- {
240
- assert(view);
241
- NSPoint p = [view convertPoint: point fromView: nil];
242
- p.y = [view bounds].size.height - p.y;
243
- return p;
244
- }
245
-
246
- static Point
247
- get_pointer_position (NSEvent* e, NSView* view)
248
- {
249
- NSPoint p = correct_point(view, [e locationInWindow]);
250
- return Point(p.x, p.y);
251
- }
252
-
253
-
254
- NativeKeyEvent::NativeKeyEvent (NSEvent* e, Action action)
255
- : KeyEvent(
256
- action, get_chars(e), get_code([e keyCode]),
257
- get_modifiers(e), [e isARepeat] ? 1 : 0)
258
- {
259
- }
260
-
261
-
262
- NativeFlagKeyEvent::NativeFlagKeyEvent (NSEvent* e)
263
- : KeyEvent(
264
- get_flag_key_event_action(e), "", get_code([e keyCode]),
265
- get_modifiers(e), 0)
266
- {
267
- }
268
-
269
-
270
- static bool
271
- is_pointer_dragging (NSEvent* e)
272
- {
273
- return
274
- [e type] == NSLeftMouseDragged ||
275
- [e type] == NSRightMouseDragged ||
276
- [e type] == NSOtherMouseDragged;
277
- }
278
-
279
141
  NativePointerEvent::NativePointerEvent (
280
- NSEvent* event, NSView* view, Pointer::ID id, Pointer::Action action)
142
+ NSEvent* event, NSView* view, Pointer::Action action)
281
143
  {
282
144
  bool dragging = is_pointer_dragging(event);
283
145
  PointerEvent_add_pointer(this, Pointer(
284
- id,
146
+ 0,
285
147
  get_pointer_type(event),
286
148
  action,
287
149
  get_pointer_position(event, view),
288
150
  get_modifiers(event),
289
151
  dragging,
290
- action == Pointer::MOVE && !dragging ? 0 : (uint) [event clickCount],
152
+ action == Pointer::MOVE && !dragging ? 0 : (uint) event.clickCount,
291
153
  0,
292
154
  time()));
293
155
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  #include <assert.h>
6
6
  #import <Cocoa/Cocoa.h>
7
+ #include <rays/rays.h>
7
8
  #include "reflex/exception.h"
8
9
  #include "../view.h"
9
10
  #include "../pointer.h"
@@ -12,12 +13,6 @@
12
13
  #import "opengl_view.h"
13
14
 
14
15
 
15
- static const uint MOUSE_BUTTONS =
16
- Reflex::Pointer::MOUSE_LEFT |
17
- Reflex::Pointer::MOUSE_RIGHT |
18
- Reflex::Pointer::MOUSE_MIDDLE;
19
-
20
-
21
16
  static NSWindowStyleMask
22
17
  default_style_mask ()
23
18
  {
@@ -61,8 +56,6 @@ move_to_main_screen_origin (NativeWindow* window)
61
56
  OpenGLView* view;
62
57
  NSTimer* timer;
63
58
  int update_count;
64
- Reflex::Pointer::ID pointer_id;
65
- Reflex::Pointer prev_pointer;
66
59
  }
67
60
 
68
61
  - (id) init
@@ -74,12 +67,11 @@ move_to_main_screen_origin (NativeWindow* window)
74
67
  defer: NO];
75
68
  if (!self) return nil;
76
69
 
77
- pwindow =
78
- ptr_for_rebind = NULL;
79
- view = nil;
80
- timer = nil;
81
- update_count = 0;
82
- pointer_id = 0;
70
+ pwindow =
71
+ ptr_for_rebind = NULL;
72
+ view = nil;
73
+ timer = nil;
74
+ update_count = 0;
83
75
 
84
76
  [self setDelegate: self];
85
77
  [self setupContentView];
@@ -92,8 +84,7 @@ move_to_main_screen_origin (NativeWindow* window)
92
84
  {
93
85
  assert(!pwindow);
94
86
 
95
- if (view) [view release];
96
-
87
+ [self cleanupContentView];
97
88
  [super dealloc];
98
89
  }
99
90
 
@@ -156,6 +147,16 @@ move_to_main_screen_origin (NativeWindow* window)
156
147
  [self setContentView: view];
157
148
  }
158
149
 
150
+ - (void) cleanupContentView
151
+ {
152
+ if (!view) return;
153
+
154
+ if (view.openGLContext == NSOpenGLContext.currentContext)
155
+ Rays::activate_offscreen_context();
156
+
157
+ [view release];
158
+ }
159
+
159
160
  - (void) startTimer
160
161
  {
161
162
  [self startTimer: 60];
@@ -297,23 +298,22 @@ move_to_main_screen_origin (NativeWindow* window)
297
298
  win->self->prev_position = b.position();
298
299
  win->self->prev_size = b.size();
299
300
 
300
- if (dpos != 0 || dsize != 0)
301
+ if (dpos == 0 && dsize == 0) return;
302
+
303
+ Reflex::FrameEvent e(b, dpos.x, dpos.y, 0, dsize.x, dsize.y, 0);
304
+ if (dpos != 0) win->on_move(&e);
305
+ if (dsize != 0)
301
306
  {
302
- Reflex::FrameEvent e(b, dpos.x, dpos.y, 0, dsize.x, dsize.y, 0);
303
- if (dpos != 0) win->on_move(&e);
304
- if (dsize != 0)
305
- {
306
- Rays::Bounds b = win->frame();
307
- b.move_to(0, 0);
307
+ Rays::Bounds b = win->frame();
308
+ b.move_to(0, 0);
308
309
 
309
- if (win->painter())
310
- win->painter()->canvas(b, win->painter()->pixel_density());
310
+ if (win->painter())
311
+ win->painter()->canvas(b, win->painter()->pixel_density());
311
312
 
312
- if (win->root())
313
- View_set_frame(win->root(), b);
313
+ if (win->root())
314
+ View_set_frame(win->root(), b);
314
315
 
315
- win->on_resize(&e);
316
- }
316
+ win->on_resize(&e);
317
317
  }
318
318
  }
319
319
 
@@ -394,10 +394,7 @@ move_to_main_screen_origin (NativeWindow* window)
394
394
  Reflex::Window* win = self.window;
395
395
  if (!win) return;
396
396
 
397
- if (Reflex::Pointer_mask_flag(prev_pointer, MOUSE_BUTTONS) == 0)
398
- ++pointer_id;
399
-
400
- Reflex::NativePointerEvent e(event, view, pointer_id, Reflex::Pointer::DOWN);
397
+ Reflex::NativePointerEvent e(event, view, Reflex::Pointer::DOWN);
401
398
 
402
399
  if (e[0].position().y < 0)
403
400
  {
@@ -406,8 +403,6 @@ move_to_main_screen_origin (NativeWindow* window)
406
403
  return;
407
404
  }
408
405
 
409
- [self attachAndUpdatePastPointers: &e];
410
-
411
406
  Window_call_pointer_event(win, &e);
412
407
  }
413
408
 
@@ -416,15 +411,7 @@ move_to_main_screen_origin (NativeWindow* window)
416
411
  Reflex::Window* win = self.window;
417
412
  if (!win) return;
418
413
 
419
- Reflex::NativePointerEvent e(event, view, pointer_id, Reflex::Pointer::UP);
420
- [self attachAndUpdatePastPointers: &e];
421
-
422
- if (prev_pointer && Reflex::Pointer_mask_flag(prev_pointer, MOUSE_BUTTONS) == 0)
423
- {
424
- ++pointer_id;
425
- Pointer_set_down(&prev_pointer, NULL);
426
- }
427
-
414
+ Reflex::NativePointerEvent e(event, view, Reflex::Pointer::UP);
428
415
  Window_call_pointer_event(win, &e);
429
416
  }
430
417
 
@@ -433,9 +420,7 @@ move_to_main_screen_origin (NativeWindow* window)
433
420
  Reflex::Window* win = self.window;
434
421
  if (!win) return;
435
422
 
436
- Reflex::NativePointerEvent e(event, view, pointer_id, Reflex::Pointer::MOVE);
437
- [self attachAndUpdatePastPointers: &e];
438
-
423
+ Reflex::NativePointerEvent e(event, view, Reflex::Pointer::MOVE);
439
424
  Window_call_pointer_event(win, &e);
440
425
  }
441
426
 
@@ -444,46 +429,10 @@ move_to_main_screen_origin (NativeWindow* window)
444
429
  Reflex::Window* win = self.window;
445
430
  if (!win) return;
446
431
 
447
- Reflex::NativePointerEvent e(event, view, pointer_id, Reflex::Pointer::MOVE);
448
- [self attachAndUpdatePastPointers: &e];
449
-
432
+ Reflex::NativePointerEvent e(event, view, Reflex::Pointer::MOVE);
450
433
  Window_call_pointer_event(win, &e);
451
434
  }
452
435
 
453
- - (void) attachAndUpdatePastPointers: (Reflex::PointerEvent*) e
454
- {
455
- using namespace Reflex;
456
-
457
- assert(e->size() == 1);
458
-
459
- Pointer& pointer = PointerEvent_pointer_at(e, 0);
460
-
461
- if (prev_pointer)
462
- {
463
- Pointer_add_flag(&pointer, Pointer_mask_flag(prev_pointer, MOUSE_BUTTONS));
464
- Reflex::Pointer_set_prev(&pointer, &prev_pointer);
465
- }
466
-
467
- switch (pointer.action())
468
- {
469
- case Pointer::DOWN:
470
- Pointer_add_flag(&pointer, pointer.types());
471
- break;
472
-
473
- case Pointer::UP:
474
- Pointer_remove_flag(&pointer, pointer.types());
475
- break;
476
- }
477
-
478
- if (prev_pointer && prev_pointer.down())
479
- Reflex::Pointer_set_down(&pointer, prev_pointer.down());
480
- else if (pointer.action() == Reflex::Pointer::DOWN)
481
- Reflex::Pointer_set_down(&pointer, &pointer);
482
-
483
- prev_pointer = pointer;
484
- Reflex::Pointer_set_prev(&prev_pointer, NULL);
485
- }
486
-
487
436
  - (void) scrollWheel: (NSEvent*) event
488
437
  {
489
438
  Reflex::Window* win = self.window;