reflexion 0.6.0 → 0.7.0

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.
Files changed (275) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/reflex/application.cpp +37 -6
  3. data/.doc/ext/reflex/capture_event.cpp +1 -1
  4. data/.doc/ext/reflex/chase_constraint.cpp +1 -1
  5. data/.doc/ext/reflex/clipboard.cpp +1 -1
  6. data/.doc/ext/reflex/color_event.cpp +76 -0
  7. data/.doc/ext/reflex/color_picker.cpp +113 -0
  8. data/.doc/ext/reflex/constraint.cpp +1 -1
  9. data/.doc/ext/reflex/contact_event.cpp +1 -1
  10. data/.doc/ext/reflex/control_change_event.cpp +1 -1
  11. data/.doc/ext/reflex/device.cpp +1 -1
  12. data/.doc/ext/reflex/device_event.cpp +1 -1
  13. data/.doc/ext/reflex/draw_event.cpp +1 -1
  14. data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
  15. data/.doc/ext/reflex/event.cpp +1 -1
  16. data/.doc/ext/reflex/file_dialog.cpp +181 -0
  17. data/.doc/ext/reflex/file_event.cpp +103 -0
  18. data/.doc/ext/reflex/filter.cpp +1 -1
  19. data/.doc/ext/reflex/focus_event.cpp +1 -1
  20. data/.doc/ext/reflex/frame_event.cpp +1 -1
  21. data/.doc/ext/reflex/gamepad.cpp +48 -0
  22. data/.doc/ext/reflex/image_view.cpp +1 -1
  23. data/.doc/ext/reflex/key_event.cpp +1 -274
  24. data/.doc/ext/reflex/line_shape.cpp +1 -1
  25. data/.doc/ext/reflex/link_constraint.cpp +1 -1
  26. data/.doc/ext/reflex/menu.cpp +6 -5
  27. data/.doc/ext/reflex/midi.cpp +9 -2
  28. data/.doc/ext/reflex/midi_event.cpp +1 -1
  29. data/.doc/ext/reflex/motion_event.cpp +1 -1
  30. data/.doc/ext/reflex/native.cpp +18 -6
  31. data/.doc/ext/reflex/note_event.cpp +1 -1
  32. data/.doc/ext/reflex/pin.cpp +1 -1
  33. data/.doc/ext/reflex/pointer.cpp +1 -1
  34. data/.doc/ext/reflex/pointer_event.cpp +2 -2
  35. data/.doc/ext/reflex/polygon_shape.cpp +1 -1
  36. data/.doc/ext/reflex/rect_shape.cpp +1 -1
  37. data/.doc/ext/reflex/reflex.cpp +566 -232
  38. data/.doc/ext/reflex/screen.cpp +27 -1
  39. data/.doc/ext/reflex/scroll_event.cpp +1 -1
  40. data/.doc/ext/reflex/selector.cpp +1 -1
  41. data/.doc/ext/reflex/shape.cpp +1 -1
  42. data/.doc/ext/reflex/snap_constraint.cpp +1 -1
  43. data/.doc/ext/reflex/style.cpp +1 -1
  44. data/.doc/ext/reflex/style_length.cpp +1 -1
  45. data/.doc/ext/reflex/text_event.cpp +104 -0
  46. data/.doc/ext/reflex/timer.cpp +1 -1
  47. data/.doc/ext/reflex/timer_event.cpp +1 -1
  48. data/.doc/ext/reflex/update_event.cpp +1 -1
  49. data/.doc/ext/reflex/view.cpp +110 -56
  50. data/.doc/ext/reflex/wheel_constraint.cpp +1 -1
  51. data/.doc/ext/reflex/wheel_event.cpp +1 -1
  52. data/.doc/ext/reflex/window.cpp +226 -17
  53. data/.github/workflows/release-gem.yml +2 -49
  54. data/.github/workflows/tag.yml +5 -28
  55. data/.github/workflows/test.yml +1 -37
  56. data/ChangeLog.md +54 -0
  57. data/Gemfile.lock +13 -8
  58. data/Rakefile +13 -2
  59. data/Reflex.podspec +2 -2
  60. data/VERSION +1 -1
  61. data/ext/reflex/application.cpp +41 -6
  62. data/ext/reflex/capture_event.cpp +1 -1
  63. data/ext/reflex/chase_constraint.cpp +1 -1
  64. data/ext/reflex/clipboard.cpp +1 -1
  65. data/ext/reflex/color_event.cpp +80 -0
  66. data/ext/reflex/color_picker.cpp +121 -0
  67. data/ext/reflex/constraint.cpp +1 -1
  68. data/ext/reflex/contact_event.cpp +1 -1
  69. data/ext/reflex/control_change_event.cpp +1 -1
  70. data/ext/reflex/device.cpp +1 -1
  71. data/ext/reflex/device_event.cpp +1 -1
  72. data/ext/reflex/draw_event.cpp +1 -1
  73. data/ext/reflex/ellipse_shape.cpp +1 -1
  74. data/ext/reflex/event.cpp +1 -1
  75. data/ext/reflex/extconf.rb +4 -2
  76. data/ext/reflex/file_dialog.cpp +194 -0
  77. data/ext/reflex/file_event.cpp +108 -0
  78. data/ext/reflex/filter.cpp +1 -1
  79. data/ext/reflex/focus_event.cpp +1 -1
  80. data/ext/reflex/frame_event.cpp +1 -1
  81. data/ext/reflex/gamepad.cpp +50 -0
  82. data/ext/reflex/image_view.cpp +1 -1
  83. data/ext/reflex/key_event.cpp +1 -275
  84. data/ext/reflex/line_shape.cpp +1 -1
  85. data/ext/reflex/link_constraint.cpp +1 -1
  86. data/ext/reflex/menu.cpp +8 -7
  87. data/ext/reflex/midi.cpp +11 -3
  88. data/ext/reflex/midi_event.cpp +1 -1
  89. data/ext/reflex/motion_event.cpp +1 -1
  90. data/ext/reflex/native.cpp +18 -6
  91. data/ext/reflex/note_event.cpp +1 -1
  92. data/ext/reflex/pin.cpp +1 -1
  93. data/ext/reflex/pointer.cpp +1 -1
  94. data/ext/reflex/pointer_event.cpp +2 -2
  95. data/ext/reflex/polygon_shape.cpp +1 -1
  96. data/ext/reflex/rect_shape.cpp +1 -1
  97. data/ext/reflex/reflex.cpp +568 -232
  98. data/ext/reflex/screen.cpp +31 -2
  99. data/ext/reflex/scroll_event.cpp +1 -1
  100. data/ext/reflex/selector.cpp +1 -1
  101. data/ext/reflex/selector.h +9 -9
  102. data/ext/reflex/shape.cpp +1 -1
  103. data/ext/reflex/snap_constraint.cpp +1 -1
  104. data/ext/reflex/style.cpp +1 -1
  105. data/ext/reflex/style_length.cpp +1 -1
  106. data/ext/reflex/text_event.cpp +111 -0
  107. data/ext/reflex/timer.cpp +1 -1
  108. data/ext/reflex/timer_event.cpp +1 -1
  109. data/ext/reflex/update_event.cpp +1 -1
  110. data/ext/reflex/view.cpp +121 -61
  111. data/ext/reflex/wheel_constraint.cpp +1 -1
  112. data/ext/reflex/wheel_event.cpp +1 -1
  113. data/ext/reflex/window.cpp +256 -25
  114. data/include/reflex/application.h +10 -0
  115. data/include/reflex/color_picker.h +65 -0
  116. data/include/reflex/event.h +178 -88
  117. data/include/reflex/file_dialog.h +73 -0
  118. data/include/reflex/gamepad.h +3 -0
  119. data/include/reflex/menu.h +3 -3
  120. data/include/reflex/midi.h +3 -0
  121. data/include/reflex/reflex.h +2 -0
  122. data/include/reflex/ruby/application.h +6 -1
  123. data/include/reflex/ruby/color_picker.h +89 -0
  124. data/include/reflex/ruby/event.h +62 -29
  125. data/include/reflex/ruby/file_dialog.h +89 -0
  126. data/include/reflex/ruby/gamepad.h +46 -0
  127. data/include/reflex/ruby/reflex.h +3 -0
  128. data/include/reflex/ruby/view.h +92 -44
  129. data/include/reflex/ruby/window.h +60 -1
  130. data/include/reflex/ruby.h +3 -0
  131. data/include/reflex/screen.h +11 -2
  132. data/include/reflex/view.h +28 -16
  133. data/include/reflex/window.h +40 -8
  134. data/include/reflex.h +3 -0
  135. data/lib/reflex/application.rb +5 -5
  136. data/lib/reflex/autoinit.rb +3 -1
  137. data/lib/reflex/button.rb +3 -3
  138. data/lib/reflex/color_event.rb +16 -0
  139. data/lib/reflex/color_picker.rb +45 -0
  140. data/lib/reflex/control_change_event.rb +17 -0
  141. data/lib/reflex/file_dialog.rb +70 -0
  142. data/lib/reflex/file_event.rb +37 -0
  143. data/lib/reflex/helper.rb +58 -7
  144. data/lib/reflex/key_event.rb +9 -4
  145. data/lib/reflex/menu.rb +17 -1
  146. data/lib/reflex/model.rb +19 -19
  147. data/lib/reflex/note_event.rb +1 -1
  148. data/lib/reflex/pointer.rb +14 -3
  149. data/lib/reflex/pointer_event.rb +12 -1
  150. data/lib/reflex/reflex.rb +5 -0
  151. data/lib/reflex/shape.rb +14 -14
  152. data/lib/reflex/style.rb +16 -16
  153. data/lib/reflex/text_event.rb +40 -0
  154. data/lib/reflex/timer.rb +3 -3
  155. data/lib/reflex/view.rb +29 -14
  156. data/lib/reflex/wheel_event.rb +12 -3
  157. data/lib/reflex/window.rb +25 -13
  158. data/lib/reflex.rb +8 -2
  159. data/reflex.gemspec +4 -4
  160. data/samples/ime.rb +100 -0
  161. data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
  162. data/samples/menu.rb +4 -1
  163. data/samples/model.rb +3 -3
  164. data/samples/test/alert.rb +93 -0
  165. data/samples/test/always_on.rb +76 -0
  166. data/samples/test/app_background.rb +51 -0
  167. data/samples/test/boundary.rb +75 -0
  168. data/samples/test/callback_exception.rb +101 -0
  169. data/samples/test/cancel.rb +53 -0
  170. data/samples/test/color_picker.rb +63 -0
  171. data/samples/test/file_dialog.rb +102 -0
  172. data/samples/window_style.rb +156 -0
  173. data/src/application.cpp +159 -18
  174. data/src/application.h +92 -7
  175. data/src/color_picker.cpp +113 -0
  176. data/src/color_picker.h +36 -0
  177. data/src/event.cpp +410 -252
  178. data/src/event.h +12 -0
  179. data/src/file_dialog.cpp +163 -0
  180. data/src/file_dialog.h +52 -0
  181. data/src/gamepad.cpp +42 -5
  182. data/src/gamepad.h +4 -0
  183. data/src/ios/app_delegate.mm +5 -3
  184. data/src/ios/application.mm +24 -0
  185. data/src/ios/color_picker.mm +19 -0
  186. data/src/ios/file_dialog.mm +21 -0
  187. data/src/ios/gamepad.mm +4 -4
  188. data/src/ios/menu.mm +5 -0
  189. data/src/ios/reflex.mm +8 -0
  190. data/src/ios/screen.mm +26 -0
  191. data/src/ios/view_controller.mm +2 -30
  192. data/src/ios/window.mm +38 -9
  193. data/src/menu.cpp +66 -4
  194. data/src/menu.h +17 -1
  195. data/src/midi.cpp +61 -31
  196. data/src/osx/app_delegate.h +4 -0
  197. data/src/osx/app_delegate.mm +102 -22
  198. data/src/osx/application.mm +88 -6
  199. data/src/osx/color_picker.mm +112 -0
  200. data/src/osx/event.h +10 -0
  201. data/src/osx/event.mm +84 -30
  202. data/src/osx/file_dialog.mm +168 -0
  203. data/src/osx/gamepad.mm +2 -2
  204. data/src/osx/gamepad_hid.mm +1 -1
  205. data/src/osx/menu.mm +177 -33
  206. data/src/osx/native_window.h +16 -2
  207. data/src/osx/native_window.mm +114 -57
  208. data/src/osx/opengl_view.h +2 -1
  209. data/src/osx/opengl_view.mm +184 -43
  210. data/src/osx/reflex.mm +38 -0
  211. data/src/osx/screen.mm +36 -0
  212. data/src/osx/window.mm +106 -24
  213. data/src/pointer.cpp +13 -4
  214. data/src/pointer.h +4 -0
  215. data/src/rays.h +46 -0
  216. data/src/sdl/application.cpp +68 -8
  217. data/src/sdl/color_picker.cpp +18 -0
  218. data/src/sdl/event.cpp +24 -3
  219. data/src/sdl/event.h +12 -0
  220. data/src/sdl/file_dialog.cpp +20 -0
  221. data/src/sdl/gamepad.cpp +3 -7
  222. data/src/sdl/menu.cpp +5 -0
  223. data/src/sdl/reflex.cpp +20 -0
  224. data/src/sdl/screen.cpp +36 -0
  225. data/src/sdl/window.cpp +142 -29
  226. data/src/shape.cpp +15 -10
  227. data/src/view.cpp +287 -198
  228. data/src/view.h +4 -2
  229. data/src/vk.h +416 -0
  230. data/src/win32/application.cpp +162 -12
  231. data/src/win32/application.h +20 -0
  232. data/src/win32/color_picker.cpp +82 -0
  233. data/src/win32/event.cpp +114 -12
  234. data/src/win32/event.h +21 -4
  235. data/src/win32/file_dialog.cpp +226 -0
  236. data/src/win32/gamepad.cpp +9 -2
  237. data/src/win32/menu.cpp +191 -53
  238. data/src/win32/menu.h +9 -1
  239. data/src/win32/opengl.cpp +2 -9
  240. data/src/win32/reflex.cpp +44 -3
  241. data/src/win32/screen.cpp +164 -3
  242. data/src/win32/screen.h +8 -0
  243. data/src/win32/tray.cpp +191 -0
  244. data/src/win32/tray.h +22 -0
  245. data/src/win32/vk.cpp +11 -0
  246. data/src/win32/window.cpp +809 -148
  247. data/src/win32/window.h +6 -0
  248. data/src/window.cpp +718 -185
  249. data/src/window.h +66 -33
  250. data/src/world.cpp +9 -1
  251. data/test/helper.rb +17 -0
  252. data/test/test_application.rb +90 -1
  253. data/test/test_chase_constraint.rb +1 -3
  254. data/test/test_color_event.rb +36 -0
  255. data/test/test_color_picker.rb +62 -0
  256. data/test/test_constraint.rb +2 -4
  257. data/test/test_event.rb +1 -1
  258. data/test/test_file_dialog.rb +48 -0
  259. data/test/test_file_event.rb +43 -0
  260. data/test/test_has_text_preedit.rb +54 -0
  261. data/test/test_key_event.rb +20 -5
  262. data/test/test_link_constraint.rb +1 -3
  263. data/test/test_menu.rb +40 -10
  264. data/test/test_pointer.rb +33 -23
  265. data/test/test_pointer_event.rb +24 -9
  266. data/test/test_reflex.rb +36 -0
  267. data/test/test_screen.rb +24 -2
  268. data/test/test_snap_constraint.rb +1 -3
  269. data/test/test_text_event.rb +54 -0
  270. data/test/test_view.rb +41 -4
  271. data/test/test_wheel_constraint.rb +1 -3
  272. data/test/test_wheel_event.rb +13 -5
  273. data/test/test_window.rb +196 -44
  274. metadata +80 -10
  275. data/.github/workflows/utils.rb +0 -127
