wxruby3 1.6.1 → 1.8.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 (642) hide show
  1. checksums.yaml +4 -4
  2. data/CREDITS.md +32 -25
  3. data/INSTALL.md +46 -6
  4. data/README.md +17 -17
  5. data/assets/repo-social-preview.odg +0 -0
  6. data/assets/repo-social-preview.xcf +0 -0
  7. data/ext/wxruby3/include/wxRubyApp.h +203 -91
  8. data/ext/wxruby3/include/wxruby-ComboPopup.h +25 -8
  9. data/ext/wxruby3/include/wxruby-GCTracking.h +262 -0
  10. data/ext/wxruby3/include/wxruby-MBConv.h +190 -0
  11. data/ext/wxruby3/include/wxruby-SharedEventHandler.h +183 -0
  12. data/ext/wxruby3/include/wxruby-SharedPtr.h +104 -0
  13. data/ext/wxruby3/include/wxruby-runtime.h +107 -1
  14. data/ext/wxruby3/swig/common.i +2 -2
  15. data/ext/wxruby3/swig/custom/director.swg +2 -2
  16. data/ext/wxruby3/swig/custom/rubyprimtypes.swg +59 -15
  17. data/ext/wxruby3/swig/custom/rubyrun.swg +4 -0
  18. data/ext/wxruby3/swig/custom/rubytracking.swg +9 -19
  19. data/ext/wxruby3/swig/custom/swiglabels.swg +129 -0
  20. data/ext/wxruby3/swig/custom/swigrun.swg +15 -0
  21. data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +20 -0
  22. data/ext/wxruby3/swig/custom/wx_ruby_shared_ptr.i +434 -0
  23. data/ext/wxruby3/swig/custom/wx_shared_ptr.i +431 -0
  24. data/ext/wxruby3/swig/mark_free_impl.i +83 -144
  25. data/ext/wxruby3/swig/memory_management.i +8 -43
  26. data/ext/wxruby3/swig/wx.i +88 -86
  27. data/lib/wx/aui/events/evt_list.rb +148 -0
  28. data/lib/wx/aui/require.rb +0 -1
  29. data/lib/wx/core/calendar_ctrl.rb +15 -0
  30. data/lib/wx/core/clipboard.rb +9 -13
  31. data/lib/wx/core/config.rb +1 -1
  32. data/lib/wx/core/const.rb +0 -1
  33. data/lib/wx/core/context_help.rb +17 -0
  34. data/lib/wx/core/cursor.rb +1 -0
  35. data/lib/wx/core/events/evt_list.rb +1458 -0
  36. data/lib/wx/core/font/encoding.rb +113 -0
  37. data/lib/wx/core/generic_validator.rb +83 -31
  38. data/lib/wx/core/helpcontrollerhelpprovider.rb +10 -2
  39. data/lib/wx/core/mbconv.rb +11 -0
  40. data/lib/wx/core/media_ctrl.rb +31 -0
  41. data/lib/wx/core/tipwindow.rb +16 -0
  42. data/lib/wx/core/top_level_window.rb +7 -0
  43. data/lib/wx/core.rb +6 -0
  44. data/lib/wx/doc/art_provider.rb +17 -0
  45. data/lib/wx/doc/aui/auitabctrl.rb +35 -0
  46. data/lib/wx/doc/config.rb +2 -2
  47. data/lib/wx/doc/context_help.rb +42 -0
  48. data/lib/wx/doc/core.rb +0 -5
  49. data/lib/wx/doc/functions.rb +11 -1
  50. data/lib/wx/doc/gen/about_dialog_info.rb +330 -0
  51. data/lib/wx/doc/gen/accelerator.rb +178 -0
  52. data/lib/wx/doc/gen/activity_indicator.rb +83 -0
  53. data/lib/wx/doc/gen/affine_matrix2d.rb +286 -0
  54. data/lib/wx/doc/gen/animation.rb +275 -0
  55. data/lib/wx/doc/gen/animation_ctrl.rb +300 -0
  56. data/lib/wx/doc/gen/any_button.rb +191 -0
  57. data/lib/wx/doc/gen/app.rb +463 -0
  58. data/lib/wx/doc/gen/app_traits.rb +396 -0
  59. data/lib/wx/doc/gen/art_provider.rb +617 -0
  60. data/lib/wx/doc/gen/aui/aui_dock_art.rb +455 -0
  61. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +54 -0
  62. data/lib/wx/doc/gen/aui/aui_manager.rb +847 -0
  63. data/lib/wx/doc/gen/aui/aui_manager_event.rb +131 -0
  64. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +180 -0
  65. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +59 -0
  66. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +130 -0
  67. data/lib/wx/doc/gen/aui/aui_notebook.rb +631 -0
  68. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +233 -0
  69. data/lib/wx/doc/gen/aui/aui_pane_info.rb +769 -0
  70. data/lib/wx/doc/gen/aui/aui_tab_art.rb +352 -0
  71. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +14 -0
  72. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +510 -0
  73. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +340 -0
  74. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +244 -0
  75. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +257 -0
  76. data/lib/wx/doc/gen/aui/event_list.rb +179 -0
  77. data/lib/wx/doc/gen/banner_window.rb +124 -0
  78. data/lib/wx/doc/gen/bitmap.rb +731 -0
  79. data/lib/wx/doc/gen/bitmap_button.rb +123 -0
  80. data/lib/wx/doc/gen/bitmap_combo_box.rb +221 -0
  81. data/lib/wx/doc/gen/book_ctrl_base.rb +274 -0
  82. data/lib/wx/doc/gen/book_ctrl_event.rb +66 -0
  83. data/lib/wx/doc/gen/box_sizer.rb +85 -0
  84. data/lib/wx/doc/gen/brush.rb +251 -0
  85. data/lib/wx/doc/gen/busy_info.rb +157 -0
  86. data/lib/wx/doc/gen/button.rb +182 -0
  87. data/lib/wx/doc/gen/calculate_layout_event.rb +62 -0
  88. data/lib/wx/doc/gen/calendar_ctrl.rb +505 -0
  89. data/lib/wx/doc/gen/calendar_date_attr.rb +138 -0
  90. data/lib/wx/doc/gen/calendar_event.rb +147 -0
  91. data/lib/wx/doc/gen/caret.rb +97 -0
  92. data/lib/wx/doc/gen/check_box.rb +175 -0
  93. data/lib/wx/doc/gen/check_list_box.rb +121 -0
  94. data/lib/wx/doc/gen/choice.rb +175 -0
  95. data/lib/wx/doc/gen/choicebook.rb +116 -0
  96. data/lib/wx/doc/gen/client_dc.rb +43 -0
  97. data/lib/wx/doc/gen/clipboard.rb +144 -0
  98. data/lib/wx/doc/gen/collapsible_pane.rb +138 -0
  99. data/lib/wx/doc/gen/collapsible_pane_event.rb +46 -0
  100. data/lib/wx/doc/gen/colour.rb +333 -0
  101. data/lib/wx/doc/gen/colour_dialog.rb +190 -0
  102. data/lib/wx/doc/gen/colour_picker_ctrl.rb +110 -0
  103. data/lib/wx/doc/gen/colour_picker_event.rb +77 -0
  104. data/lib/wx/doc/gen/combo_box.rb +292 -0
  105. data/lib/wx/doc/gen/combo_ctrl.rb +662 -0
  106. data/lib/wx/doc/gen/command_link_button.rb +134 -0
  107. data/lib/wx/doc/gen/config_base.rb +10 -0
  108. data/lib/wx/doc/gen/context_help_button.rb +56 -0
  109. data/lib/wx/doc/gen/control.rb +277 -0
  110. data/lib/wx/doc/gen/control_with_items.rb +253 -0
  111. data/lib/wx/doc/gen/core.rb +45 -0
  112. data/lib/wx/doc/gen/credential_entry_dialog.rb +137 -0
  113. data/lib/wx/doc/gen/cursor.rb +193 -0
  114. data/lib/wx/doc/gen/data_format.rb +85 -0
  115. data/lib/wx/doc/gen/data_object.rb +436 -0
  116. data/lib/wx/doc/gen/data_object_simple_base.rb +10 -0
  117. data/lib/wx/doc/gen/date_event.rb +49 -0
  118. data/lib/wx/doc/gen/date_picker_ctrl.rb +161 -0
  119. data/lib/wx/doc/gen/dc.rb +1631 -0
  120. data/lib/wx/doc/gen/dc_overlay.rb +102 -0
  121. data/lib/wx/doc/gen/defs.rb +2802 -0
  122. data/lib/wx/doc/gen/dial_up_event.rb +45 -0
  123. data/lib/wx/doc/gen/dial_up_manager.rb +149 -0
  124. data/lib/wx/doc/gen/dialog.rb +541 -0
  125. data/lib/wx/doc/gen/dir_dialog.rb +164 -0
  126. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +90 -0
  127. data/lib/wx/doc/gen/dir_picker_ctrl.rb +125 -0
  128. data/lib/wx/doc/gen/display.rb +238 -0
  129. data/lib/wx/doc/gen/drag_drop.rb +299 -0
  130. data/lib/wx/doc/gen/drag_image.rb +116 -0
  131. data/lib/wx/doc/gen/editable_list_box.rb +109 -0
  132. data/lib/wx/doc/gen/event.rb +990 -0
  133. data/lib/wx/doc/gen/event_blocker.rb +50 -0
  134. data/lib/wx/doc/gen/event_filter.rb +92 -0
  135. data/lib/wx/doc/gen/event_list.rb +1644 -0
  136. data/lib/wx/doc/gen/events.rb +2809 -0
  137. data/lib/wx/doc/gen/evt_handler.rb +229 -0
  138. data/lib/wx/doc/gen/ext_help_controller.rb +155 -0
  139. data/lib/wx/doc/gen/file_ctrl.rb +231 -0
  140. data/lib/wx/doc/gen/file_ctrl_event.rb +83 -0
  141. data/lib/wx/doc/gen/file_dialog.rb +353 -0
  142. data/lib/wx/doc/gen/file_dialog_custom_control.rb +165 -0
  143. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +158 -0
  144. data/lib/wx/doc/gen/file_dir_picker_event.rb +100 -0
  145. data/lib/wx/doc/gen/file_picker_ctrl.rb +132 -0
  146. data/lib/wx/doc/gen/file_system.rb +232 -0
  147. data/lib/wx/doc/gen/find_dialog_event.rb +126 -0
  148. data/lib/wx/doc/gen/find_replace_data.rb +60 -0
  149. data/lib/wx/doc/gen/find_replace_dialog.rb +58 -0
  150. data/lib/wx/doc/gen/flex_grid_sizer.rb +199 -0
  151. data/lib/wx/doc/gen/font.rb +1379 -0
  152. data/lib/wx/doc/gen/font_data.rb +151 -0
  153. data/lib/wx/doc/gen/font_dialog.rb +88 -0
  154. data/lib/wx/doc/gen/font_picker_ctrl.rb +143 -0
  155. data/lib/wx/doc/gen/font_picker_event.rb +65 -0
  156. data/lib/wx/doc/gen/frame.rb +352 -0
  157. data/lib/wx/doc/gen/fs_file.rb +337 -0
  158. data/lib/wx/doc/gen/functions.rb +10 -0
  159. data/lib/wx/doc/gen/gauge.rb +157 -0
  160. data/lib/wx/doc/gen/gb_sizer_item.rb +68 -0
  161. data/lib/wx/doc/gen/gcdc.rb +46 -0
  162. data/lib/wx/doc/gen/gdi_common.rb +1271 -0
  163. data/lib/wx/doc/gen/gdi_object.rb +31 -0
  164. data/lib/wx/doc/gen/generic_about_dialog.rb +140 -0
  165. data/lib/wx/doc/gen/generic_dir_ctrl.rb +223 -0
  166. data/lib/wx/doc/gen/geometry.rb +661 -0
  167. data/lib/wx/doc/gen/graphics_context.rb +1184 -0
  168. data/lib/wx/doc/gen/graphics_object.rb +750 -0
  169. data/lib/wx/doc/gen/grid/event_list.rb +191 -0
  170. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +40 -0
  171. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +280 -0
  172. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +35 -0
  173. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +37 -0
  174. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +49 -0
  175. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +35 -0
  176. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +46 -0
  177. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +38 -0
  178. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +45 -0
  179. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +40 -0
  180. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +197 -0
  181. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +39 -0
  182. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +44 -0
  183. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +45 -0
  184. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +79 -0
  185. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +46 -0
  186. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +35 -0
  187. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +108 -0
  188. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +35 -0
  189. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +49 -0
  190. data/lib/wx/doc/gen/grid/grid_ctrl.rb +3037 -0
  191. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +95 -0
  192. data/lib/wx/doc/gen/grid/grid_event.rb +129 -0
  193. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +104 -0
  194. data/lib/wx/doc/gen/grid/grid_size_event.rb +85 -0
  195. data/lib/wx/doc/gen/grid/grid_string_table.rb +142 -0
  196. data/lib/wx/doc/gen/grid/grid_table_base.rb +317 -0
  197. data/lib/wx/doc/gen/grid/grid_table_message.rb +81 -0
  198. data/lib/wx/doc/gen/grid_bag_sizer.rb +323 -0
  199. data/lib/wx/doc/gen/grid_sizer.rb +195 -0
  200. data/lib/wx/doc/gen/gui_event_loop.rb +159 -0
  201. data/lib/wx/doc/gen/h_scrolled_window.rb +562 -0
  202. data/lib/wx/doc/gen/header_ctrl.rb +880 -0
  203. data/lib/wx/doc/gen/header_ctrl_event.rb +133 -0
  204. data/lib/wx/doc/gen/help_controller.rb +238 -0
  205. data/lib/wx/doc/gen/help_provider.rb +98 -0
  206. data/lib/wx/doc/gen/html/event_list.rb +38 -0
  207. data/lib/wx/doc/gen/html/html_cell.rb +536 -0
  208. data/lib/wx/doc/gen/html/html_cell_event.rb +69 -0
  209. data/lib/wx/doc/gen/html/html_data_object.rb +42 -0
  210. data/lib/wx/doc/gen/html/html_easy_printing.rb +203 -0
  211. data/lib/wx/doc/gen/html/html_help_controller.rb +382 -0
  212. data/lib/wx/doc/gen/html/html_help_data.rb +159 -0
  213. data/lib/wx/doc/gen/html/html_help_window.rb +258 -0
  214. data/lib/wx/doc/gen/html/html_link_event.rb +41 -0
  215. data/lib/wx/doc/gen/html/html_list_box.rb +346 -0
  216. data/lib/wx/doc/gen/html/html_printout.rb +109 -0
  217. data/lib/wx/doc/gen/html/html_window.rb +461 -0
  218. data/lib/wx/doc/gen/hyperlink_ctrl.rb +311 -0
  219. data/lib/wx/doc/gen/hyperlink_event.rb +44 -0
  220. data/lib/wx/doc/gen/icon.rb +267 -0
  221. data/lib/wx/doc/gen/icon_location.rb +40 -0
  222. data/lib/wx/doc/gen/image.rb +1371 -0
  223. data/lib/wx/doc/gen/image_list.rb +168 -0
  224. data/lib/wx/doc/gen/info_bar.rb +195 -0
  225. data/lib/wx/doc/gen/keyboard_state.rb +140 -0
  226. data/lib/wx/doc/gen/list_box.rb +304 -0
  227. data/lib/wx/doc/gen/list_ctrl.rb +1774 -0
  228. data/lib/wx/doc/gen/list_event.rb +208 -0
  229. data/lib/wx/doc/gen/listbook.rb +116 -0
  230. data/lib/wx/doc/gen/locale.rb +4293 -0
  231. data/lib/wx/doc/gen/log.rb +603 -0
  232. data/lib/wx/doc/gen/mb_conv.rb +10 -0
  233. data/lib/wx/doc/gen/mdi_client_window.rb +47 -0
  234. data/lib/wx/doc/gen/mdi_frame.rb +324 -0
  235. data/lib/wx/doc/gen/media_ctrl.rb +269 -0
  236. data/lib/wx/doc/gen/media_event.rb +117 -0
  237. data/lib/wx/doc/gen/memory_dc.rb +174 -0
  238. data/lib/wx/doc/gen/menu.rb +509 -0
  239. data/lib/wx/doc/gen/menu_bar.rb +287 -0
  240. data/lib/wx/doc/gen/menu_item.rb +362 -0
  241. data/lib/wx/doc/gen/message_dialog.rb +238 -0
  242. data/lib/wx/doc/gen/mini_frame.rb +108 -0
  243. data/lib/wx/doc/gen/mirror_dc.rb +22 -0
  244. data/lib/wx/doc/gen/mouse_state.rb +150 -0
  245. data/lib/wx/doc/gen/multi_choice_dialog.rb +80 -0
  246. data/lib/wx/doc/gen/non_owned_window.rb +49 -0
  247. data/lib/wx/doc/gen/notebook.rb +278 -0
  248. data/lib/wx/doc/gen/num_validator.rb +37 -0
  249. data/lib/wx/doc/gen/number_entry_dialog.rb +93 -0
  250. data/lib/wx/doc/gen/object.rb +59 -0
  251. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +395 -0
  252. data/lib/wx/doc/gen/paint_dc.rb +27 -0
  253. data/lib/wx/doc/gen/palette.rb +92 -0
  254. data/lib/wx/doc/gen/panel.rb +127 -0
  255. data/lib/wx/doc/gen/pen.rb +511 -0
  256. data/lib/wx/doc/gen/persistence_manager.rb +135 -0
  257. data/lib/wx/doc/gen/persistent_object.rb +52 -0
  258. data/lib/wx/doc/gen/persistent_window.rb +241 -0
  259. data/lib/wx/doc/gen/pg/event_list.rb +106 -0
  260. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +54 -0
  261. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +292 -0
  262. data/lib/wx/doc/gen/pg/pg_cell.rb +177 -0
  263. data/lib/wx/doc/gen/pg/pg_editor.rb +721 -0
  264. data/lib/wx/doc/gen/pg/pg_multi_button.rb +152 -0
  265. data/lib/wx/doc/gen/pg/pg_properties.rb +2829 -0
  266. data/lib/wx/doc/gen/pg/pg_property.rb +2078 -0
  267. data/lib/wx/doc/gen/pg/pg_validation_info.rb +344 -0
  268. data/lib/wx/doc/gen/pg/property_grid.rb +740 -0
  269. data/lib/wx/doc/gen/pg/property_grid_event.rb +184 -0
  270. data/lib/wx/doc/gen/pg/property_grid_interface.rb +1098 -0
  271. data/lib/wx/doc/gen/pg/property_grid_manager.rb +415 -0
  272. data/lib/wx/doc/gen/pg/property_grid_page.rb +354 -0
  273. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +165 -0
  274. data/lib/wx/doc/gen/picker_base.rb +152 -0
  275. data/lib/wx/doc/gen/platform_info.rb +622 -0
  276. data/lib/wx/doc/gen/popup_window.rb +107 -0
  277. data/lib/wx/doc/gen/progress_dialog.rb +100 -0
  278. data/lib/wx/doc/gen/property_sheet_dialog.rb +216 -0
  279. data/lib/wx/doc/gen/prt/event_list.rb +17 -0
  280. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +44 -0
  281. data/lib/wx/doc/gen/prt/post_script_dc.rb +30 -0
  282. data/lib/wx/doc/gen/prt/preview_frame.rb +78 -0
  283. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +151 -0
  284. data/lib/wx/doc/gen/prt/print_data.rb +804 -0
  285. data/lib/wx/doc/gen/prt/print_dialog.rb +55 -0
  286. data/lib/wx/doc/gen/prt/printer.rb +518 -0
  287. data/lib/wx/doc/gen/prt/printer_dc.rb +37 -0
  288. data/lib/wx/doc/gen/query_layout_info_event.rb +106 -0
  289. data/lib/wx/doc/gen/radio_box.rb +306 -0
  290. data/lib/wx/doc/gen/radio_button.rb +159 -0
  291. data/lib/wx/doc/gen/rbn/event_list.rb +136 -0
  292. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1142 -0
  293. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +308 -0
  294. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +45 -0
  295. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +458 -0
  296. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +63 -0
  297. data/lib/wx/doc/gen/rbn/ribbon_control.rb +143 -0
  298. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +229 -0
  299. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +55 -0
  300. data/lib/wx/doc/gen/rbn/ribbon_page.rb +174 -0
  301. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +270 -0
  302. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +45 -0
  303. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +360 -0
  304. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +42 -0
  305. data/lib/wx/doc/gen/rearrange_ctrl.rb +78 -0
  306. data/lib/wx/doc/gen/rearrange_list.rb +123 -0
  307. data/lib/wx/doc/gen/region.rb +380 -0
  308. data/lib/wx/doc/gen/region_iterator.rb +76 -0
  309. data/lib/wx/doc/gen/rich_tool_tip.rb +154 -0
  310. data/lib/wx/doc/gen/rt/event_list.rb +17 -0
  311. data/lib/wx/doc/gen/rt/shared_evt_handler.rb +14 -0
  312. data/lib/wx/doc/gen/rt/thread_event.rb +71 -0
  313. data/lib/wx/doc/gen/rtc/event_list.rb +125 -0
  314. data/lib/wx/doc/gen/rtc/rich_text_box.rb +445 -0
  315. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +1188 -0
  316. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +41 -0
  317. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +538 -0
  318. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2103 -0
  319. data/lib/wx/doc/gen/rtc/rich_text_event.rb +173 -0
  320. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +181 -0
  321. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +319 -0
  322. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +193 -0
  323. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +102 -0
  324. data/lib/wx/doc/gen/rtc/rich_text_image.rb +337 -0
  325. data/lib/wx/doc/gen/rtc/rich_text_object.rb +2922 -0
  326. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +1240 -0
  327. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +258 -0
  328. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +344 -0
  329. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +227 -0
  330. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +59 -0
  331. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +169 -0
  332. data/lib/wx/doc/gen/sash_event.rb +147 -0
  333. data/lib/wx/doc/gen/sash_layout_window.rb +232 -0
  334. data/lib/wx/doc/gen/sash_window.rb +171 -0
  335. data/lib/wx/doc/gen/scaled_dc.rb +10 -0
  336. data/lib/wx/doc/gen/screen_dc.rb +30 -0
  337. data/lib/wx/doc/gen/scroll_bar.rb +204 -0
  338. data/lib/wx/doc/gen/scrolled_canvas.rb +410 -0
  339. data/lib/wx/doc/gen/scrolled_control.rb +410 -0
  340. data/lib/wx/doc/gen/scrolled_window.rb +430 -0
  341. data/lib/wx/doc/gen/search_ctrl.rb +159 -0
  342. data/lib/wx/doc/gen/secret_store.rb +116 -0
  343. data/lib/wx/doc/gen/simplebook.rb +110 -0
  344. data/lib/wx/doc/gen/single_choice_dialog.rb +89 -0
  345. data/lib/wx/doc/gen/sizer.rb +945 -0
  346. data/lib/wx/doc/gen/sizer_item.rb +244 -0
  347. data/lib/wx/doc/gen/slider.rb +342 -0
  348. data/lib/wx/doc/gen/spin_button.rb +157 -0
  349. data/lib/wx/doc/gen/spin_ctrl.rb +231 -0
  350. data/lib/wx/doc/gen/spin_ctrl_double.rb +192 -0
  351. data/lib/wx/doc/gen/spin_double_event.rb +55 -0
  352. data/lib/wx/doc/gen/spin_event.rb +51 -0
  353. data/lib/wx/doc/gen/splash_screen.rb +113 -0
  354. data/lib/wx/doc/gen/splitter_event.rb +99 -0
  355. data/lib/wx/doc/gen/splitter_window.rb +498 -0
  356. data/lib/wx/doc/gen/static_bitmap.rb +256 -0
  357. data/lib/wx/doc/gen/static_box.rb +180 -0
  358. data/lib/wx/doc/gen/static_box_sizer.rb +85 -0
  359. data/lib/wx/doc/gen/static_line.rb +83 -0
  360. data/lib/wx/doc/gen/static_text.rb +127 -0
  361. data/lib/wx/doc/gen/status_bar.rb +290 -0
  362. data/lib/wx/doc/gen/stc/event_list.rb +221 -0
  363. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4474 -0
  364. data/lib/wx/doc/gen/stc/styled_text_event.rb +8762 -0
  365. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +129 -0
  366. data/lib/wx/doc/gen/svg_file_dc.rb +164 -0
  367. data/lib/wx/doc/gen/system_options.rb +129 -0
  368. data/lib/wx/doc/gen/system_settings.rb +507 -0
  369. data/lib/wx/doc/gen/task_bar_icon.rb +127 -0
  370. data/lib/wx/doc/gen/task_bar_icon_event.rb +88 -0
  371. data/lib/wx/doc/gen/text_attr.rb +756 -0
  372. data/lib/wx/doc/gen/text_ctrl.rb +1033 -0
  373. data/lib/wx/doc/gen/text_entry.rb +441 -0
  374. data/lib/wx/doc/gen/text_entry_dialog.rb +220 -0
  375. data/lib/wx/doc/gen/text_validator.rb +245 -0
  376. data/lib/wx/doc/gen/time_picker_ctrl.rb +128 -0
  377. data/lib/wx/doc/gen/timer.rb +119 -0
  378. data/lib/wx/doc/gen/timer_event.rb +68 -0
  379. data/lib/wx/doc/gen/tip_provider.rb +63 -0
  380. data/lib/wx/doc/gen/tip_window.rb +51 -0
  381. data/lib/wx/doc/gen/toggle_button.rb +182 -0
  382. data/lib/wx/doc/gen/tool_bar.rb +890 -0
  383. data/lib/wx/doc/gen/tool_tip.rb +86 -0
  384. data/lib/wx/doc/gen/toolbook.rb +118 -0
  385. data/lib/wx/doc/gen/top_level_window.rb +516 -0
  386. data/lib/wx/doc/gen/tree_ctrl.rb +1052 -0
  387. data/lib/wx/doc/gen/tree_event.rb +127 -0
  388. data/lib/wx/doc/gen/treebook.rb +180 -0
  389. data/lib/wx/doc/gen/ui_action_simulator.rb +109 -0
  390. data/lib/wx/doc/gen/utils.rb +273 -0
  391. data/lib/wx/doc/gen/v_list_box.rb +272 -0
  392. data/lib/wx/doc/gen/v_scrolled_canvas.rb +195 -0
  393. data/lib/wx/doc/gen/v_scrolled_window.rb +191 -0
  394. data/lib/wx/doc/gen/validator.rb +68 -0
  395. data/lib/wx/doc/gen/variant.rb +294 -0
  396. data/lib/wx/doc/gen/web/event_list.rb +95 -0
  397. data/lib/wx/doc/gen/web/web_view.rb +1136 -0
  398. data/lib/wx/doc/gen/web/web_view_event.rb +210 -0
  399. data/lib/wx/doc/gen/web/web_view_handler.rb +318 -0
  400. data/lib/wx/doc/gen/window.rb +2917 -0
  401. data/lib/wx/doc/gen/window_dc.rb +38 -0
  402. data/lib/wx/doc/gen/window_disabler.rb +30 -0
  403. data/lib/wx/doc/gen/with_images.rb +84 -0
  404. data/lib/wx/doc/gen/wizard.rb +257 -0
  405. data/lib/wx/doc/gen/wizard_event.rb +113 -0
  406. data/lib/wx/doc/gen/wizard_page.rb +65 -0
  407. data/lib/wx/doc/gen/wizard_page_simple.rb +88 -0
  408. data/lib/wx/doc/gen/wrap_sizer.rb +79 -0
  409. data/lib/wx/doc/gen/xml_node.rb +316 -0
  410. data/lib/wx/doc/gen/xml_resource.rb +320 -0
  411. data/lib/wx/doc/generic_validator.rb +5 -0
  412. data/lib/wx/doc/html/html_help_controller.rb +23 -1
  413. data/lib/wx/doc/mbconv.rb +108 -0
  414. data/lib/wx/doc/rt/shared_event_handler.rb +49 -0
  415. data/lib/wx/doc/rt/thread_event.rb +28 -0
  416. data/lib/wx/doc/tip_window.rb +18 -6
  417. data/lib/wx/doc/webview.rb +40 -0
  418. data/lib/wx/grid/events/evt_list.rb +166 -0
  419. data/lib/wx/helpers.rb +1 -1
  420. data/lib/wx/html/events/evt_list.rb +27 -0
  421. data/lib/wx/html/htmlhelpcontroller.rb +10 -0
  422. data/lib/wx/html/simple_html_listbox.rb +46 -33
  423. data/lib/wx/keyword_defs.rb +20 -0
  424. data/lib/wx/pg/events/evt_list.rb +73 -0
  425. data/lib/wx/pg/pg_property.rb +26 -0
  426. data/lib/wx/pg/property_grid_interface.rb +2 -2
  427. data/lib/wx/rbn/events/evt_list.rb +102 -0
  428. data/lib/wx/rt/events/evt_list.rb +8 -0
  429. data/lib/wx/rt/require.rb +8 -0
  430. data/lib/wx/rt/thread_event.rb +14 -0
  431. data/lib/wx/rt.rb +16 -0
  432. data/lib/wx/rtc/events/evt_list.rb +98 -0
  433. data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
  434. data/lib/wx/stc/events/evt_list.rb +178 -0
  435. data/lib/wx/version.rb +1 -1
  436. data/lib/wx/web/events/evt_list.rb +74 -0
  437. data/lib/wx/web/require.rb +8 -0
  438. data/lib/wx/web/webview.rb +106 -0
  439. data/lib/wx/web.rb +17 -0
  440. data/lib/wx/wxruby/cmd/setup.rb +21 -0
  441. data/lib/wx.rb +2 -0
  442. data/rakelib/configure.rb +33 -0
  443. data/rakelib/gem.rake +3 -2
  444. data/rakelib/gem.rb +3 -2
  445. data/rakelib/install.rb +54 -27
  446. data/rakelib/lib/config/linux.rb +1 -1
  447. data/rakelib/lib/config/macosx.rb +22 -6
  448. data/rakelib/lib/config/mingw.rb +66 -5
  449. data/rakelib/lib/config/pkgman/linux.rb +7 -2
  450. data/rakelib/lib/config/pkgman/mingw.rb +1 -1
  451. data/rakelib/lib/config/unixish.rb +7 -5
  452. data/rakelib/lib/config.rb +52 -7
  453. data/rakelib/lib/core/include/client_data.inc +38 -17
  454. data/rakelib/lib/core/include/funcall.inc +1 -1
  455. data/rakelib/lib/core/include/swigdirector.inc +6 -6
  456. data/rakelib/lib/core/include/swigrubyerrors.inc +4 -8
  457. data/rakelib/lib/core/include/swigrubyrun.inc +34 -30
  458. data/rakelib/lib/core/include/swigrun.inc +189 -0
  459. data/rakelib/lib/core/package.rb +3 -3
  460. data/rakelib/lib/director/accelerator.rb +1 -1
  461. data/rakelib/lib/director/animation.rb +1 -0
  462. data/rakelib/lib/director/app.rb +1 -8
  463. data/rakelib/lib/director/app_traits.rb +1 -1
  464. data/rakelib/lib/director/art_provider.rb +7 -3
  465. data/rakelib/lib/director/aui_manager.rb +21 -14
  466. data/rakelib/lib/director/aui_mdi_child_frame.rb +2 -0
  467. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -0
  468. data/rakelib/lib/director/aui_notebook.rb +20 -3
  469. data/rakelib/lib/director/aui_tab_ctrl.rb +64 -106
  470. data/rakelib/lib/director/calendar_ctrl.rb +72 -14
  471. data/rakelib/lib/director/clipboard.rb +2 -0
  472. data/rakelib/lib/director/comboctrl.rb +0 -7
  473. data/rakelib/lib/director/context_help_button.rb +35 -2
  474. data/rakelib/lib/director/data_object.rb +15 -7
  475. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  476. data/rakelib/lib/director/display.rb +81 -0
  477. data/rakelib/lib/director/event.rb +33 -16
  478. data/rakelib/lib/director/event_handler.rb +59 -30
  479. data/rakelib/lib/director/fs_file.rb +15 -10
  480. data/rakelib/lib/director/functions.rb +17 -0
  481. data/rakelib/lib/director/geometry.rb +5 -0
  482. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  483. data/rakelib/lib/director/grid_cell_editor.rb +14 -12
  484. data/rakelib/lib/director/grid_cell_renderer.rb +11 -8
  485. data/rakelib/lib/director/grid_ctrl.rb +231 -117
  486. data/rakelib/lib/director/help_controller.rb +70 -2
  487. data/rakelib/lib/director/help_provider.rb +1 -1
  488. data/rakelib/lib/director/html_listbox.rb +16 -3
  489. data/rakelib/lib/director/hvscrolled.rb +7 -106
  490. data/rakelib/lib/director/image_list.rb +1 -0
  491. data/rakelib/lib/director/mb_conv.rb +30 -0
  492. data/rakelib/lib/director/mdi_frame.rb +4 -0
  493. data/rakelib/lib/director/menu.rb +113 -22
  494. data/rakelib/lib/director/menu_bar.rb +103 -2
  495. data/rakelib/lib/director/menu_item.rb +7 -1
  496. data/rakelib/lib/director/num_validator.rb +27 -0
  497. data/rakelib/lib/director/numeric_property_validator.rb +9 -0
  498. data/rakelib/lib/director/persistence_manager.rb +3 -2
  499. data/rakelib/lib/director/popup_window.rb +2 -0
  500. data/rakelib/lib/director/preview_frame.rb +28 -5
  501. data/rakelib/lib/director/printer.rb +59 -5
  502. data/rakelib/lib/director/property_grid.rb +37 -18
  503. data/rakelib/lib/director/property_grid_interface.rb +10 -8
  504. data/rakelib/lib/director/property_grid_manager.rb +99 -39
  505. data/rakelib/lib/director/property_grid_page.rb +60 -0
  506. data/rakelib/lib/director/rich_tooltip.rb +22 -0
  507. data/rakelib/lib/director/richtext_buffer.rb +5 -2
  508. data/rakelib/lib/director/richtext_ctrl.rb +5 -0
  509. data/rakelib/lib/director/richtext_object.rb +13 -4
  510. data/rakelib/lib/director/richtext_style_listbox.rb +4 -1
  511. data/rakelib/lib/director/scrolled_t.rb +3 -0
  512. data/rakelib/lib/director/searchctrl.rb +1 -0
  513. data/rakelib/lib/director/shared_evt_handler.rb +30 -0
  514. data/rakelib/lib/director/sizer.rb +8 -17
  515. data/rakelib/lib/director/sizer_item.rb +3 -4
  516. data/rakelib/lib/director/task_bar_icon.rb +18 -12
  517. data/rakelib/lib/director/text_validator.rb +9 -0
  518. data/rakelib/lib/director/thread_event.rb +33 -0
  519. data/rakelib/lib/director/tip_window.rb +117 -6
  520. data/rakelib/lib/director/tool_bar.rb +6 -0
  521. data/rakelib/lib/director/validator.rb +15 -1
  522. data/rakelib/lib/director/variant.rb +48 -28
  523. data/rakelib/lib/director/vlistbox.rb +25 -22
  524. data/rakelib/lib/director/webview.rb +166 -0
  525. data/rakelib/lib/director/webview_event.rb +37 -0
  526. data/rakelib/lib/director/webview_handler.rb +63 -0
  527. data/rakelib/lib/director/window.rb +10 -1
  528. data/rakelib/lib/director/xml_resource.rb +6 -0
  529. data/rakelib/lib/generate/doc/aui_manager.yaml +1 -1
  530. data/rakelib/lib/generate/doc/rich_tool_tip.yaml +26 -0
  531. data/rakelib/lib/generate/doc/thread_event.yaml +20 -0
  532. data/rakelib/lib/generate/doc/web_view.yaml +135 -0
  533. data/rakelib/lib/generate/doc/web_view_event.yaml +38 -0
  534. data/rakelib/lib/generate/doc/web_view_handler.yaml +58 -0
  535. data/rakelib/lib/generate/doc.rb +12 -7
  536. data/rakelib/lib/generate/interface.rb +16 -1
  537. data/rakelib/lib/specs/interfaces.rb +15 -1
  538. data/rakelib/lib/swig_runner.rb +10 -10
  539. data/rakelib/lib/typemap/aui_tabctrl.rb +46 -0
  540. data/rakelib/lib/typemap/common.rb +37 -4
  541. data/rakelib/lib/typemap/mb_conv.rb +58 -0
  542. data/rakelib/lib/typemap/print_page_range.rb +32 -8
  543. data/rakelib/prepost.rake +23 -31
  544. data/rakelib/prepost.rb +20 -0
  545. data/samples/art/wxruby-512x512.png +0 -0
  546. data/samples/calendar/calendar.rb +64 -1
  547. data/samples/dialogs/dialogs.rb +172 -0
  548. data/samples/dialogs/tip.xpm +157 -0
  549. data/samples/drawing/maths_images.rb +1 -1
  550. data/samples/event/event.rb +1 -1
  551. data/samples/event/threaded.rb +295 -42
  552. data/samples/event/tn_threaded.png +0 -0
  553. data/samples/help/doc/back.gif +0 -0
  554. data/samples/help/doc/contents.gif +0 -0
  555. data/samples/help/doc/cshelp.txt +9 -0
  556. data/samples/help/doc/doc.chm +0 -0
  557. data/samples/help/doc/doc.cnt +8 -0
  558. data/samples/help/doc/doc.h +7 -0
  559. data/samples/help/doc/doc.hhc +40 -0
  560. data/samples/help/doc/doc.hhk +31 -0
  561. data/samples/help/doc/doc.hhp +33 -0
  562. data/samples/help/doc/doc.hpj +21 -0
  563. data/samples/help/doc/doc.htm +27 -0
  564. data/samples/help/doc/doc1.htm +24 -0
  565. data/samples/help/doc/doc2.htm +12 -0
  566. data/samples/help/doc/doc3.htm +12 -0
  567. data/samples/help/doc/doc4.htm +12 -0
  568. data/samples/help/doc/doc5.htm +14 -0
  569. data/samples/help/doc/forward.gif +0 -0
  570. data/samples/help/doc/up.gif +0 -0
  571. data/samples/help/doc.chm +0 -0
  572. data/samples/help/doc.chw +0 -0
  573. data/samples/help/doc.zip +0 -0
  574. data/samples/help/help.rb +352 -0
  575. data/samples/help/tn_help.png +0 -0
  576. data/samples/printing/printing2.rb +1 -1
  577. data/samples/sampler.rb +26 -8
  578. data/samples/text/textctrl.rb +2 -2
  579. data/samples/treectrl/treectrl.rb +2 -2
  580. data/samples/webview/handler_advanced.html +55 -0
  581. data/samples/webview/tn_webview.png +0 -0
  582. data/samples/webview/webview.rb +1264 -0
  583. data/tests/assets/handler_advanced.html +55 -0
  584. data/tests/assets/test.css +1 -0
  585. data/tests/assets/test.html +9 -0
  586. data/tests/assets/test.zip +0 -0
  587. data/tests/lib/leaked_process_event_exception_test.rb +1 -1
  588. data/tests/lib/leaked_queued_event_exception_test.rb +1 -1
  589. data/tests/lib/text_entry_tests.rb +2 -2
  590. data/tests/lib/wxapp_runner.rb +65 -35
  591. data/tests/lib/wxframe_runner.rb +40 -13
  592. data/tests/lib/wxrb_test.rb +58 -0
  593. data/tests/test_app_event_filter.rb +1 -1
  594. data/tests/test_app_exit_exception.rb +3 -3
  595. data/tests/test_app_init_exception.rb +3 -3
  596. data/tests/test_app_traits.rb +24 -21
  597. data/tests/test_art.rb +14 -14
  598. data/tests/test_art_provider.rb +1 -1
  599. data/tests/test_basic.rb +2 -2
  600. data/tests/test_book_controls.rb +1 -1
  601. data/tests/test_box_sizer.rb +1 -1
  602. data/tests/test_clipboard.rb +9 -9
  603. data/tests/test_combo_ctrl.rb +2 -2
  604. data/tests/test_config.rb +17 -7
  605. data/tests/test_dc.rb +1 -1
  606. data/tests/test_dialog.rb +1 -1
  607. data/tests/test_event_handling.rb +1 -1
  608. data/tests/test_events.rb +1 -1
  609. data/tests/test_exceptions.rb +10 -8
  610. data/tests/test_ext_controls.rb +13 -13
  611. data/tests/test_file_dialog.rb +6 -6
  612. data/tests/test_font.rb +8 -8
  613. data/tests/test_gdi_object.rb +1 -1
  614. data/tests/test_geometry.rb +2 -2
  615. data/tests/test_grid_ctrl.rb +133 -0
  616. data/tests/test_grid_sizer.rb +2 -2
  617. data/tests/test_help.rb +88 -0
  618. data/tests/test_intl.rb +2 -2
  619. data/tests/test_item_data.rb +12 -12
  620. data/tests/test_list_ctrl.rb +1 -1
  621. data/tests/test_log.rb +2 -2
  622. data/tests/test_media_ctrl.rb +15 -7
  623. data/tests/test_menu.rb +81 -2
  624. data/tests/test_persistence.rb +1 -1
  625. data/tests/test_proof_check.rb +6 -6
  626. data/tests/test_propgrid.rb +32 -32
  627. data/tests/test_richtext.rb +10 -24
  628. data/tests/test_secret_store.rb +1 -1
  629. data/tests/test_shared_event_handler.rb +141 -0
  630. data/tests/test_sizer.rb +1 -1
  631. data/tests/test_std_controls.rb +13 -13
  632. data/tests/test_styled_text_ctrl.rb +1 -1
  633. data/tests/test_timer.rb +1 -1
  634. data/tests/test_tree_ctrl.rb +1 -1
  635. data/tests/test_validators.rb +79 -36
  636. data/tests/test_variant.rb +1 -1
  637. data/tests/test_webview.rb +492 -0
  638. data/tests/test_window.rb +14 -14
  639. data/tests/testapp.rb +2 -2
  640. data/tests/testapp_noframe.rb +2 -2
  641. metadata +476 -11
  642. data/lib/wx/aui/aui_tab_ctrl.rb +0 -18
