reflexion 0.3 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 519781325342b4d3ce4f84636140f9869f7a071835b880979e59b138b28242be
4
- data.tar.gz: f474f2abbb1f8957ae5ddfc20b5a9fdcf8f0f0dc7fa3904122b0fff29d561952
3
+ metadata.gz: f0787ee344f23edde4f87bfb7d5d129a30bbc8ce0723bcf4d0da918196bfbc9f
4
+ data.tar.gz: 6153596e926fce9e12d27a843871e12025d39722a27f8d473811426a69285464
5
5
  SHA512:
6
- metadata.gz: 74fa4aeefb7e4639c3b05b3bf7ae257695690b63e01b30f97058d9f9d672704a9912937a85469eb3b9cb853de5f4505233f5857bca3e20cfb998368409df089a
7
- data.tar.gz: 71fb5eed0de8a8619964399fcb6981ca7e8841b9e8bbc333ddbe94593f98c6ead527ad5196fa30f97d17d7a2d52cbbe29f4c8aa898f0e8930102239322987638
6
+ metadata.gz: 6f0f485cab308f5246c44ee0e12c55541ccc7c0247403b6e1bcc676946ab1a9be2260d7d28316a8c12c4630230168ee1b9c93b1a1f398b828b93ead6acc8e8e3
7
+ data.tar.gz: a39e8b85065a9eacb9bb36db287066f9e53ab5e40f47e9f05d67915dfdea4296120aa8a81953104926440448432642ae0ac763688d53ac0b47792e5cd3153e78
@@ -20,7 +20,7 @@ VALUE alloc(VALUE klass)
20
20
 
21
21
  static
22
22
  VALUE initialize(VALUE self, VALUE
23
- id, VALUE types, VALUE action, VALUE position, VALUE modifiers, VALUE drag, VALUE click_count, VALUE view_index, VALUE time)
23
+ id, VALUE types, VALUE action, VALUE position, VALUE modifiers, VALUE click_count, VALUE drag, VALUE time)
24
24
  {
25
25
  CHECK;
26
26
 
@@ -30,9 +30,8 @@ VALUE initialize(VALUE self, VALUE
30
30
  (Reflex::Pointer::Action) to<int>(action),
31
31
  to<Rays::Point>(position),
32
32
  to<uint>(modifiers),
33
- to<bool>(drag),
34
33
  to<uint>(click_count),
35
- to<uint>(view_index),
34
+ to<bool>(drag),
36
35
  to<double>(time));
37
36
  return self;
38
37
  }
@@ -80,13 +79,6 @@ VALUE get_modifiers(VALUE self)
80
79
  return value(THIS->modifiers());
81
80
  }
82
81
 
83
- static
84
- VALUE is_drag(VALUE self)
85
- {
86
- CHECK;
87
- return value(THIS->is_drag());
88
- }
89
-
90
82
  static
91
83
  VALUE get_click_count(VALUE self)
92
84
  {
@@ -95,10 +87,10 @@ VALUE get_click_count(VALUE self)
95
87
  }
96
88
 
97
89
  static
98
- VALUE get_view_index(VALUE self)
90
+ VALUE is_drag(VALUE self)
99
91
  {
100
92
  CHECK;
101
- return value(THIS->view_index());
93
+ return value(THIS->is_drag());
102
94
  }
103
95
 
104
96
  static
@@ -132,16 +124,15 @@ Init_reflex_pointer ()
132
124
 
133
125
  cPointer = rb_define_class_under(mReflex, "Pointer", rb_cObject);
134
126
  rb_define_alloc_func(cPointer, alloc);
135
- rb_define_private_method(cPointer, "initialize", RUBY_METHOD_FUNC(initialize), 9);
127
+ rb_define_private_method(cPointer, "initialize", RUBY_METHOD_FUNC(initialize), 8);
136
128
  rb_define_private_method(cPointer, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1);
137
129
  rb_define_method(cPointer, "id", RUBY_METHOD_FUNC(get_id), 0);
138
130
  rb_define_private_method(cPointer, "get_types", RUBY_METHOD_FUNC(get_types), 0);
139
131
  rb_define_private_method(cPointer, "get_action", RUBY_METHOD_FUNC(get_action), 0);