data/test/test_window.rb CHANGED
@@ -3,78 +3,84 @@ require_relative 'helper'
3
3
 
4
4
  class TestWindow < Test::Unit::TestCase
5
5
 
6
- def win(*a, **k, &b)
7
- Reflex::Window.new(*a, **k, &b)
8
- end
6
+ include HasWindow
9
7
 
10
8
  def point(*a) Reflex::Point.new(*a) end
11
9
  def bounds(*a) Reflex::Bounds.new(*a) end
12
10
 
13
11
  def test_show_hide_hidden()
14
- w = win
15
- assert_true w.hidden
12
+ w = window
13
+ assert_true w.hidden?
16
14
  w.show
17
- assert_false w.hidden
15
+ assert_false w.hidden?
18
16
  w.hide
19
- assert_true w.hidden
17
+ assert_true w.hidden?
20
18
  end
21
19
 
22
20
  def test_hidden_count()
23
- w = win
21
+ w = window
24
22
  w.hide
25
- assert_true w.hidden
23
+ assert_true w.hidden?
26
24
  w.show
27
- assert_true w.hidden
25
+ assert_true w.hidden?
28
26
  w.show
29
- assert_false w.hidden
27
+ assert_false w.hidden?
30
28
  end
31
29
 
32
30
  def test_coord_conversion()