@@ -16,12 +16,17 @@
16
16
  %}
17
17
 
18
18
  %{
19
- // Code to be run when the ruby object is swept by GC - this only
20
- // unlinks the C++ object from the ruby VALUE but doesn't delete
21
- // it because it is still needed and will be managed by WxWidgets.
22
- WXRUBY_EXPORT void GcNullFreeFunc(void *ptr)
19
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkSizer, "GC_MARK_SIZER")
20
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkWindow, "GC_MARK_WINDOW")
21
+ WXRUBY_TRACE_GUARD(WxRubyTraceFreeWindow, "GC_FREE_WINDOW")
22
+ WXRUBY_TRACE_GUARD(WxRubyTraceFreeRefcounted, "GC_FREE_REFCOUNT")
23
+
24
+ // Check if a Ruby object is (still) Ruby GC managed in which case it's
25
+ // 'dfree' function pointer should reference a specific free function
26
+ // and not be either 0 or a reference to the SWIG tracking removal function.
27
+ WXRUBY_EXPORT bool GC_IsObjectOwned(VALUE object)
23
28
  {
24
- SWIG_RubyRemoveTracking(ptr);
29
+ return RDATA(object)->dfree != SWIG_RubyRemoveTracking && RDATA(object)->dfree != 0;
25
30
  }