140
132
  rb_define_method(cPointer, "position", RUBY_METHOD_FUNC(get_position), 0);
141
133
  rb_define_method(cPointer, "modifiers", RUBY_METHOD_FUNC(get_modifiers), 0);
142
- cPointer.define_method("drag?", is_drag);
143
134
  rb_define_method(cPointer, "click_count", RUBY_METHOD_FUNC(get_click_count), 0);
144
- rb_define_method(cPointer, "view_index", RUBY_METHOD_FUNC(get_view_index), 0);
135
+ cPointer.define_method("drag?", is_drag);
145
136
  rb_define_method(cPointer, "time", RUBY_METHOD_FUNC(get_time), 0);
146
137
  rb_define_method(cPointer, "prev", RUBY_METHOD_FUNC(get_prev), 0);
147
138
  rb_define_method(cPointer, "down", RUBY_METHOD_FUNC(get_down), 0);
@@ -71,7 +71,9 @@ scan_type_and_value (
71
71
  {
72
72
  assert(type && value);
73
73
 
74
- if (!str || *str == '\0')
74
+ if (!str)
75
+ argument_error(__FILE__, __LINE__);
76
+ if (*str == '\0')
75
77
  argument_error(__FILE__, __LINE__);
76
78
 
77
79
  char buf[101];
@@ -272,7 +272,7 @@ to_shape (Value value)
272
272
  if (value.is_nil())
273
273
  return NULL;
274
274
 
275
- if (value.is_kind_of(Rays::polygon_class()))
275
+ if (value.is_a(Rays::polygon_class()))
276
276
  {
277
277
  Reflex::PolygonShape* shape = new Reflex::PolygonShape();
278
278
  shape->set_polygon(to<Rays::Polygon&>(value));
@@ -409,7 +409,7 @@ VALUE set_pivot(VALUE self)
409
409
  {
410
410
  CHECK;
411
411
 
412
- if (argv[0].is_kind_of(Rays::point_class()))
412
+ if (argv[0].is_a(Rays::point_class()))
413
413
  {
414
414
  check_arg_count(__FILE__, __LINE__, "View#pivot=(Point)", argc, 1);
415
415
 
@@ -446,7 +446,7 @@ VALUE scroll_to(VALUE self)
446
446
  {
447
447
  CHECK;
448
448
 
449
- if (argv[0].is_kind_of(Rays::point_class()))
449
+ if (argv[0].is_a(Rays::point_class()))
450
450
  {
451
451
  check_arg_count(__FILE__, __LINE__, "View#scroll_to(Point)", argc, 1);
452
452
 
@@ -476,7 +476,7 @@ VALUE scroll_by(VALUE self)
476
476
  {
477
477
  CHECK;
478
478
 
479
- if (argv[0].is_kind_of(Rays::point_class()))
479
+ if (argv[0].is_a(Rays::point_class()))
480
480
  {
481
481
  check_arg_count(__FILE__, __LINE__, "View#scroll_by", argc, 1);
482
482
 
@@ -819,13 +819,20 @@ VALUE get_gravity_scale(VALUE self)
819
819
  }
820
820
 
821
821
  static
822
- VALUE update_physics(VALUE self)
822
+ VALUE create_world(VALUE self, VALUE pixels_per_meter)
823
823
  {
824
824
  CHECK;
825
- check_arg_count(__FILE__, __LINE__, "View#update_physics", argc, 0, 1);
825
+ THIS->create_world(to<float>(pixels_per_meter));
826
+ }
827
+
828
+ static
829
+ VALUE update_world(VALUE self)
830
+ {
831
+ CHECK;
832
+ check_arg_count(__FILE__, __LINE__, "View#update_world", argc, 0, 1);
826
833
 
827
834
  float duration = argc >= 1 ? to<float>(argv[0]) : 0;
828
- THIS->update_physics(duration);
835
+ THIS->update_world(duration);
829
836
  return self;
830
837
  }
831
838
 
@@ -1182,7 +1189,8 @@ Init_reflex_view ()
1182
1189
  rb_define_method(cView, "gravity_scale=", RUBY_METHOD_FUNC(set_gravity_scale), 1);
1183
1190
  rb_define_method(cView, "gravity_scale", RUBY_METHOD_FUNC(get_gravity_scale), 0);
1184
1191
 
1185
- rb_define_method(cView, "update_physics", RUBY_METHOD_FUNC(update_physics), -1);
1192
+ rb_define_method(cView, "create_world", RUBY_METHOD_FUNC(create_world), 1);
1193
+ rb_define_method(cView, "update_world", RUBY_METHOD_FUNC(update_world), -1);
1186
1194
  rb_define_method(cView, "meter2pixel", RUBY_METHOD_FUNC(meter2pixel), -1);
1187
1195
  rb_define_method(cView, "gravity=", RUBY_METHOD_FUNC(set_gravity), -1);
1188
1196
  rb_define_method(cView, "gravity", RUBY_METHOD_FUNC(get_gravity), 0);
data/ChangeLog.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # reflex ChangeLog
2
2
 
3
3
 
4
+ ## [v0.3.1] - 2025-01-13
5
+
6
+ - Add View#create_world(pixels_per_meter)
7
+ - Rename View#update_physics to View#update_world
8
+ - Delete Pointer#view_index
9
+ - Update LICENSE
10
+
11
+ - Fix crash in unregister_captures() called immediately after deleting a view
12
+ - Fix that incorrect determination whether the pointer is in a view or not
13
+ - Fix a bug that caused some pointer events to be ignored in zoomed views
14
+
15
+
4
16
  ## [v0.3] - 2024-07-06
5
17
 
6
18
  - Support Windows
data/Gemfile.lock CHANGED
@@ -9,7 +9,7 @@ GEM
9
9
 
10
10
  PLATFORMS
11
11
  arm64-darwin-21
12
- arm64-darwin-22
12
+ arm64-darwin-23
13
13
 
14
14
  DEPENDENCIES
15
15
  rake
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 xord.org
3
+ Copyright (c) 2011 xord.org
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/Rakefile CHANGED
@@ -1,6 +1,5 @@
1
1
  # -*- mode: ruby -*-
2
2
 
3
-
4
3
  %w[../xot ../rucy ../rays .]
5
4
  .map {|s| File.expand_path "#{s}/lib", __dir__}
6
5
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3
1
+ 0.3.1
@@ -20,8 +20,8 @@ RUCY_DEF_ALLOC(alloc, klass)
20
20
  RUCY_END
21
21
 
22
22
  static
23
- RUCY_DEF9(initialize,
24
- id, types, action, position, modifiers, drag, click_count, view_index, time)
23
+ RUCY_DEF8(initialize,
24
+ id, types, action, position, modifiers, click_count, drag, time)
25
25
  {
26
26
  CHECK;
27
27
 
@@ -31,9 +31,8 @@ RUCY_DEF9(initialize,
31
31
  (Reflex::Pointer::Action) to<int>(action),
32
32
  to<Rays::Point>(position),
33
33
  to<uint>(modifiers),
34
- to<bool>(drag),
35
34
  to<uint>(click_count),
36
- to<uint>(view_index),
35
+ to<bool>(drag),
37
36
  to<double>(time));
38
37
  return self;
39
38
  }
@@ -88,14 +87,6 @@ RUCY_DEF0(get_modifiers)
88
87
  }
89
88
  RUCY_END
90
89
 
91
- static
92
- RUCY_DEF0(is_drag)
93
- {
94
- CHECK;
95
- return value(THIS->is_drag());
96
- }
97
- RUCY_END
98
-
99
90
  static
100
91
  RUCY_DEF0(get_click_count)
101
92
  {
@@ -105,10 +96,10 @@ RUCY_DEF0(get_click_count)
105
96
  RUCY_END
106
97
 
107
98
  static
108
- RUCY_DEF0(get_view_index)
99
+ RUCY_DEF0(is_drag)
109
100
  {
110
101
  CHECK;
111
- return value(THIS->view_index());
102
+ return value(THIS->is_drag());
112
103
  }
113
104
  RUCY_END
114
105
 
@@ -153,9 +144,8 @@ Init_reflex_pointer ()
153
144
  cPointer.define_private_method("get_action", get_action);
154
145
  cPointer.define_method("position", get_position);
155
146
  cPointer.define_method("modifiers", get_modifiers);
156
- cPointer.define_method("drag?", is_drag);
157
147
  cPointer.define_method("click_count", get_click_count);
158
- cPointer.define_method("view_index", get_view_index);
148
+ cPointer.define_method("drag?", is_drag);
159
149
  cPointer.define_method("time", get_time);
160
150
  cPointer.define_method("prev", get_prev);
161
151
  cPointer.define_method("down", get_down);
@@ -72,7 +72,9 @@ scan_type_and_value (
72
72
  {
73
73
  assert(type && value);
74
74
 
75
- if (!str || *str == '\0')
75
+ if (!str)
76
+ argument_error(__FILE__, __LINE__);
77
+ if (*str == '\0')
76
78
  argument_error(__FILE__, __LINE__);
77
79
 
78
80
  char buf[101];
data/ext/reflex/view.cpp CHANGED
@@ -298,7 +298,7 @@ to_shape (Value value)
298
298
  if (value.is_nil())
299
299
  return NULL;
300
300
 
301
- if (value.is_kind_of(Rays::polygon_class()))
301
+ if (value.is_a(Rays::polygon_class()))
302
302
  {
303
303
  Reflex::PolygonShape* shape = new Reflex::PolygonShape();
304
304
  shape->set_polygon(to<Rays::Polygon&>(value));
@@ -450,7 +450,7 @@ RUCY_DEFN(set_pivot)
450
450
  {
451
451
  CHECK;
452
452
 
453
- if (argv[0].is_kind_of(Rays::point_class()))
453
+ if (argv[0].is_a(Rays::point_class()))
454
454
  {
455
455
  check_arg_count(__FILE__, __LINE__, "View#pivot=(Point)", argc, 1);
456
456
 
@@ -489,7 +489,7 @@ RUCY_DEFN(scroll_to)
489
489
  {
490
490
  CHECK;
491
491
 
492
- if (argv[0].is_kind_of(Rays::point_class()))
492
+ if (argv[0].is_a(Rays::point_class()))
493
493
  {
494
494
  check_arg_count(__FILE__, __LINE__, "View#scroll_to(Point)", argc, 1);
495
495
 
@@ -520,7 +520,7 @@ RUCY_DEFN(scroll_by)
520
520
  {
521
521
  CHECK;
522
522
 
523
- if (argv[0].is_kind_of(Rays::point_class()))
523
+ if (argv[0].is_a(Rays::point_class()))
524
524
  {
525
525
  check_arg_count(__FILE__, __LINE__, "View#scroll_by", argc, 1);
526
526
 
@@ -903,13 +903,21 @@ RUCY_DEF0(get_gravity_scale)
903
903
  RUCY_END
904
904
 
905
905
  static
906
- RUCY_DEFN(update_physics)
906
+ RUCY_DEF1(create_world, pixels_per_meter)
907
907
  {
908
908
  CHECK;
909
- check_arg_count(__FILE__, __LINE__, "View#update_physics", argc, 0, 1);
909
+ THIS->create_world(to<float>(pixels_per_meter));
910
+ }
911
+ RUCY_END
912
+
913
+ static
914
+ RUCY_DEFN(update_world)
915
+ {
916
+ CHECK;
917
+ check_arg_count(__FILE__, __LINE__, "View#update_world", argc, 0, 1);
910
918
 
911
919
  float duration = argc >= 1 ? to<float>(argv[0]) : 0;
912
- THIS->update_physics(duration);
920
+ THIS->update_world(duration);
913
921
  return self;
914
922
  }
915
923
  RUCY_END
@@ -1302,7 +1310,8 @@ Init_reflex_view ()
1302
1310
  cView.define_method("gravity_scale=", set_gravity_scale);
1303
1311
  cView.define_method("gravity_scale", get_gravity_scale);
1304
1312
 
1305
- cView.define_method("update_physics", update_physics);
1313
+ cView.define_method("create_world", create_world);
1314
+ cView.define_method("update_world", update_world);
1306
1315
  cView.define_method("meter2pixel", meter2pixel);
1307
1316
  cView.define_method("gravity=", set_gravity);
1308
1317
  cView.define_method("gravity", get_gravity);
@@ -65,8 +65,8 @@ namespace Reflex
65
65
 
66
66
  Pointer (
67
67
  ID id, uint types, Action action,
68
- const Point& position, uint modifiers, bool drag,
69
- uint click_count, uint view_index, double time);
68
+ const Point& position, uint modifiers, uint click_count, bool drag,
69
+ double time);
70
70
 
71
71
  Pointer (const This& obj);
72
72
 
@@ -84,11 +84,9 @@ namespace Reflex
84
84
 
85
85
  uint modifiers () const;
86
86
 
87
- bool is_drag () const;
88
-
89
87
  uint click_count () const;
90
88
 
91
- uint view_index () const;
89
+ bool is_drag () const;
92
90
 
93
91
  double time () const;
94
92
 
@@ -30,7 +30,7 @@ namespace Reflex
30
30
 
31
31
  virtual void fire ()
32
32
  {
33
- if (this->value.is_kind_of(timer_class()))
33
+ if (this->value.is_a(timer_class()))
34
34
  {
35
35
  RUCY_SYM(call_timer_block);
36
36
  this->value.call(call_timer_block);
@@ -309,7 +309,9 @@ namespace Reflex
309
309
  //
310
310
  // for physics child world
311
311
  //
312
- virtual void update_physics (float duration = 0);
312
+ virtual void create_world (float pixels_per_meter);
313
+
314
+ virtual void update_world (float duration = 0);
313
315
 
314
316
  virtual float meter2pixel (float meter = 1, bool create_world = true);
315
317
 
@@ -95,7 +95,7 @@ module Reflex
95
95
  end
96
96
 
97
97
  def inspect()
98
- "#<Reflex::Pointer id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} drag:#{drag?} click:#{click_count} view:#{view_index} time:#{time.round 2}>"
98
+ "#<Reflex::Pointer id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} click:#{click_count} drag:#{drag?} time:#{time.round 2}>"
99
99
  end
100
100
 
101
101
  end# Pointer
@@ -16,7 +16,7 @@ module Reflex
16
16
  :types, :mouse?, :touch?, :pen?,
17
17
  :mouse_left?, :left?, :mouse_right?, :right?, :mouse_middle?, :middle?,
18
18
  :action, :down?, :up?, :move?, :cancel?, :stay?,
19
- :position, :pos, :x, :y, :modifiers, :drag?, :click_count, :view_index,
19
+ :position, :pos, :x, :y, :modifiers, :click_count, :drag?,
20
20
  :time, :prev, :down
21
21
 
22
22
  def pointers()
@@ -24,7 +24,7 @@ module Reflex
24
24
  end
25
25
 
26
26
  def inspect()
27
- "#<Reflex::PointerEvent id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} drag:#{drag?} click:#{click_count} view:#{view_index} time:#{time.round 2}>"
27
+ "#<Reflex::PointerEvent id:#{id} #{types} #{action} (#{x.round 2}, #{y.round 2}) mod:#{modifiers} click:#{click_count} drag:#{drag?} time:#{time.round 2}>"
28
28
  end
29
29
 
30
30
  end# PointerEvent
data/reflex.gemspec CHANGED
@@ -25,10 +25,10 @@ Gem::Specification.new do |s|
25
25
  s.platform = Gem::Platform::RUBY
26
26
  s.required_ruby_version = '>= 3.0.0'
27
27
 
28
- s.add_runtime_dependency 'xot', '~> 0.3'
29
- s.add_runtime_dependency 'rucy', '~> 0.3'
30
- s.add_runtime_dependency 'beeps', '~> 0.3'
31
- s.add_runtime_dependency 'rays', '~> 0.3'
28
+ s.add_runtime_dependency 'xot', '~> 0.3.1'
29
+ s.add_runtime_dependency 'rucy', '~> 0.3.1'
30
+ s.add_runtime_dependency 'beeps', '~> 0.3.1'
31
+ s.add_runtime_dependency 'rays', '~> 0.3.1'
32
32
 
33
33
  s.files = `git ls-files`.split $/
34
34
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/body.cpp CHANGED
@@ -284,24 +284,30 @@ namespace Reflex
284
284
  void
285
285
  Body_copy_attributes (Body* to, const Body& from)
286
286
  {
287
- if (!to)
288
- return;
289
-
290
- if (to->self->ppm != from.self->ppm)
291
- physics_error(__FILE__, __LINE__);
287
+ if (!to) return;
292
288
 
293
289
  b2Body* b2to = Body_get_b2ptr(to);
294
290
  const b2Body* b2from = Body_get_b2ptr(&from);
295
291
  assert(b2to && b2from);
296
292
 
297
293
  b2to->SetType( b2from->GetType());
298
- b2to->SetTransform( b2from->GetPosition(), b2from->GetAngle());
299
294
  b2to->SetLinearVelocity( b2from->GetLinearVelocity());
300
295
  b2to->SetAngularVelocity(b2from->GetAngularVelocity());
301
296
  b2to->SetLinearDamping( b2from->GetLinearDamping());
302
297
  b2to->SetAngularDamping( b2from->GetAngularDamping());
303
298
  b2to->SetGravityScale( b2from->GetGravityScale());
304
299
  b2to->SetBullet( b2from->IsBullet());
300
+
301
+ float ppm_to = to->self->ppm;
302
+ float ppm_from = from.self->ppm;
303
+ if (ppm_to == ppm_from)
304
+ b2to->SetTransform(b2from->GetPosition(), b2from->GetAngle());
305
+ else
306
+ {
307
+ auto pos = b2from->GetPosition();
308
+ pos *= ppm_from / ppm_to;
309
+ b2to->SetTransform(pos, b2from->GetAngle());
310
+ }
305
311
  }
306
312
 
307
313
  Body*
data/src/event.cpp CHANGED
@@ -592,28 +592,16 @@ namespace Reflex
592
592
  {
593
593
  }
594
594
 
595
- void increment_view_indices ()
596
- {
597
- for (auto& pointer : pointers)
598
- Pointer_set_view_index(&pointer, pointer.view_index() + 1);
599
-
600
- if (parent) parent->increment_view_indices();
601
- }
602
-
603
595
  };// PointerEvent::Data
604
596
 
605
597
 
606
598
  void
607
- PointerEvent_add_pointer (
608
- PointerEvent* pthis, const Pointer& pointer,
609
- std::function<void(Pointer*)> fun)
599
+ PointerEvent_add_pointer (PointerEvent* pthis, const Pointer& pointer)
610
600
  {
611
601
  if (!pthis)
612
602
  argument_error(__FILE__, __LINE__);
613
603
 
614
604
  pthis->self->pointers.emplace_back(pointer);
615
-
616
- if (fun) fun(&pthis->self->pointers.back());
617
605
  }
618
606
 
619
607
  void
@@ -659,15 +647,6 @@ namespace Reflex
659
647
  fun(pointer);
660
648
  }
661
649
 
662
- void
663
- PointerEvent_increment_view_indices (PointerEvent* pthis)
664
- {
665
- if (!pthis)
666
- argument_error(__FILE__, __LINE__);
667
-
668
- pthis->self->increment_view_indices();
669
- }
670
-
671
650
  void
672
651
  PointerEvent_set_captured (PointerEvent* pthis, bool captured)
673
652
  {
@@ -680,23 +659,24 @@ namespace Reflex
680
659
  void
681
660
  PointerEvent_update_for_child_view (PointerEvent* pthis, const View* child)
682
661
  {
683
- if (!pthis || !child)
662
+ if (!pthis)
663
+ argument_error(__FILE__, __LINE__);
664
+ if (!child)
684
665
  argument_error(__FILE__, __LINE__);
685
666
 
686
667
  const Bounds& frame = child->frame();
687
- Bounds bounds = frame.dup().move_to(0, 0);
688
668
 
689
669
  std::vector<Pointer> pointers;
690
670
  for (const auto& pointer : pthis->self->pointers)
691
671
  {
672
+ if (!frame.is_include(pointer.position()))
673
+ continue;
674
+
692
675
  pointers.emplace_back(pointer);
693
676
  Pointer_update_positions(&pointers.back(), [&](Point* pos)
694
677
  {
695
678
  *pos = child->from_parent(*pos);
696
679
  });
697
-
698
- if (!bounds.is_include(pointers.back().position()))
699
- pointers.pop_back();
700
680
  }
701
681
  pthis->self->pointers = pointers;
702
682
  }
@@ -704,7 +684,9 @@ namespace Reflex
704
684
  void
705
685
  PointerEvent_update_for_capturing_view (PointerEvent* pthis, const View* view)
706
686
  {
707
- if (!pthis || !view)
687
+ if (!pthis)
688
+ argument_error(__FILE__, __LINE__);
689
+ if (!view)
708
690
  argument_error(__FILE__, __LINE__);
709
691
 
710
692
  for (auto& pointer : pthis->self->pointers)
data/src/event.h CHANGED
@@ -24,9 +24,7 @@ namespace Reflex
24
24
  void KeyEvent_set_captured (KeyEvent* pthis, bool captured);
25
25
 
26
26
 
27
- void PointerEvent_add_pointer (
28
- PointerEvent* pthis, const Pointer& pointer,
29
- std::function<void(Pointer*)> fun = NULL);
27
+ void PointerEvent_add_pointer (PointerEvent* pthis, const Pointer& pointer);
30
28
 
31
29
  void PointerEvent_erase_pointer (PointerEvent* pthis, Pointer::ID id);
32
30
 
data/src/filter.cpp CHANGED
@@ -36,7 +36,9 @@ namespace Reflex
36
36
  if (!self->shader)
37
37
  return;
38
38
 
39
- if (!painter || !image)
39
+ if (!painter)
40
+ argument_error(__FILE__, __LINE__);
41
+ if (!image)
40
42
  argument_error(__FILE__, __LINE__);
41
43
 
42
44
  painter->set_shader(self->shader);
data/src/ios/event.mm CHANGED
@@ -82,9 +82,8 @@ namespace Reflex
82
82
  action,
83
83
  to_point([touch locationInView: view]),
84
84
  get_modifiers(event),
85
- action == Pointer::MOVE,
86
85
  (uint) touch.tapCount,
87
- 0,
86
+ action == Pointer::MOVE,
88
87
  touch.timestamp);
89
88
 
90
89
  if (pointer.action() != Pointer::DOWN)
@@ -4,6 +4,7 @@
4
4
 
5
5
  #import <AppKit/NSApplication.h>
6
6
  #include "reflex/exception.h"
7
+ #include "reflex/debug.h"
7
8
  #import "app_delegate.h"
8
9
 
9
10
 
@@ -42,11 +43,11 @@ namespace Reflex
42
43
  static ReflexAppDelegate*
43
44
  setup_app_delegate (NSApplication* app)
44
45
  {
45
- id<NSApplicationDelegate> delegate = [app delegate];
46
+ id<NSApplicationDelegate> delegate = app.delegate;
46
47
  if (!delegate)
47
48
  {
48
- delegate = [[[ReflexAppDelegate alloc] init] autorelease];
49
- [app setDelegate: delegate];
49
+ delegate = [[[ReflexAppDelegate alloc] init] autorelease];
50
+ app.delegate = delegate;
50
51
  }
51
52
 
52
53
  if (![delegate isKindOfClass: ReflexAppDelegate.class])
@@ -58,11 +59,11 @@ namespace Reflex
58
59
  void
59
60
  Application::start ()
60
61
  {
61
- NSApplication* app = [NSApplication sharedApplication];
62
+ NSApplication* app = NSApplication.sharedApplication;
62
63
  ReflexAppDelegate* delegate = setup_app_delegate(app);
63
64
  [delegate bind: this];
64
65
 
65
- if (![app isRunning])
66
+ if (!app.isRunning)
66
67
  [app run];
67
68
  else
68
69
  [delegate callOnStart];
data/src/osx/event.mm CHANGED
@@ -148,9 +148,8 @@ namespace Reflex
148
148
  action,
149
149
  get_pointer_position(event, view),
150
150
  get_modifiers(event),
151
- dragging,
152
151
  action == Pointer::MOVE && !dragging ? 0 : (uint) event.clickCount,
153
- 0,
152
+ dragging,
154
153
  time()));
155
154
  }
156
155