33
- w = win x: 100, y: 200
31
+ w = window x: 100, y: 200
34
32
  assert_equal [400, 300], w.from_screen(500).to_a
35
33
  assert_equal [600, 700], w. to_screen(500).to_a
36
34
  end
37
35
 
38
36
  def test_title()
39
- w = win
37
+ w = window
40
38
  assert_equal '', w.title
41
39
  w.title = 'A'
42
40
  assert_equal 'A', w.title
43
41
  end
44
42
 
45
43
  def test_frame()
46
- w = win
44
+ w = window
47
45
  b = w.frame.dup
48
46
  assert_equal b, w.frame
49
47
 
50
- min_width = w.frame.width
51
- minw = -> value {[min_width, value].max}
48
+ w.frame = 1; assert_equal [0, 0, 1, 1], w.frame.to_a
49
+ w.frame = [1]; assert_equal [0, 0, 1, 1], w.frame.to_a
50
+ w.frame = [1, 2]; assert_equal [0, 0, 1, 2], w.frame.to_a
51
+ w.frame = [1, 2, 3]; assert_equal [0, 0, 1, 2], w.frame.to_a
52
+ w.frame = [1, 2, 3]; assert_equal [0, 0, 0, 1, 2, 0], w.frame.to_a(3)
53
+ w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 3, 4], w.frame.to_a
54
+ w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 0, 3, 4, 0], w.frame.to_a(3)
55
+ w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 4, 5], w.frame.to_a
56
+ w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
57
+
58
+ w.frame = point(1); assert_equal [0, 0, 1, 1], w.frame.to_a
59
+ w.frame = [point(1)]; assert_equal [0, 0, 1, 1], w.frame.to_a
60
+ w.frame = point(1, 2); assert_equal [0, 0, 1, 2], w.frame.to_a
61
+ w.frame = [point(1, 2)]; assert_equal [0, 0, 1, 2], w.frame.to_a
62
+ w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 3, 4], w.frame.to_a
63
+ w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 0, 3, 4, 0], w.frame.to_a(3)
64
+ w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 4, 5], w.frame.to_a
65
+ w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
66
+
67
+ w.frame = bounds(1, 2, 3, 4, 5, 6); assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
68
+ w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, 4, 5, 0], w.frame.to_a(3)
69
+ end
52
70
 