26
31
 
27
32
  // Tests if the window has been signalled as destroyed by a
@@ -41,6 +46,10 @@ WXRUBY_EXPORT bool GC_IsWindowDeleted(void *ptr)
41
46
  // WindowDestroyEvent, handled by wxRubyApp (see swig/classes/App.i).
42
47
  WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr)
43
48
  {
49
+ WXRUBY_TRACE_IF(WxRubyTraceFreeWindow, 2)
50
+ WXRUBY_TRACE("> GC_SetWindowDeleted : " << ptr)
51
+ WXRUBY_TRACE_END
52
+
44
53
  // All Windows are EvtHandlers, so prevent any pending events being
45
54
  // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
46
55
  wxEvtHandler* evt_handler = (wxEvtHandler*)ptr;
@@ -77,6 +86,10 @@ WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr)
77
86
  // Disassociate the C++ and Ruby objects
78
87
  SWIG_RubyUnlinkObjects(ptr);
79
88
  SWIG_RubyRemoveTracking(ptr);
89
+
90
+ WXRUBY_TRACE_IF(WxRubyTraceFreeWindow, 2)
91
+ WXRUBY_TRACE("< GC_SetWindowDeleted : " << ptr)
92
+ WXRUBY_TRACE_END
80
93
  }
81
94
 