53
- w.frame = 1; assert_equal [0, 0, minw[1], 1], w.frame.to_a
54
- w.frame = [1]; assert_equal [0, 0, minw[1], 1], w.frame.to_a
55
- w.frame = [1, 2]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
56
- w.frame = [1, 2, 3]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
57
- w.frame = [1, 2, 3]; assert_equal [0, 0, 0, minw[1], 2, 0], w.frame.to_a(3)
58
- w.frame = [1, 2, 3, 4]; assert_equal [1, 2, minw[3], 4], w.frame.to_a
59
- w.frame = [1, 2, 3, 4]; assert_equal [1, 2, 0, minw[3], 4, 0], w.frame.to_a(3)
60
- w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, minw[4], 5], w.frame.to_a
61
- w.frame = [1, 2, 3, 4, 5, 6]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
71
+ def test_frame_without_titlebar()
72
+ w = window titlebar: []
73
+ b = [100, 100, 300, 400]
62
74
 
63
- w.frame = point(1); assert_equal [0, 0, minw[1], 1], w.frame.to_a
64
- w.frame = [point(1)]; assert_equal [0, 0, minw[1], 1], w.frame.to_a
65
- w.frame = point(1, 2); assert_equal [0, 0, minw[1], 2], w.frame.to_a
66
- w.frame = [point(1, 2)]; assert_equal [0, 0, minw[1], 2], w.frame.to_a
67
- w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, minw[3], 4], w.frame.to_a
68
- w.frame = [point(1, 2), point(3, 4)]; assert_equal [1, 2, 0, minw[3], 4, 0], w.frame.to_a(3)
69
- w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, minw[4], 5], w.frame.to_a
70
- w.frame = [point(1, 2, 3), point(4, 5, 6)]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
75
+ w.frame = b
76
+ assert_equal b, w.frame.to_a
71
77
 
72
- w.frame = bounds(1, 2, 3, 4, 5, 6); assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
73
- w.frame = [bounds(1, 2, 3, 4, 5, 6)]; assert_equal [1, 2, 0, minw[4], 5, 0], w.frame.to_a(3)
78
+ w.frame = w.frame
79
+ assert_equal b, w.frame.to_a
74
80
  end
75
81
 
76
82
  def test_menu()
77
- w = win
83
+ w = window
78
84
  m = Reflex::Menu.new
79
85
  assert_nil w.menu
80
86
  w.menu = m
@@ -84,7 +90,7 @@ class TestWindow < Test::Unit::TestCase
84
90
  end
85
91
 
86
92
  def test_closable?()
87
- w = win
93
+ w = window
88
94
  assert_true w.closable?
89
95
 
90
96
  w.closable = false
@@ -101,7 +107,7 @@ class TestWindow < Test::Unit::TestCase
101
107
  end
102
108
 
103
109
  def test_minimizable?()
104
- w = win
110
+ w = window
105
111
  assert_true w.minimizable?
106
112
 
107
113
  w.minimizable = false
@@ -118,7 +124,7 @@ class TestWindow < Test::Unit::TestCase
118
124
  end
119
125
 
120
126
  def test_resizable?()
121
- w = win
127
+ w = window
122
128
  assert_true w.resizable?