82
95
  // Code to be run when the ruby object is swept by GC - this only
@@ -84,36 +97,37 @@ WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr)
84
97
  // reference counter.
85
98
  WXRUBY_EXPORT void GcRefCountedFreeFunc(void *ptr)
86
99
  {
100
+ WXRUBY_TRACE_IF(WxRubyTraceFreeRefcounted, 2)
101
+ WXRUBY_TRACE("> GcRefCountedFreeFunc : " << ptr)
102
+ WXRUBY_TRACE_END
103
+
87
104
  SWIG_RubyRemoveTracking(ptr);
88
105
  if (ptr)
89
106
  ((wxRefCounter*)ptr)->DecRef();
90
- }
91
107
 
92
- // Code to be run when the ruby object is swept by GC - this checks
93
- // for unattached sizers and deletes those, only unlinking others
94
- // as these will be managed by WxWidgets.
95
- WXRUBY_EXPORT void GcSizerFreeFunc(void *ptr)
96
- {
97
- wxSizer* wx_szr = (wxSizer*)ptr;
98
- // unlink in all cases
99
- SWIG_RubyRemoveTracking(ptr);
100
- delete wx_szr; // delete unattached sizers
108
+ WXRUBY_TRACE_IF(WxRubyTraceFreeRefcounted, 2)
109
+ WXRUBY_TRACE("< GcRefCountedFreeFunc")
110
+ WXRUBY_TRACE_END
101
111
  }
102
112
 
103
113
  void GC_mark_SizerBelongingToWindow(wxSizer *wx_sizer, VALUE rb_sizer);
104
114
 
105
115
  WXRUBY_EXPORT void GC_mark_wxSizer(void* ptr)
106
116
  {
117
+ WXRUBY_TRACE_IF(WxRubyTraceMarkSizer, 2)
118
+ WXRUBY_TRACE("> GC_mark_wxSizer : " << ptr)
119
+ WXRUBY_TRACE_END
120
+
107
121
  VALUE rb_szr = SWIG_RubyInstanceFor(ptr);
108
- if (rb_szr && rb_szr != Qnil)
122
+ if (!RB_NIL_P(rb_szr))
109
123
  {
110
- wxSizer* wx_szr = (wxSizer*)ptr;
111
-
112
- // as long as the dfree function is still the GCSizeFreeFunc the sizer has not been attached to a window
124
+ // as long as the dfree function is still the sizer's free function the sizer has not been attached to a window
113
125
  // or added to a parent sizer (as that would 'disown' and replace the free function by the tracking removal function)
114
126
  // but it may hay have already had child sizers added which need to be marked
115
- if (RDATA(rb_szr)->dfree == (void (*)(void *))GcSizerFreeFunc)
127
+ if (RDATA(rb_szr)->dfree != (void (*)(void *))SWIG_RubyRemoveTracking)
116
128
  {
129
+ wxSizer* wx_szr = (wxSizer*)ptr;
130
+
117
131
  // Then loop over the sizer's content and mark each sub-sizer
118
132
  wxSizerItemList& children = wx_szr->GetChildren();
119
133
  for ( wxSizerItemList::compatibility_iterator node = children.GetFirst();
@@ -134,6 +148,10 @@ WXRUBY_EXPORT void GC_mark_wxSizer(void* ptr)
134
148
  }
135
149
  }
136
150
  }
151
+
152
+ WXRUBY_TRACE_IF(WxRubyTraceMarkSizer, 2)
153
+ WXRUBY_TRACE("< GC_mark_wxSizer : " << ptr)
154
+ WXRUBY_TRACE_END
137
155
  }