123
129
 
124
130
  w.resizable = false
@@ -134,8 +140,87 @@ class TestWindow < Test::Unit::TestCase
134
140
  assert_true w.resizable?
135
141
  end
136
142
 
143
+ def test_titlebar()
144
+ w = window
145
+ assert_equal [:buttons, :background], w.titlebar
146
+
147
+ w.titlebar = [:background]
148
+ assert_equal [:background], w.titlebar
149
+
150
+ if win32?
151
+ assert_raise(ArgumentError) {w.titlebar = [:buttons]}.then do |e|
152
+ assert_match(/buttons.*needs.*background/i, e.message)
153
+ end
154
+ else
155
+ w.titlebar = [:buttons]
156
+ assert_equal [:buttons], w.titlebar
157
+ end
158
+
159
+ w.titlebar = []
160
+ assert_equal [], w.titlebar
161
+
162
+ w.titlebar = [:buttons, :background]
163
+ assert_equal [:buttons, :background], w.titlebar
164
+
165
+ assert_equal [], window(titlebar: []).titlebar
166
+
167
+ assert_raise(ArgumentError) {w.titlebar = [:unknown]}
168
+ end
169
+
170
+ def test_unlisted?()
171
+ w = window
172
+ assert_false w.unlisted?
173
+
174
+ w.unlisted = true
175
+ assert_true w.unlisted?
176
+
177
+ w.unlisted = false
178
+ assert_false w.unlisted?
179
+
180
+ assert_true window(unlisted: true).unlisted?
181
+ end
182
+
183
+ def test_shadow?()
184
+ titlebar = win32? ? [] : [:buttons, :background]
185
+ w = window titlebar: titlebar
186
+ assert_true w.shadow?
187
+
188
+ w.shadow = false
189
+ assert_false w.shadow?
190
+
191
+ w.shadow = true
192
+ assert_true w.shadow?
193
+
194
+ w.shadow false
195
+ assert_false w.shadow?
196
+
197
+ w.shadow true
198
+ assert_true w.shadow?
199
+
200
+ assert_false window(titlebar: titlebar, shadow: false).shadow?
201
+ end
202
+
203
+ def test_transparent?()
204
+ w = window
205
+ assert_false w.transparent?
206
+
207
+ w.transparent = true
208
+ assert_true w.transparent?
209
+
210
+ w.transparent = false
211
+ assert_false w.transparent?
212
+
213
+ w.transparent true
214
+ assert_true w.transparent?
215
+
216
+ w.transparent false
217
+ assert_false w.transparent?
218
+
219
+ assert_true window(transparent: true).transparent?
220
+ end
221
+
137
222
  def test_fullscreen?()