138
156
 
139
157
  // Carries out marking of Sizer objects belonging to a Wx::Window. Note
@@ -144,10 +162,9 @@ WXRUBY_EXPORT void GC_mark_wxSizer(void* ptr)
144
162
  // directors, they must be preserved from GC.
145
163
  void GC_mark_SizerBelongingToWindow(wxSizer *wx_sizer, VALUE rb_sizer)
146
164
  {
147
- #ifdef __WXRB_DEBUG__
148
- if (wxRuby_TraceLevel()>1)
149
- std::wcout << "> GC_mark_SizerBelongingToWindow : " << wx_sizer << std::endl;
150
- #endif
165
+ WXRUBY_TRACE_IF(WxRubyTraceMarkSizer, 2)
166
+ WXRUBY_TRACE("> GC_mark_SizerBelongingToWindow : " << wx_sizer)
167
+ WXRUBY_TRACE_END
151
168
 
152
169
  // First, mark this sizer
153
170
  rb_gc_mark( rb_sizer );
@@ -170,104 +187,66 @@ void GC_mark_SizerBelongingToWindow(wxSizer *wx_sizer, VALUE rb_sizer)
170
187
  }
171
188
  }
172
189
 
173
- #ifdef __WXRB_DEBUG__
174
- if (wxRuby_TraceLevel()>1)
175
- std::wcout << "< GC_mark_SizerBelongingToWindow : " << wx_sizer << std::endl;
176
- #endif
177
- }
178
-
179
- // Similar to Sizers, MenuBar requires a special mark routine. This is
180
- // because Wx::Menu is not a subclass of Window so isn't automatically
181
- // protected in the mark phase by Wx::App. However, the ruby object
182
- // still must not be destroyed while it is still accessible on screen,
183
- // because it may still handle events. Rather than a SWIG %markfunc,
184
- // which can catch destroyed MenuBars linked to an in-scope ruby
185
- // variable and cause segfaults, MenuBars are always marked via the
186
- // containing Frame.
187
- void GC_mark_MenuBarBelongingToFrame(wxMenuBar *menu_bar)
188
- {
189
- #ifdef __WXRB_DEBUG__
190
- if (wxRuby_TraceLevel()>1)
191
- std::wcout << "> GC_mark_MenuBarBelongingToFrame : " << menu_bar << std::endl;
192
- #endif
193
-
194
- rb_gc_mark( SWIG_RubyInstanceFor(menu_bar) );
195
- // Mark each menu in the menubar in turn
196
- for ( size_t i = 0; i < menu_bar->GetMenuCount(); i++ )
197
- {
198
- wxMenu* menu = menu_bar->GetMenu(i);
199
- rb_gc_mark( SWIG_RubyInstanceFor(menu) );
200
- }
201
-
202
- #ifdef __WXRB_DEBUG__
203
- if (wxRuby_TraceLevel()>1)
204
- std::wcout << "< GC_mark_MenuBarBelongingToFrame : " << menu_bar << std::endl;
205
- #endif
190
+ WXRUBY_TRACE_IF(WxRubyTraceMarkSizer, 2)
191
+ WXRUBY_TRACE("< GC_mark_SizerBelongingToWindow : " << wx_sizer)
192
+ WXRUBY_TRACE_END
206
193
  }
207
194
 
208
195
  // Default mark routine for Windows - preserve the main sizer and caret
209
196
  // belong to this window
210
197
  WXRUBY_EXPORT void GC_mark_wxWindow(void *ptr)
211
198
  {
212
- #ifdef __WXRB_DEBUG__
213
- if (wxRuby_TraceLevel()>1)
214
- std::wcout << "> GC_mark_wxWindow : " << ptr << std::endl;
215
- #endif
199
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 2)
200
+ WXRUBY_TRACE("> GC_mark_wxWindow : " << ptr)
201
+ WXRUBY_TRACE_END
216
202
 
217
203
  if ( GC_IsWindowDeleted(ptr) )
218
204
  {
219
- #ifdef __WXRB_DEBUG__
220
- if (wxRuby_TraceLevel()>1)
221
- std::wcout << "< GC_mark_wxWindow : deleted" << std::endl;
222
- #endif
205
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 2)
206
+ WXRUBY_TRACE("< GC_mark_wxWindow : deleted")
207
+ WXRUBY_TRACE_END
223
208
  return;
224
209
  }
225
210
 
226
211
  wxWindow* wx_win = (wxWindow*)ptr;
227
- #ifdef __WXRB_DEBUG__
228
- if (wxRuby_TraceLevel()>2)
229
- std::wcout << "* GC_mark_wxWindow - getting sizer" << std::endl;
230
- #endif
212
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
213
+ WXRUBY_TRACE("| GC_mark_wxWindow : getting sizer")
214
+ WXRUBY_TRACE_END
231
215
  wxSizer* wx_sizer = wx_win->GetSizer();
232
216
  if ( wx_sizer )
233
217
  {
234
- #ifdef __WXRB_DEBUG__
235
- if (wxRuby_TraceLevel()>2)
236
- std::wcout << "* GC_mark_wxWindow - found sizer" << std::endl;
237
- #endif
218
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
219
+ WXRUBY_TRACE("| GC_mark_wxWindow : found sizer " << wx_sizer)
220
+ WXRUBY_TRACE_END
238
221
  VALUE rb_sizer = SWIG_RubyInstanceFor(wx_sizer);
239
222
  if ( rb_sizer != Qnil )
240
223
  GC_mark_SizerBelongingToWindow(wx_sizer, rb_sizer);
241
224
  }
242
225
 
243
226
  // mark any pushed event handlers
244
- #ifdef __WXRB_DEBUG__
245
- if (wxRuby_TraceLevel()>2)
246
- std::wcout << "* GC_mark_wxWindow - getting event handler" << std::endl;
247
- #endif
227
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
228
+ WXRUBY_TRACE("| GC_mark_wxWindow : getting event handler")
229
+ WXRUBY_TRACE_END
248
230
  wxEvtHandler* evh = wx_win->GetEventHandler();
249
231
  while (evh && evh != wx_win)
250
232
  {
251
- #ifdef __WXRB_DEBUG__
252
- if (wxRuby_TraceLevel()>2)
253
- std::wcout << "* GC_mark_wxWindow - marking event handler" << std::endl;
254
- #endif
233
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
234
+ WXRUBY_TRACE("| GC_mark_wxWindow : found event handler " << evh)
235
+ WXRUBY_TRACE_END
255
236
  VALUE rb_evh = SWIG_RubyInstanceFor(evh);
256
237
  rb_gc_mark(rb_evh);
257
238
  evh = evh->GetNextHandler();
258
239
  }
259
240
 
260
- #ifdef __WXRB_DEBUG__
261
- if (wxRuby_TraceLevel()>2)
262
- std::wcout << "* GC_mark_wxWindow - getting caret" << std::endl;
263
- #endif
241
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
242
+ WXRUBY_TRACE("| GC_mark_wxWindow : getting caret")
243
+ WXRUBY_TRACE_END
264
244
  wxCaret* wx_caret = wx_win->GetCaret();
265
245
  if ( wx_caret )
266
246
  {
267
- #ifdef __WXRB_DEBUG__
268
- if (wxRuby_TraceLevel()>2)
269
- std::wcout << "* GC_mark_wxWindow - found caret" << std::endl;
270
- #endif
247
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
248
+ WXRUBY_TRACE("| GC_mark_wxWindow : found caret " << wx_caret)
249
+ WXRUBY_TRACE_END
271
250
  VALUE rb_caret = SWIG_RubyInstanceFor(wx_caret);
272
251
  rb_gc_mark(rb_caret);
273
252
  }
@@ -275,76 +254,36 @@ WXRUBY_EXPORT void GC_mark_wxWindow(void *ptr)
275
254
  // be careful; getting drop target may require fully created window (default ctors do not call Create())
276
255
  if (wx_win->GetId() != wxID_ANY) // any fully created window has an Id != wxID_ANY
277
256
  {
278
- #ifdef __WXRB_DEBUG__
279
- if (wxRuby_TraceLevel()>2)
280
- std::wcout << "* GC_mark_wxWindow - getting droptarget" << std::endl;
281
- #endif
257
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
258
+ WXRUBY_TRACE("| GC_mark_wxWindow : getting droptarget")
259
+ WXRUBY_TRACE_END
282
260
  wxDropTarget* wx_droptarget = wx_win->GetDropTarget();
283
261
  if ( wx_droptarget )
284
262
  {
285
- #ifdef __WXRB_DEBUG__
286
- if (wxRuby_TraceLevel()>2)
287
- std::wcout << "* GC_mark_wxWindow - found droptarget" << std::endl;
288
- #endif
263
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
264
+ WXRUBY_TRACE("| GC_mark_wxWindow : found drop target " << wx_droptarget)
265
+ WXRUBY_TRACE_END
289
266
  VALUE rb_droptarget = SWIG_RubyInstanceFor(wx_droptarget);
290
267
  rb_gc_mark(rb_droptarget);
291
268
  }
292
269
  }
293
270
 