138
- w = win
223
+ w = window
139
224
  assert_false w.fullscreen?
140
225
 
141
226
  w.fullscreen = true
@@ -151,8 +236,75 @@ class TestWindow < Test::Unit::TestCase
151
236
  assert_false w.fullscreen?
152
237
  end
153
238
 
239
+ def test_always_on_top_and_bottom?()
240
+ w = window
241
+ assert_false w.always_on_top?
242
+ assert_false w.always_on_bottom?
243
+
244
+ w.always_on_top = true
245
+ assert_true w.always_on_top?
246
+ assert_false w.always_on_bottom?
247
+
248
+ assert_true window(always_on_top: true).always_on_top?
249
+
250
+ if linux?
251
+ assert_raise(Rucy::NativeError) {w.always_on_bottom = true}
252
+ return
253
+ else
254
+ assert_true window(always_on_bottom: true).always_on_bottom?
255
+ end
256
+
257
+ w.always_on_bottom = true
258
+ assert_false w.always_on_top?
259
+ assert_true w.always_on_bottom?
260
+
261
+ w.always_on_bottom = false
262
+ assert_false w.always_on_top?
263
+ assert_false w.always_on_bottom?
264
+ end
265
+
266
+ def test_pointer_through?()
267
+ w = window
268
+ assert_false w.pointer_through?
269
+
270
+ if linux?
271
+ assert_raise(Rucy::NativeError) {w.pointer_through = true}
272
+ return
273
+ end
274
+
275
+ w.pointer_through = true
276
+ assert_true w.pointer_through?
277
+
278
+ w.pointer_through = false
279
+ assert_false w.pointer_through?
280
+
281
+ w.pointer_through true
282
+ assert_true w.pointer_through?
283
+
284
+ w.pointer_through false
285
+ assert_false w.pointer_through?
286
+
287
+ assert_true window(pointer_through: true).pointer_through?
288
+ end
289
+
290
+ def test_pointer_through_alpha()
291
+ w = window
292
+ assert_equal 1, w.pointer_through_alpha
293
+
294
+ w.pointer_through_alpha = 0.5
295
+ assert_equal 0.5, w.pointer_through_alpha
296
+
297
+ w.pointer_through_alpha 0
298
+ assert_equal 0, w.pointer_through_alpha
299
+
300
+ assert_raise(ArgumentError) {w.pointer_through_alpha = -0.1}
301
+ assert_raise(ArgumentError) {w.pointer_through_alpha = 1.1}
302
+
303
+ assert_equal 0.5, window(pointer_through_alpha: 0.5).pointer_through_alpha
304
+ end
305
+
154
306
  def test_orientations()
155
- w = win
307
+ w = window
156
308
  assert_equal [], w.orientations
157
309
 
158
310
  assert_raise(ArgumentError) {w.orientations = [:portrait]}.then do |e|
@@ -164,11 +316,11 @@ class TestWindow < Test::Unit::TestCase
164
316
  end
165
317
 
166
318
  def test_screen()
167
- assert_not_nil win.screen
319
+ assert_not_nil window.screen
168
320
  end
169
321
 
170
322
  def test_root()
171
- w = win
323
+ w = window
172
324
  assert_not_nil w.root
173
325
  assert_nil w.root.parent
174
326
  assert_equal 'ROOT', w.root.name
@@ -176,7 +328,7 @@ class TestWindow < Test::Unit::TestCase
176
328
  end
177
329
 
178
330
  def test_inspect()
179
- assert_match %r|#<Reflex::Window:0x\w{16}>|, win.inspect
331
+ assert_match %r|#<Reflex::Window:0x\w{16}>|, window.inspect
180
332
  end
181
333
 
182
334
  end# TestWindow