294
- #ifdef __WXRB_DEBUG__
295
- if (wxRuby_TraceLevel()>2)
296
- std::wcout << "* GC_mark_wxWindow - getting validator" << std::endl;
297
- #endif
271
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
272
+ WXRUBY_TRACE("| GC_mark_wxWindow : getting validator")
273
+ WXRUBY_TRACE_END
298
274
  wxValidator* wx_validator = wx_win->GetValidator();
299
275
  if ( wx_validator )
300
276
  {
301
- #ifdef __WXRB_DEBUG__
302
- if (wxRuby_TraceLevel()>2)
303
- std::wcout << "* GC_mark_wxWindow - found validator" << std::endl;
304
- #endif
277
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 3)
278
+ WXRUBY_TRACE("| GC_mark_wxWindow : found validator " << wx_validator)
279
+ WXRUBY_TRACE_END
305
280
  VALUE rb_validator = SWIG_RubyInstanceFor(wx_validator);
306
281
  rb_gc_mark(rb_validator);
307
282
  }
308
283
 
309
- #ifdef __WXRB_DEBUG__
310
- if (wxRuby_TraceLevel()>1)
311
- std::wcout << "< GC_mark_wxWindow : " << ptr << std::endl;
312
- #endif
284
+ WXRUBY_TRACE_IF(WxRubyTraceMarkWindow, 2)
285
+ WXRUBY_TRACE("< GC_mark_wxWindow : " << ptr)
286
+ WXRUBY_TRACE_END
313
287
  }
314
288
 
315
-
316
- WXRUBY_EXPORT void GC_mark_wxFrame(void *ptr)
317
- {
318
- #ifdef __WXRB_DEBUG__
319
- if (wxRuby_TraceLevel()>1)
320
- std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
321
- #endif
322
-
323
- if ( GC_IsWindowDeleted(ptr) )
324
- {
325
- #ifdef __WXRB_DEBUG__
326
- if (wxRuby_TraceLevel()>1)
327
- std::wcout << "> GC_mark_wxFrame : deleted" << std::endl;
328
- #endif
329
- return;
330
- }
331
-
332
- // Frames are also a subclass of wxWindow, so must do all the marking
333
- // of sizers and carets associated with that class
334
- GC_mark_wxWindow(ptr);
335
-
336
- wxFrame* wx_frame = (wxFrame*)ptr;
337
- // Then mark the MenuBar, if one is associated with this Frame
338
-
339
- wxMenuBar* menu_bar = wx_frame->GetMenuBar();
340
- if ( menu_bar )
341
- {
342
- GC_mark_MenuBarBelongingToFrame(menu_bar);
343
- }
344
-
345
- #ifdef __WXRB_DEBUG__
346
- if (wxRuby_TraceLevel()>1)
347
- std::wcout << "> GC_mark_wxFrame : " << ptr << std::endl;
348
- #endif
349
- }
350
289
  %}
@@ -9,30 +9,11 @@
9
9
  // This file, required by common.i defines a set of macros which are used
10
10
  // to specify memory management strategies for individual Wx classes.
11
11
 
12
- // Broadly speaking there are two different strategies:
13
- //
14
- // 1) For all classes which inherit from Wx::Window, including all Frames,
15
- // Dialogs and Controls: the C++ objects are managed by WxWidgets; when=
16
- // Frame is closed, it and all its contents are deleted. Therefore wxRuby
17
- // doesn't try to delete these objects as part of GC until they are known
18
- // to have been deleted. The instance of Wx::App watches for window
19
- // destruction, and in the GC-mark phase marks all Windows that are still
20
- // alive. [see App.i]
21
- //
22
- // 2) Almost all other classes are memory managed by wxRuby - that is, when
23
- // they have fallen out of scope and GC is run, the underlying C++ object
24
- // will be deleted too by the standard %freefunc.
25
-
26
-
27
12
  // These are implemented in swig/wx.i, so they are shared among all classes
28
13
  %{
29
- WXRUBY_EXPORT void GcNullFreeFunc(void *);
30
- WXRUBY_EXPORT void GcSizerFreeFunc(void *);
31
- WXRUBY_EXPORT void GcDialogFreeFunc(void *);
32
14
  WXRUBY_EXPORT void GcRefCountedFreeFunc(void *);
33
15
  WXRUBY_EXPORT void GC_mark_wxSizer(void *);
34
16
  WXRUBY_EXPORT void GC_mark_wxWindow(void *);
35
- WXRUBY_EXPORT void GC_mark_wxFrame(void *);
36
17
  WXRUBY_EXPORT void GC_mark_wxEvent(void *);
37
18
  %}
38
19
 
@@ -42,7 +23,7 @@ WXRUBY_EXPORT void GC_mark_wxEvent(void *);
42
23
  // all Windows, including Frames and Dialogs
43
24
  %define GC_NEVER(kls)
44
25
  %trackobjects kls;
45
- %feature("freefunc") kls "GcNullFreeFunc";
26
+ %feature("freefunc") kls "SWIG_RubyRemoveTracking";
46
27
  %enddef
47
28
 
48
29
  // Strategy for windows that aren't top-level windows. Here, the C++
@@ -60,26 +41,21 @@ GC_NEVER(kls);
60
41
  %enddef
61
42
 
62
43
  // Strategy for top-level frames - these are destroyed
63
- // automatically. Marking is the same as for Windows, plus preservation
64
- // of the associated MenuBar, if reuqired.
44
+ // automatically. Marking is the same as for Windows.
65
45
  %define GC_MANAGE_AS_FRAME(kls)
66
- GC_NEVER(kls);
67
- // Mark any associated sizer
68
- %feature("markfunc") kls "GC_mark_wxFrame";
46
+ GC_MANAGE_AS_WINDOW(kls);
69
47
  %enddef
70
48
 
71
49
  // Strategy for dialogs - these are NOT destroyed automatically
72
50
  %define GC_MANAGE_AS_DIALOG(kls)
73
- GC_NEVER(kls);
74
- // Mark any associated sizer
75
- %feature("markfunc") kls "GC_mark_wxWindow";
51
+ GC_MANAGE_AS_WINDOW(kls);
76
52
  %enddef
77
53
 
78
54
  // Events - most are created within wxWidgets C++ on the stack and thus
79
55
  // do not need deletion. These are passed into ruby via EvtHandler or
80
56
  // App methods, and are wrapped using wxRuby_WrapWxEventInRuby (see
81
- // wx.i). This gives them a void freefunc and markfunc and are NOT
82
- // tracked - they are treated as one-shot short-lived objects.
57
+ // wx.i). This gives them a null freefunc and markfunc and provides no
58
+ // tracking - they are treated as one-shot short-lived objects.
83
59
  //
84
60
  // However, custom events created on the ruby side need to be deleted to
85
61
  // avoid leakage as SWIG wrappers call C++ "new" to allocate the
@@ -112,15 +88,10 @@ GC_NEVER(kls);
112
88
  %define GC_MANAGE_AS_MARKED(kls)
113
89
  %enddef
114
90
 
115
- // Sizers attached to windows are automatically destroyed by wxWidgets,
116
- // so they should not be deleted.
117
- //
118
- // TODO - orphaned/unattached sizers are not automatically destroyed -
119
- // so the freefunc should check for this condition and do the delete if
120
- // required to prevent a memory leak.
91
+ // Attached sizers should only be marked by the window they are attached to.
121
92
  %define GC_MANAGE_AS_SIZER(kls)
122
93
  %trackobjects kls;
123
- %feature("freefunc") kls "GcSizerFreeFunc";
94
+ //%feature("freefunc") kls "GcSizerFreeFunc";
124
95
  %feature("markfunc") kls "GC_mark_wxSizer";
125
96
  %enddef
126
97
 
@@ -132,12 +103,6 @@ GC_NEVER(kls);
132
103
  %feature("freefunc") kls "GcRefCountedFreeFunc";
133
104
  %enddef
134
105
 
135
- // special refcounted for grid cell renderers/editors and attrs
136
- %define GC_MANAGE_AS_UNTRACKED_REFCOUNTED(kls)
137
- %feature("freefunc") kls "GcRefCountedFreeFunc";
138
- %enddef
139
-
140
-
141
106
  // All other classes - mainly helper classes (eg Sizer, GridCellxxx).
142
107
  // These are tracked but sometimes later disowned once passed into a
143
108
  // widget, and thenceforth managed by WxWidgets