wxruby3 1.6.1 → 1.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 (530) hide show
  1. checksums.yaml +4 -4
  2. data/CREDITS.md +32 -25
  3. data/INSTALL.md +19 -4
  4. data/README.md +5 -5
  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 +58 -45
  8. data/ext/wxruby3/include/wxruby-runtime.h +78 -1
  9. data/ext/wxruby3/swig/common.i +2 -2
  10. data/ext/wxruby3/swig/custom/director.swg +2 -2
  11. data/ext/wxruby3/swig/custom/rubyprimtypes.swg +59 -15
  12. data/ext/wxruby3/swig/custom/rubyrun.swg +4 -0
  13. data/ext/wxruby3/swig/custom/rubytracking.swg +4 -0
  14. data/ext/wxruby3/swig/custom/swiglabels.swg +129 -0
  15. data/ext/wxruby3/swig/custom/swigrun.swg +15 -0
  16. data/ext/wxruby3/swig/custom/typemaps/swigtypemaps.swg +20 -0
  17. data/ext/wxruby3/swig/mark_free_impl.i +152 -88
  18. data/ext/wxruby3/swig/memory_management.i +1 -0
  19. data/ext/wxruby3/swig/wx.i +73 -44
  20. data/lib/wx/aui/events/evt_list.rb +148 -0
  21. data/lib/wx/aui/require.rb +0 -1
  22. data/lib/wx/core/calendar_ctrl.rb +15 -0
  23. data/lib/wx/core/clipboard.rb +9 -13
  24. data/lib/wx/core/config.rb +1 -1
  25. data/lib/wx/core/events/evt_list.rb +1458 -0
  26. data/lib/wx/core/font/encoding.rb +113 -0
  27. data/lib/wx/core/generic_validator.rb +83 -31
  28. data/lib/wx/core/tipwindow.rb +16 -0
  29. data/lib/wx/doc/aui/auitabctrl.rb +35 -0
  30. data/lib/wx/doc/config.rb +2 -2
  31. data/lib/wx/doc/functions.rb +1 -1
  32. data/lib/wx/doc/gen/about_dialog_info.rb +330 -0
  33. data/lib/wx/doc/gen/accelerator.rb +178 -0
  34. data/lib/wx/doc/gen/activity_indicator.rb +83 -0
  35. data/lib/wx/doc/gen/affine_matrix2d.rb +284 -0
  36. data/lib/wx/doc/gen/animation.rb +275 -0
  37. data/lib/wx/doc/gen/animation_ctrl.rb +300 -0
  38. data/lib/wx/doc/gen/any_button.rb +191 -0
  39. data/lib/wx/doc/gen/app.rb +463 -0
  40. data/lib/wx/doc/gen/app_traits.rb +396 -0
  41. data/lib/wx/doc/gen/art_provider.rb +605 -0
  42. data/lib/wx/doc/gen/aui/aui_dock_art.rb +455 -0
  43. data/lib/wx/doc/gen/aui/aui_floating_frame.rb +54 -0
  44. data/lib/wx/doc/gen/aui/aui_manager.rb +847 -0
  45. data/lib/wx/doc/gen/aui/aui_manager_event.rb +131 -0
  46. data/lib/wx/doc/gen/aui/aui_mdi_child_frame.rb +180 -0
  47. data/lib/wx/doc/gen/aui/aui_mdi_client_window.rb +59 -0
  48. data/lib/wx/doc/gen/aui/aui_mdi_parent_frame.rb +130 -0
  49. data/lib/wx/doc/gen/aui/aui_notebook.rb +631 -0
  50. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +233 -0
  51. data/lib/wx/doc/gen/aui/aui_pane_info.rb +769 -0
  52. data/lib/wx/doc/gen/aui/aui_tab_art.rb +352 -0
  53. data/lib/wx/doc/gen/aui/aui_tab_ctrl.rb +14 -0
  54. data/lib/wx/doc/gen/aui/aui_tool_bar.rb +510 -0
  55. data/lib/wx/doc/gen/aui/aui_tool_bar_art.rb +340 -0
  56. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +244 -0
  57. data/lib/wx/doc/gen/aui/aui_tool_bar_item.rb +257 -0
  58. data/lib/wx/doc/gen/aui/event_list.rb +179 -0
  59. data/lib/wx/doc/gen/banner_window.rb +124 -0
  60. data/lib/wx/doc/gen/bitmap.rb +731 -0
  61. data/lib/wx/doc/gen/bitmap_button.rb +123 -0
  62. data/lib/wx/doc/gen/bitmap_combo_box.rb +221 -0
  63. data/lib/wx/doc/gen/book_ctrl_base.rb +273 -0
  64. data/lib/wx/doc/gen/book_ctrl_event.rb +66 -0
  65. data/lib/wx/doc/gen/box_sizer.rb +85 -0
  66. data/lib/wx/doc/gen/brush.rb +251 -0
  67. data/lib/wx/doc/gen/busy_info.rb +157 -0
  68. data/lib/wx/doc/gen/button.rb +182 -0
  69. data/lib/wx/doc/gen/calculate_layout_event.rb +62 -0
  70. data/lib/wx/doc/gen/calendar_ctrl.rb +505 -0
  71. data/lib/wx/doc/gen/calendar_date_attr.rb +138 -0
  72. data/lib/wx/doc/gen/calendar_event.rb +147 -0
  73. data/lib/wx/doc/gen/caret.rb +97 -0
  74. data/lib/wx/doc/gen/check_box.rb +175 -0
  75. data/lib/wx/doc/gen/check_list_box.rb +121 -0
  76. data/lib/wx/doc/gen/choice.rb +175 -0
  77. data/lib/wx/doc/gen/choicebook.rb +116 -0
  78. data/lib/wx/doc/gen/client_dc.rb +43 -0
  79. data/lib/wx/doc/gen/clipboard.rb +144 -0
  80. data/lib/wx/doc/gen/collapsible_pane.rb +138 -0
  81. data/lib/wx/doc/gen/collapsible_pane_event.rb +46 -0
  82. data/lib/wx/doc/gen/colour.rb +333 -0
  83. data/lib/wx/doc/gen/colour_dialog.rb +190 -0
  84. data/lib/wx/doc/gen/colour_picker_ctrl.rb +110 -0
  85. data/lib/wx/doc/gen/colour_picker_event.rb +77 -0
  86. data/lib/wx/doc/gen/combo_box.rb +292 -0
  87. data/lib/wx/doc/gen/combo_ctrl.rb +662 -0
  88. data/lib/wx/doc/gen/command_link_button.rb +134 -0
  89. data/lib/wx/doc/gen/config_base.rb +10 -0
  90. data/lib/wx/doc/gen/context_help_button.rb +109 -0
  91. data/lib/wx/doc/gen/control.rb +277 -0
  92. data/lib/wx/doc/gen/control_with_items.rb +253 -0
  93. data/lib/wx/doc/gen/core.rb +45 -0
  94. data/lib/wx/doc/gen/credential_entry_dialog.rb +137 -0
  95. data/lib/wx/doc/gen/cursor.rb +193 -0
  96. data/lib/wx/doc/gen/data_format.rb +85 -0
  97. data/lib/wx/doc/gen/data_object.rb +436 -0
  98. data/lib/wx/doc/gen/data_object_simple_base.rb +10 -0
  99. data/lib/wx/doc/gen/date_event.rb +49 -0
  100. data/lib/wx/doc/gen/date_picker_ctrl.rb +161 -0
  101. data/lib/wx/doc/gen/dc.rb +1631 -0
  102. data/lib/wx/doc/gen/dc_overlay.rb +102 -0
  103. data/lib/wx/doc/gen/defs.rb +2802 -0
  104. data/lib/wx/doc/gen/dial_up_event.rb +45 -0
  105. data/lib/wx/doc/gen/dial_up_manager.rb +149 -0
  106. data/lib/wx/doc/gen/dialog.rb +541 -0
  107. data/lib/wx/doc/gen/dir_dialog.rb +164 -0
  108. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +90 -0
  109. data/lib/wx/doc/gen/dir_picker_ctrl.rb +125 -0
  110. data/lib/wx/doc/gen/display.rb +238 -0
  111. data/lib/wx/doc/gen/drag_drop.rb +299 -0
  112. data/lib/wx/doc/gen/drag_image.rb +116 -0
  113. data/lib/wx/doc/gen/editable_list_box.rb +109 -0
  114. data/lib/wx/doc/gen/event.rb +990 -0
  115. data/lib/wx/doc/gen/event_blocker.rb +50 -0
  116. data/lib/wx/doc/gen/event_filter.rb +92 -0
  117. data/lib/wx/doc/gen/event_list.rb +1644 -0
  118. data/lib/wx/doc/gen/events.rb +2809 -0
  119. data/lib/wx/doc/gen/evt_handler.rb +229 -0
  120. data/lib/wx/doc/gen/ext_help_controller.rb +109 -0
  121. data/lib/wx/doc/gen/file_ctrl.rb +231 -0
  122. data/lib/wx/doc/gen/file_ctrl_event.rb +83 -0
  123. data/lib/wx/doc/gen/file_dialog.rb +353 -0
  124. data/lib/wx/doc/gen/file_dialog_custom_control.rb +165 -0
  125. data/lib/wx/doc/gen/file_dialog_customize_hook.rb +158 -0
  126. data/lib/wx/doc/gen/file_dir_picker_event.rb +100 -0
  127. data/lib/wx/doc/gen/file_picker_ctrl.rb +132 -0
  128. data/lib/wx/doc/gen/file_system.rb +232 -0
  129. data/lib/wx/doc/gen/find_dialog_event.rb +126 -0
  130. data/lib/wx/doc/gen/find_replace_data.rb +60 -0
  131. data/lib/wx/doc/gen/find_replace_dialog.rb +58 -0
  132. data/lib/wx/doc/gen/flex_grid_sizer.rb +199 -0
  133. data/lib/wx/doc/gen/font.rb +1379 -0
  134. data/lib/wx/doc/gen/font_data.rb +151 -0
  135. data/lib/wx/doc/gen/font_dialog.rb +88 -0
  136. data/lib/wx/doc/gen/font_picker_ctrl.rb +143 -0
  137. data/lib/wx/doc/gen/font_picker_event.rb +65 -0
  138. data/lib/wx/doc/gen/frame.rb +352 -0
  139. data/lib/wx/doc/gen/fs_file.rb +337 -0
  140. data/lib/wx/doc/gen/functions.rb +10 -0
  141. data/lib/wx/doc/gen/gauge.rb +157 -0
  142. data/lib/wx/doc/gen/gb_sizer_item.rb +68 -0
  143. data/lib/wx/doc/gen/gcdc.rb +46 -0
  144. data/lib/wx/doc/gen/gdi_common.rb +1271 -0
  145. data/lib/wx/doc/gen/gdi_object.rb +31 -0
  146. data/lib/wx/doc/gen/generic_about_dialog.rb +140 -0
  147. data/lib/wx/doc/gen/generic_dir_ctrl.rb +223 -0
  148. data/lib/wx/doc/gen/geometry.rb +661 -0
  149. data/lib/wx/doc/gen/graphics_context.rb +1184 -0
  150. data/lib/wx/doc/gen/graphics_object.rb +750 -0
  151. data/lib/wx/doc/gen/grid/event_list.rb +191 -0
  152. data/lib/wx/doc/gen/grid/grid_cell_activatable_editor.rb +40 -0
  153. data/lib/wx/doc/gen/grid/grid_cell_attr.rb +280 -0
  154. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_editor.rb +35 -0
  155. data/lib/wx/doc/gen/grid/grid_cell_auto_wrap_string_renderer.rb +37 -0
  156. data/lib/wx/doc/gen/grid/grid_cell_bool_editor.rb +49 -0
  157. data/lib/wx/doc/gen/grid/grid_cell_bool_renderer.rb +35 -0
  158. data/lib/wx/doc/gen/grid/grid_cell_choice_editor.rb +46 -0
  159. data/lib/wx/doc/gen/grid/grid_cell_date_editor.rb +38 -0
  160. data/lib/wx/doc/gen/grid/grid_cell_date_renderer.rb +45 -0
  161. data/lib/wx/doc/gen/grid/grid_cell_date_time_renderer.rb +40 -0
  162. data/lib/wx/doc/gen/grid/grid_cell_editor.rb +197 -0
  163. data/lib/wx/doc/gen/grid/grid_cell_enum_editor.rb +39 -0
  164. data/lib/wx/doc/gen/grid/grid_cell_enum_renderer.rb +44 -0
  165. data/lib/wx/doc/gen/grid/grid_cell_float_editor.rb +45 -0
  166. data/lib/wx/doc/gen/grid/grid_cell_float_renderer.rb +79 -0
  167. data/lib/wx/doc/gen/grid/grid_cell_number_editor.rb +46 -0
  168. data/lib/wx/doc/gen/grid/grid_cell_number_renderer.rb +35 -0
  169. data/lib/wx/doc/gen/grid/grid_cell_renderer.rb +108 -0
  170. data/lib/wx/doc/gen/grid/grid_cell_string_renderer.rb +35 -0
  171. data/lib/wx/doc/gen/grid/grid_cell_text_editor.rb +49 -0
  172. data/lib/wx/doc/gen/grid/grid_ctrl.rb +3002 -0
  173. data/lib/wx/doc/gen/grid/grid_editor_created_event.rb +95 -0
  174. data/lib/wx/doc/gen/grid/grid_event.rb +129 -0
  175. data/lib/wx/doc/gen/grid/grid_range_select_event.rb +104 -0
  176. data/lib/wx/doc/gen/grid/grid_size_event.rb +85 -0
  177. data/lib/wx/doc/gen/grid/grid_string_table.rb +142 -0
  178. data/lib/wx/doc/gen/grid/grid_table_base.rb +317 -0
  179. data/lib/wx/doc/gen/grid/grid_table_message.rb +81 -0
  180. data/lib/wx/doc/gen/grid_bag_sizer.rb +323 -0
  181. data/lib/wx/doc/gen/grid_sizer.rb +195 -0
  182. data/lib/wx/doc/gen/gui_event_loop.rb +159 -0
  183. data/lib/wx/doc/gen/h_scrolled_window.rb +562 -0
  184. data/lib/wx/doc/gen/header_ctrl.rb +880 -0
  185. data/lib/wx/doc/gen/header_ctrl_event.rb +133 -0
  186. data/lib/wx/doc/gen/help_controller.rb +195 -0
  187. data/lib/wx/doc/gen/help_provider.rb +98 -0
  188. data/lib/wx/doc/gen/html/event_list.rb +38 -0
  189. data/lib/wx/doc/gen/html/html_cell.rb +536 -0
  190. data/lib/wx/doc/gen/html/html_cell_event.rb +69 -0
  191. data/lib/wx/doc/gen/html/html_data_object.rb +42 -0
  192. data/lib/wx/doc/gen/html/html_easy_printing.rb +203 -0
  193. data/lib/wx/doc/gen/html/html_help_controller.rb +340 -0
  194. data/lib/wx/doc/gen/html/html_help_data.rb +159 -0
  195. data/lib/wx/doc/gen/html/html_help_window.rb +258 -0
  196. data/lib/wx/doc/gen/html/html_link_event.rb +41 -0
  197. data/lib/wx/doc/gen/html/html_list_box.rb +346 -0
  198. data/lib/wx/doc/gen/html/html_printout.rb +109 -0
  199. data/lib/wx/doc/gen/html/html_window.rb +461 -0
  200. data/lib/wx/doc/gen/hyperlink_ctrl.rb +311 -0
  201. data/lib/wx/doc/gen/hyperlink_event.rb +44 -0
  202. data/lib/wx/doc/gen/icon.rb +267 -0
  203. data/lib/wx/doc/gen/icon_location.rb +40 -0
  204. data/lib/wx/doc/gen/image.rb +1371 -0
  205. data/lib/wx/doc/gen/image_list.rb +168 -0
  206. data/lib/wx/doc/gen/info_bar.rb +195 -0
  207. data/lib/wx/doc/gen/keyboard_state.rb +140 -0
  208. data/lib/wx/doc/gen/list_box.rb +304 -0
  209. data/lib/wx/doc/gen/list_ctrl.rb +1774 -0
  210. data/lib/wx/doc/gen/list_event.rb +208 -0
  211. data/lib/wx/doc/gen/listbook.rb +116 -0
  212. data/lib/wx/doc/gen/locale.rb +4293 -0
  213. data/lib/wx/doc/gen/log.rb +603 -0
  214. data/lib/wx/doc/gen/mdi_client_window.rb +47 -0
  215. data/lib/wx/doc/gen/mdi_frame.rb +324 -0
  216. data/lib/wx/doc/gen/media_ctrl.rb +269 -0
  217. data/lib/wx/doc/gen/media_event.rb +117 -0
  218. data/lib/wx/doc/gen/memory_dc.rb +174 -0
  219. data/lib/wx/doc/gen/menu.rb +509 -0
  220. data/lib/wx/doc/gen/menu_bar.rb +287 -0
  221. data/lib/wx/doc/gen/menu_item.rb +362 -0
  222. data/lib/wx/doc/gen/message_dialog.rb +238 -0
  223. data/lib/wx/doc/gen/mini_frame.rb +108 -0
  224. data/lib/wx/doc/gen/mirror_dc.rb +22 -0
  225. data/lib/wx/doc/gen/mouse_state.rb +150 -0
  226. data/lib/wx/doc/gen/multi_choice_dialog.rb +80 -0
  227. data/lib/wx/doc/gen/non_owned_window.rb +49 -0
  228. data/lib/wx/doc/gen/notebook.rb +278 -0
  229. data/lib/wx/doc/gen/num_validator.rb +37 -0
  230. data/lib/wx/doc/gen/number_entry_dialog.rb +93 -0
  231. data/lib/wx/doc/gen/object.rb +59 -0
  232. data/lib/wx/doc/gen/owner_drawn_combo_box.rb +395 -0
  233. data/lib/wx/doc/gen/paint_dc.rb +27 -0
  234. data/lib/wx/doc/gen/palette.rb +92 -0
  235. data/lib/wx/doc/gen/panel.rb +127 -0
  236. data/lib/wx/doc/gen/pen.rb +511 -0
  237. data/lib/wx/doc/gen/persistence_manager.rb +135 -0
  238. data/lib/wx/doc/gen/persistent_object.rb +52 -0
  239. data/lib/wx/doc/gen/persistent_window.rb +241 -0
  240. data/lib/wx/doc/gen/pg/event_list.rb +106 -0
  241. data/lib/wx/doc/gen/pg/numeric_property_validator.rb +54 -0
  242. data/lib/wx/doc/gen/pg/pg_array_editor_dialog.rb +292 -0
  243. data/lib/wx/doc/gen/pg/pg_cell.rb +177 -0
  244. data/lib/wx/doc/gen/pg/pg_editor.rb +721 -0
  245. data/lib/wx/doc/gen/pg/pg_multi_button.rb +152 -0
  246. data/lib/wx/doc/gen/pg/pg_properties.rb +2829 -0
  247. data/lib/wx/doc/gen/pg/pg_property.rb +2078 -0
  248. data/lib/wx/doc/gen/pg/pg_validation_info.rb +344 -0
  249. data/lib/wx/doc/gen/pg/property_grid.rb +740 -0
  250. data/lib/wx/doc/gen/pg/property_grid_event.rb +184 -0
  251. data/lib/wx/doc/gen/pg/property_grid_interface.rb +1098 -0
  252. data/lib/wx/doc/gen/pg/property_grid_manager.rb +415 -0
  253. data/lib/wx/doc/gen/pg/property_grid_page.rb +354 -0
  254. data/lib/wx/doc/gen/pg/property_grid_page_state.rb +165 -0
  255. data/lib/wx/doc/gen/picker_base.rb +152 -0
  256. data/lib/wx/doc/gen/platform_info.rb +622 -0
  257. data/lib/wx/doc/gen/popup_window.rb +107 -0
  258. data/lib/wx/doc/gen/progress_dialog.rb +100 -0
  259. data/lib/wx/doc/gen/property_sheet_dialog.rb +216 -0
  260. data/lib/wx/doc/gen/prt/event_list.rb +17 -0
  261. data/lib/wx/doc/gen/prt/page_setup_dialog.rb +44 -0
  262. data/lib/wx/doc/gen/prt/post_script_dc.rb +30 -0
  263. data/lib/wx/doc/gen/prt/preview_frame.rb +78 -0
  264. data/lib/wx/doc/gen/prt/print_abort_dialog.rb +151 -0
  265. data/lib/wx/doc/gen/prt/print_data.rb +804 -0
  266. data/lib/wx/doc/gen/prt/print_dialog.rb +55 -0
  267. data/lib/wx/doc/gen/prt/printer.rb +518 -0
  268. data/lib/wx/doc/gen/prt/printer_dc.rb +37 -0
  269. data/lib/wx/doc/gen/query_layout_info_event.rb +106 -0
  270. data/lib/wx/doc/gen/radio_box.rb +306 -0
  271. data/lib/wx/doc/gen/radio_button.rb +159 -0
  272. data/lib/wx/doc/gen/rbn/event_list.rb +136 -0
  273. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +1132 -0
  274. data/lib/wx/doc/gen/rbn/ribbon_bar.rb +308 -0
  275. data/lib/wx/doc/gen/rbn/ribbon_bar_event.rb +45 -0
  276. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +458 -0
  277. data/lib/wx/doc/gen/rbn/ribbon_button_bar_event.rb +63 -0
  278. data/lib/wx/doc/gen/rbn/ribbon_control.rb +143 -0
  279. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +229 -0
  280. data/lib/wx/doc/gen/rbn/ribbon_gallery_event.rb +55 -0
  281. data/lib/wx/doc/gen/rbn/ribbon_page.rb +174 -0
  282. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +270 -0
  283. data/lib/wx/doc/gen/rbn/ribbon_panel_event.rb +45 -0
  284. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +360 -0
  285. data/lib/wx/doc/gen/rbn/ribbon_tool_bar_event.rb +42 -0
  286. data/lib/wx/doc/gen/rearrange_ctrl.rb +78 -0
  287. data/lib/wx/doc/gen/rearrange_list.rb +123 -0
  288. data/lib/wx/doc/gen/region.rb +380 -0
  289. data/lib/wx/doc/gen/region_iterator.rb +76 -0
  290. data/lib/wx/doc/gen/rich_tool_tip.rb +154 -0
  291. data/lib/wx/doc/gen/rtc/event_list.rb +125 -0
  292. data/lib/wx/doc/gen/rtc/rich_text_box.rb +445 -0
  293. data/lib/wx/doc/gen/rtc/rich_text_buffer.rb +1188 -0
  294. data/lib/wx/doc/gen/rtc/rich_text_buffer_data_object.rb +41 -0
  295. data/lib/wx/doc/gen/rtc/rich_text_composite_object.rb +538 -0
  296. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +2103 -0
  297. data/lib/wx/doc/gen/rtc/rich_text_event.rb +173 -0
  298. data/lib/wx/doc/gen/rtc/rich_text_file_handler.rb +181 -0
  299. data/lib/wx/doc/gen/rtc/rich_text_formatting_dialog.rb +319 -0
  300. data/lib/wx/doc/gen/rtc/rich_text_header_footer_data.rb +193 -0
  301. data/lib/wx/doc/gen/rtc/rich_text_html_handler.rb +102 -0
  302. data/lib/wx/doc/gen/rtc/rich_text_image.rb +337 -0
  303. data/lib/wx/doc/gen/rtc/rich_text_object.rb +2922 -0
  304. data/lib/wx/doc/gen/rtc/rich_text_paragraph_layout_box.rb +1240 -0
  305. data/lib/wx/doc/gen/rtc/rich_text_printing.rb +258 -0
  306. data/lib/wx/doc/gen/rtc/rich_text_style_list_box.rb +344 -0
  307. data/lib/wx/doc/gen/rtc/rich_text_style_organiser_dialog.rb +227 -0
  308. data/lib/wx/doc/gen/rtc/rich_text_xml_handler.rb +59 -0
  309. data/lib/wx/doc/gen/rtc/symbol_picker_dialog.rb +169 -0
  310. data/lib/wx/doc/gen/sash_event.rb +147 -0
  311. data/lib/wx/doc/gen/sash_layout_window.rb +232 -0
  312. data/lib/wx/doc/gen/sash_window.rb +171 -0
  313. data/lib/wx/doc/gen/scaled_dc.rb +10 -0
  314. data/lib/wx/doc/gen/screen_dc.rb +30 -0
  315. data/lib/wx/doc/gen/scroll_bar.rb +204 -0
  316. data/lib/wx/doc/gen/scrolled_canvas.rb +410 -0
  317. data/lib/wx/doc/gen/scrolled_control.rb +410 -0
  318. data/lib/wx/doc/gen/scrolled_window.rb +430 -0
  319. data/lib/wx/doc/gen/search_ctrl.rb +159 -0
  320. data/lib/wx/doc/gen/secret_store.rb +116 -0
  321. data/lib/wx/doc/gen/simplebook.rb +110 -0
  322. data/lib/wx/doc/gen/single_choice_dialog.rb +89 -0
  323. data/lib/wx/doc/gen/sizer.rb +945 -0
  324. data/lib/wx/doc/gen/sizer_item.rb +244 -0
  325. data/lib/wx/doc/gen/slider.rb +342 -0
  326. data/lib/wx/doc/gen/spin_button.rb +157 -0
  327. data/lib/wx/doc/gen/spin_ctrl.rb +231 -0
  328. data/lib/wx/doc/gen/spin_ctrl_double.rb +192 -0
  329. data/lib/wx/doc/gen/spin_double_event.rb +55 -0
  330. data/lib/wx/doc/gen/spin_event.rb +51 -0
  331. data/lib/wx/doc/gen/splash_screen.rb +113 -0
  332. data/lib/wx/doc/gen/splitter_event.rb +99 -0
  333. data/lib/wx/doc/gen/splitter_window.rb +498 -0
  334. data/lib/wx/doc/gen/static_bitmap.rb +256 -0
  335. data/lib/wx/doc/gen/static_box.rb +180 -0
  336. data/lib/wx/doc/gen/static_box_sizer.rb +85 -0
  337. data/lib/wx/doc/gen/static_line.rb +83 -0
  338. data/lib/wx/doc/gen/static_text.rb +127 -0
  339. data/lib/wx/doc/gen/status_bar.rb +290 -0
  340. data/lib/wx/doc/gen/stc/event_list.rb +221 -0
  341. data/lib/wx/doc/gen/stc/styled_text_ctrl.rb +4474 -0
  342. data/lib/wx/doc/gen/stc/styled_text_event.rb +8762 -0
  343. data/lib/wx/doc/gen/std_dialog_button_sizer.rb +129 -0
  344. data/lib/wx/doc/gen/svg_file_dc.rb +164 -0
  345. data/lib/wx/doc/gen/system_options.rb +129 -0
  346. data/lib/wx/doc/gen/system_settings.rb +507 -0
  347. data/lib/wx/doc/gen/task_bar_icon.rb +127 -0
  348. data/lib/wx/doc/gen/task_bar_icon_event.rb +88 -0
  349. data/lib/wx/doc/gen/text_attr.rb +756 -0
  350. data/lib/wx/doc/gen/text_ctrl.rb +1033 -0
  351. data/lib/wx/doc/gen/text_entry.rb +441 -0
  352. data/lib/wx/doc/gen/text_entry_dialog.rb +220 -0
  353. data/lib/wx/doc/gen/text_validator.rb +245 -0
  354. data/lib/wx/doc/gen/time_picker_ctrl.rb +128 -0
  355. data/lib/wx/doc/gen/timer.rb +119 -0
  356. data/lib/wx/doc/gen/timer_event.rb +68 -0
  357. data/lib/wx/doc/gen/tip_provider.rb +63 -0
  358. data/lib/wx/doc/gen/tip_window.rb +51 -0
  359. data/lib/wx/doc/gen/toggle_button.rb +182 -0
  360. data/lib/wx/doc/gen/tool_bar.rb +890 -0
  361. data/lib/wx/doc/gen/tool_tip.rb +86 -0
  362. data/lib/wx/doc/gen/toolbook.rb +118 -0
  363. data/lib/wx/doc/gen/top_level_window.rb +497 -0
  364. data/lib/wx/doc/gen/tree_ctrl.rb +1052 -0
  365. data/lib/wx/doc/gen/tree_event.rb +127 -0
  366. data/lib/wx/doc/gen/treebook.rb +180 -0
  367. data/lib/wx/doc/gen/ui_action_simulator.rb +109 -0
  368. data/lib/wx/doc/gen/utils.rb +273 -0
  369. data/lib/wx/doc/gen/v_list_box.rb +272 -0
  370. data/lib/wx/doc/gen/v_scrolled_canvas.rb +195 -0
  371. data/lib/wx/doc/gen/v_scrolled_window.rb +191 -0
  372. data/lib/wx/doc/gen/validator.rb +68 -0
  373. data/lib/wx/doc/gen/variant.rb +294 -0
  374. data/lib/wx/doc/gen/window.rb +2917 -0
  375. data/lib/wx/doc/gen/window_dc.rb +38 -0
  376. data/lib/wx/doc/gen/window_disabler.rb +30 -0
  377. data/lib/wx/doc/gen/with_images.rb +84 -0
  378. data/lib/wx/doc/gen/wizard.rb +257 -0
  379. data/lib/wx/doc/gen/wizard_event.rb +113 -0
  380. data/lib/wx/doc/gen/wizard_page.rb +65 -0
  381. data/lib/wx/doc/gen/wizard_page_simple.rb +88 -0
  382. data/lib/wx/doc/gen/wrap_sizer.rb +79 -0
  383. data/lib/wx/doc/gen/xml_node.rb +316 -0
  384. data/lib/wx/doc/gen/xml_resource.rb +320 -0
  385. data/lib/wx/doc/generic_validator.rb +5 -0
  386. data/lib/wx/doc/tip_window.rb +18 -6
  387. data/lib/wx/grid/events/evt_list.rb +166 -0
  388. data/lib/wx/html/events/evt_list.rb +27 -0
  389. data/lib/wx/html/simple_html_listbox.rb +46 -33
  390. data/lib/wx/keyword_defs.rb +9 -0
  391. data/lib/wx/pg/events/evt_list.rb +73 -0
  392. data/lib/wx/pg/pg_property.rb +26 -0
  393. data/lib/wx/pg/property_grid_interface.rb +2 -2
  394. data/lib/wx/rbn/events/evt_list.rb +102 -0
  395. data/lib/wx/rtc/events/evt_list.rb +98 -0
  396. data/lib/wx/rtc/ext/rich_text_ctrl.rb +24 -0
  397. data/lib/wx/stc/events/evt_list.rb +178 -0
  398. data/lib/wx/version.rb +1 -1
  399. data/lib/wx/wxruby/cmd/setup.rb +6 -0
  400. data/rakelib/configure.rb +9 -0
  401. data/rakelib/gem.rake +3 -2
  402. data/rakelib/lib/config/linux.rb +1 -1
  403. data/rakelib/lib/config/macosx.rb +15 -1
  404. data/rakelib/lib/config/pkgman/linux.rb +7 -2
  405. data/rakelib/lib/config/unixish.rb +3 -3
  406. data/rakelib/lib/config.rb +16 -5
  407. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  408. data/rakelib/lib/core/include/swigrubyerrors.inc +4 -8
  409. data/rakelib/lib/core/include/swigrubyrun.inc +20 -4
  410. data/rakelib/lib/core/include/swigrun.inc +189 -0
  411. data/rakelib/lib/core/package.rb +3 -1
  412. data/rakelib/lib/director/accelerator.rb +1 -1
  413. data/rakelib/lib/director/animation.rb +1 -0
  414. data/rakelib/lib/director/app_traits.rb +1 -1
  415. data/rakelib/lib/director/aui_manager.rb +21 -14
  416. data/rakelib/lib/director/aui_mdi_child_frame.rb +2 -0
  417. data/rakelib/lib/director/aui_mdi_parent_frame.rb +4 -0
  418. data/rakelib/lib/director/aui_notebook.rb +20 -3
  419. data/rakelib/lib/director/aui_tab_ctrl.rb +64 -106
  420. data/rakelib/lib/director/calendar_ctrl.rb +72 -14
  421. data/rakelib/lib/director/clipboard.rb +2 -0
  422. data/rakelib/lib/director/data_object.rb +15 -7
  423. data/rakelib/lib/director/date_picker_ctrl.rb +4 -1
  424. data/rakelib/lib/director/display.rb +81 -0
  425. data/rakelib/lib/director/event.rb +33 -16
  426. data/rakelib/lib/director/event_handler.rb +27 -2
  427. data/rakelib/lib/director/functions.rb +9 -0
  428. data/rakelib/lib/director/geometry.rb +5 -0
  429. data/rakelib/lib/director/grid_ctrl.rb +123 -28
  430. data/rakelib/lib/director/help_provider.rb +1 -1
  431. data/rakelib/lib/director/html_listbox.rb +16 -3
  432. data/rakelib/lib/director/hvscrolled.rb +7 -106
  433. data/rakelib/lib/director/image_list.rb +1 -0
  434. data/rakelib/lib/director/mdi_frame.rb +4 -0
  435. data/rakelib/lib/director/menu.rb +56 -15
  436. data/rakelib/lib/director/menu_bar.rb +62 -0
  437. data/rakelib/lib/director/menu_item.rb +7 -1
  438. data/rakelib/lib/director/num_validator.rb +27 -0
  439. data/rakelib/lib/director/numeric_property_validator.rb +9 -0
  440. data/rakelib/lib/director/popup_window.rb +2 -0
  441. data/rakelib/lib/director/preview_frame.rb +29 -6
  442. data/rakelib/lib/director/printer.rb +59 -5
  443. data/rakelib/lib/director/property_grid.rb +37 -18
  444. data/rakelib/lib/director/property_grid_interface.rb +10 -8
  445. data/rakelib/lib/director/property_grid_manager.rb +99 -39
  446. data/rakelib/lib/director/property_grid_page.rb +60 -0
  447. data/rakelib/lib/director/rich_tooltip.rb +22 -0
  448. data/rakelib/lib/director/richtext_ctrl.rb +5 -0
  449. data/rakelib/lib/director/richtext_object.rb +13 -4
  450. data/rakelib/lib/director/richtext_style_listbox.rb +4 -1
  451. data/rakelib/lib/director/scrolled_t.rb +3 -0
  452. data/rakelib/lib/director/searchctrl.rb +1 -0
  453. data/rakelib/lib/director/task_bar_icon.rb +14 -8
  454. data/rakelib/lib/director/text_validator.rb +9 -0
  455. data/rakelib/lib/director/tip_window.rb +117 -6
  456. data/rakelib/lib/director/tool_bar.rb +6 -0
  457. data/rakelib/lib/director/validator.rb +12 -0
  458. data/rakelib/lib/director/variant.rb +36 -20
  459. data/rakelib/lib/director/vlistbox.rb +25 -22
  460. data/rakelib/lib/director/window.rb +10 -1
  461. data/rakelib/lib/director/xml_resource.rb +6 -0
  462. data/rakelib/lib/generate/doc/aui_manager.yaml +1 -1
  463. data/rakelib/lib/generate/doc/rich_tool_tip.yaml +26 -0
  464. data/rakelib/lib/generate/doc.rb +12 -7
  465. data/rakelib/lib/generate/interface.rb +16 -1
  466. data/rakelib/lib/specs/interfaces.rb +3 -1
  467. data/rakelib/lib/swig_runner.rb +10 -10
  468. data/rakelib/lib/typemap/aui_tabctrl.rb +46 -0
  469. data/rakelib/lib/typemap/common.rb +3 -3
  470. data/rakelib/lib/typemap/print_page_range.rb +32 -8
  471. data/samples/art/wxruby-512x512.png +0 -0
  472. data/samples/calendar/calendar.rb +64 -1
  473. data/samples/dialogs/dialogs.rb +172 -0
  474. data/samples/dialogs/tip.xpm +157 -0
  475. data/samples/drawing/maths_images.rb +1 -1
  476. data/samples/event/event.rb +1 -1
  477. data/samples/printing/printing2.rb +1 -1
  478. data/samples/sampler.rb +26 -8
  479. data/samples/text/textctrl.rb +2 -2
  480. data/samples/treectrl/treectrl.rb +2 -2
  481. data/tests/lib/leaked_process_event_exception_test.rb +1 -1
  482. data/tests/lib/leaked_queued_event_exception_test.rb +1 -1
  483. data/tests/lib/wxapp_runner.rb +31 -41
  484. data/tests/lib/wxframe_runner.rb +23 -11
  485. data/tests/lib/wxrb_test.rb +58 -0
  486. data/tests/test_app_event_filter.rb +1 -1
  487. data/tests/test_app_exit_exception.rb +3 -3
  488. data/tests/test_app_init_exception.rb +3 -3
  489. data/tests/test_app_traits.rb +24 -21
  490. data/tests/test_art.rb +7 -7
  491. data/tests/test_art_provider.rb +1 -1
  492. data/tests/test_basic.rb +2 -2
  493. data/tests/test_book_controls.rb +1 -1
  494. data/tests/test_box_sizer.rb +1 -1
  495. data/tests/test_clipboard.rb +5 -5
  496. data/tests/test_combo_ctrl.rb +2 -2
  497. data/tests/test_config.rb +11 -1
  498. data/tests/test_dc.rb +1 -1
  499. data/tests/test_dialog.rb +1 -1
  500. data/tests/test_event_handling.rb +1 -1
  501. data/tests/test_events.rb +1 -1
  502. data/tests/test_exceptions.rb +2 -2
  503. data/tests/test_ext_controls.rb +10 -10
  504. data/tests/test_file_dialog.rb +1 -1
  505. data/tests/test_font.rb +1 -1
  506. data/tests/test_gdi_object.rb +1 -1
  507. data/tests/test_geometry.rb +2 -2
  508. data/tests/test_grid_sizer.rb +2 -2
  509. data/tests/test_intl.rb +1 -1
  510. data/tests/test_item_data.rb +12 -12
  511. data/tests/test_list_ctrl.rb +1 -1
  512. data/tests/test_log.rb +2 -2
  513. data/tests/test_media_ctrl.rb +1 -1
  514. data/tests/test_menu.rb +114 -43
  515. data/tests/test_proof_check.rb +1 -1
  516. data/tests/test_propgrid.rb +31 -31
  517. data/tests/test_richtext.rb +10 -24
  518. data/tests/test_secret_store.rb +1 -1
  519. data/tests/test_sizer.rb +1 -1
  520. data/tests/test_std_controls.rb +8 -8
  521. data/tests/test_styled_text_ctrl.rb +1 -1
  522. data/tests/test_timer.rb +1 -1
  523. data/tests/test_tree_ctrl.rb +1 -1
  524. data/tests/test_validators.rb +79 -36
  525. data/tests/test_variant.rb +1 -1
  526. data/tests/test_window.rb +11 -11
  527. data/tests/testapp.rb +2 -2
  528. data/tests/testapp_noframe.rb +2 -2
  529. metadata +400 -11
  530. data/lib/wx/aui/aui_tab_ctrl.rb +0 -18
@@ -16,6 +16,7 @@ module WXRuby3
16
16
 
17
17
  def setup
18
18
  super
19
+ spec.gc_as_object # not a typical window
19
20
  spec.no_proxy('wxMenuBar::FindItem',
20
21
  'wxMenuBar::Remove',
21
22
  'wxMenuBar::Replace')
@@ -23,6 +24,8 @@ module WXRuby3
23
24
  'wxMenuBar::GetLabelTop',
24
25
  'wxMenuBar::SetLabelTop',
25
26
  'wxMenuBar::Refresh')
27
+ spec.disown 'wxMenu *'
28
+ spec.new_object 'wxMenuBar::Remove', 'wxMenuBar::Replace'
26
29
  # for FindItem
27
30
  spec.map 'wxMenu **' => 'Wx::Menu' do
28
31
  map_in ignore: true, temp: 'wxMenu *tmp', code: '$1 = &tmp;'
@@ -31,6 +34,65 @@ module WXRuby3
31
34
  $result = SWIG_Ruby_AppendOutput($result, SWIG_NewPointerObj(ptr, SWIGTYPE_p_wxMenu, 0));
32
35
  __CODE
33
36
  end
37
+ spec.add_header_code <<~__HEREDOC
38
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkMenubar, "GC_MARK_MENUBAR")
39
+
40
+ // forward decl
41
+ SWIGINTERN void free_wxMenuBar(void *self);
42
+
43
+ // Mark Function for unattached menu bars
44
+ // Need to protect Menu and MenuItems which are included in the MenuBar
45
+ static void GC_mark_wxMenuBar(void *ptr)
46
+ {
47
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 2)
48
+ WXRUBY_TRACE("> GC_mark_wxMenuBar : " << ptr)
49
+ WXRUBY_TRACE_END
50
+
51
+ VALUE rb_menu_bar = SWIG_RubyInstanceFor(ptr);
52
+ if (!RB_NIL_P(rb_menu_bar))
53
+ {
54
+ // as long as the dfree function is still the managed free function the menubar has not been attached to a window
55
+ // but it may hay have already had menus and/or menuitems added which need to be marked
56
+ if (RDATA(rb_menu_bar)->dfree == free_wxMenuBar)
57
+ {
58
+ // Menu bars are also a subclass of wxWindow, so must do all the marking
59
+ // of sizers and carets associated with that class
60
+ GC_mark_wxWindow(ptr);
61
+
62
+ wxMenuBar* wx_menu_bar = static_cast<wxMenuBar*> (ptr);
63
+
64
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
65
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : marking " << wx_menu_bar->GetMenuCount() << " menus")
66
+ WXRUBY_TRACE_END
67
+
68
+ // Mark each menu in the menubar in turn
69
+ for ( size_t i = 0; i < wx_menu_bar->GetMenuCount(); i++ )
70
+ {
71
+ GC_mark_attached_wxMenu(wx_menu_bar->GetMenu(i));
72
+ }
73
+ }
74
+ else // otherwise the menu bar has been attached to a frame and may already have been deleted (or not)
75
+ { // marking in this case will be left to the frame
76
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
77
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : skipping attached menu bar")
78
+ WXRUBY_TRACE_END
79
+ }
80
+ }
81
+ else
82
+ {
83
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 3)
84
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : skipping untracked menu bar (should not have happened)")
85
+ WXRUBY_TRACE_END
86
+ }
87
+
88
+ WXRUBY_TRACE_IF(WxRubyTraceMarkMenubar, 2)
89
+ WXRUBY_TRACE("< GC_mark_wxMenuBar : " << ptr)
90
+ WXRUBY_TRACE_END
91
+ }
92
+ __HEREDOC
93
+ spec.add_swig_code <<~__HEREDOC
94
+ %markfunc wxMenu "GC_mark_wxMenuBar";
95
+ __HEREDOC
34
96
  end
35
97
  end # class MenuBar
36
98
 
@@ -17,12 +17,18 @@ module WXRuby3
17
17
  # (which seems acceptable as there is no use for menu items otherwise)
18
18
  # if not the C++ item will never be deleted before the process terminates
19
19
  # (but this goes for all object marked for GC_NEVER).
20
+ # this keeps things MUCH simpler while adding a (slight?) risk of minor
21
+ # (non-destructive) memory leaks
20
22
  spec.gc_never
23
+ spec.disable_proxies # no reason to derive
21
24
  spec.ignore(%w[wxMenuItem::GetLabel wxMenuItem::GetName wxMenuItem::GetText wxMenuItem::SetText wxMenuItem::GetLabelFromText])
25
+ # Replace for more specific param naming
26
+ spec.ignore 'wxMenuItem::SetSubMenu(wxMenu *)', ignore_doc: false
27
+ spec.extend_interface 'wxMenuItem', 'void SetSubMenu(wxMenu *sub_menu)'
28
+ spec.disown 'wxMenu *sub_menu'
22
29
  # ignore this as there is no implementation anymore
23
30
  spec.ignore 'wxMenuItem::GetAccelFromString'
24
31
  spec.ignore_unless('USE_ACCEL', 'wxMenuItem::GetAccel')
25
- spec.no_proxy 'wxMenuItem::GetAccel'
26
32
  spec.ignore 'wxMenuItem::GetBitmap(bool)' # not portable
27
33
  if Config.instance.wx_version_check('3.2.4') > 0
28
34
  spec.ignore_unless('WXMSW', 'wxMenuItem::SetBackgroundColour','wxMenuItem::SetFont','wxMenuItem::SetTextColour')
@@ -54,7 +54,16 @@ module WXRuby3
54
54
  {}
55
55
  virtual ~WXIntegerValidator()
56
56
  {
57
+ // All Validators are EvtHandlers, so prevent any pending events being
58
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
59
+ this->SetEvtHandlerEnabled(false);
57
60
  wxRuby_ReleaseEvtHandlerProcs(this);
61
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
62
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
63
+ {
64
+ SWIG_RubyUnlinkObjects(this);
65
+ SWIG_RubyRemoveTracking(this);
66
+ }
58
67
  }
59
68
 
60
69
  virtual wxObject* Clone() const override
@@ -163,7 +172,16 @@ module WXRuby3
163
172
  {}
164
173
  virtual ~WXUnsignedValidator()
165
174
  {
175
+ // All Validators are EvtHandlers, so prevent any pending events being
176
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
177
+ this->SetEvtHandlerEnabled(false);
166
178
  wxRuby_ReleaseEvtHandlerProcs(this);
179
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
180
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
181
+ {
182
+ SWIG_RubyUnlinkObjects(this);
183
+ SWIG_RubyRemoveTracking(this);
184
+ }
167
185
  }
168
186
 
169
187
  virtual wxObject* Clone() const override
@@ -272,7 +290,16 @@ module WXRuby3
272
290
  {}
273
291
  virtual ~WXFloatValidator()
274
292
  {
293
+ // All Validators are EvtHandlers, so prevent any pending events being
294
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
295
+ this->SetEvtHandlerEnabled(false);
275
296
  wxRuby_ReleaseEvtHandlerProcs(this);
297
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
298
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
299
+ {
300
+ SWIG_RubyUnlinkObjects(this);
301
+ SWIG_RubyRemoveTracking(this);
302
+ }
276
303
  }
277
304
 
278
305
  virtual wxObject* Clone() const override
@@ -34,7 +34,16 @@ module WXRuby3
34
34
  }
35
35
  virtual ~WXRubyNumericPropertyValidator()
36
36
  {
37
+ // All Validators are EvtHandlers, so prevent any pending events being
38
+ // sent after destruction (otherwise ObjectPreviouslyDeleted errors result)
39
+ this->SetEvtHandlerEnabled(false);
37
40
  wxRuby_ReleaseEvtHandlerProcs(this);
41
+ // Disassociate the C++ and Ruby objects if not done by Ruby free method
42
+ if (!NIL_P(SWIG_RubyInstanceFor(this)))
43
+ {
44
+ SWIG_RubyUnlinkObjects(this);
45
+ SWIG_RubyRemoveTracking(this);
46
+ }
38
47
  }
39
48
 
40
49
  virtual wxObject* Clone() const override
@@ -35,6 +35,8 @@ module WXRuby3
35
35
  # for upcalls
36
36
  spec.extend_interface('wxPopupWindow',
37
37
  'virtual bool Show(bool show = true) override')
38
+ spec.extend_interface('wxPopupTransientWindow',
39
+ 'virtual bool Destroy() override')
38
40
  # For ProcessLeftDown
39
41
  spec.map 'wxMouseEvent &' => 'Wx::MouseEvent' do
40
42
  map_directorin code: <<~__CODE
@@ -31,7 +31,8 @@ module WXRuby3
31
31
  const wxString& name = wxASCII_STR(wxFrameNameStr))
32
32
  : wxPreviewFrame(preview, parent, title, pos, size, style, name)
33
33
  {}
34
- virtual ~WxRubyPreviewFrame() {}
34
+ virtual ~WxRubyPreviewFrame()
35
+ {}
35
36
 
36
37
  const wxPrintPreview* get_print_preview() const
37
38
  {
@@ -39,20 +40,42 @@ module WXRuby3
39
40
  }
40
41
  };
41
42
 
43
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkPreviewFrame, "GC_MARK_PRINT_PREVIEW_FRAME")
44
+
45
+ void WxRuby_mark_wxPrintPreview(void* ptr);
46
+
42
47
  static void GC_mark_wxPreviewFrame(void *ptr)
43
48
  {
49
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 2)
50
+ WXRUBY_TRACE("> GC_mark_wxPreviewFrame : " << ptr)
51
+ WXRUBY_TRACE_END
52
+
44
53
  if ( GC_IsWindowDeleted(ptr) )
45
54
  return;
46
55
 
47
- // Do standard marking routines as for all wxWindows
48
- GC_mark_wxWindow(ptr);
56
+ // Do standard marking routines as for all wxFrames
57
+ GC_mark_wxFrame(ptr);
49
58
 
50
59
  WxRubyPreviewFrame* preview_frame = dynamic_cast<WxRubyPreviewFrame*>((wxPreviewFrame*)ptr);
51
60
  if (preview_frame)
52
61
  {
53
- const void* ptr = (const void*)preview_frame->get_print_preview();
54
- rb_gc_mark(SWIG_RubyInstanceFor(const_cast<void*> (ptr)));
62
+ const wxPrintPreview* wx_prtprev = preview_frame->get_print_preview();
63
+ VALUE rb_prtprev = SWIG_RubyInstanceFor(const_cast<void*> ((const void*)wx_prtprev));
64
+
65
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 3)
66
+ WXRUBY_TRACE("| GC_mark_wxPreviewFrame : marking print preview " << wx_prtprev << " -> " << rb_prtprev);
67
+ WXRUBY_TRACE_END
68
+
69
+ // mark the Ruby wrapper instance
70
+ // this will skip marking the members as any preview attached to a preview frame is disowned
71
+ rb_gc_mark(rb_prtprev);
72
+ // so, force marking the preview members
73
+ WxRuby_mark_wxPrintPreview(const_cast<void*> ((const void*)wx_prtprev));
55
74
  }
75
+
76
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPreviewFrame, 2)
77
+ WXRUBY_TRACE("< GC_mark_wxPreviewFrame : " << ptr)
78
+ WXRUBY_TRACE_END
56
79
  }
57
80
  __HEREDOC
58
81
  spec.use_class_implementation 'wxPreviewFrame', 'WxRubyPreviewFrame'
@@ -62,7 +85,7 @@ module WXRuby3
62
85
  # in all cases will be the actual base being used.
63
86
  spec.ignore 'wxPreviewFrame::wxPreviewFrame(wxPrintPreviewBase *, wxWindow *,const wxString &,const wxPoint &,const wxSize &,long,const wxString &)', ignore_doc: false
64
87
  spec.extend_interface('wxPreviewFrame',
65
- 'wxPreviewFrame(wxPrintPreview *preview, wxWindow *parent, const wxString &title="Print Preview", const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE, const wxString &name=wxFrameNameStr)')
88
+ 'wxPreviewFrame(wxPrintPreview *preview, wxWindow *parent, const wxString &title="Print Preview", const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_FRAME_STYLE | wxFRAME_FLOAT_ON_PARENT, const wxString &name=wxFrameNameStr)')
66
89
  # non-functional map for doc gen
67
90
  spec.map 'wxPrintPreviewBase *' => 'Wx::PrintPreview', swig: false do
68
91
  map_in
@@ -31,16 +31,70 @@ module WXRuby3
31
31
  spec.new_object 'wxPrinter::GetPrintDialogData'
32
32
  spec.disown 'wxPrintout *' # Printout-s passed to PrintPreview will be managed by wxWidgets
33
33
  spec.add_header_code <<~__HEREDOC
34
- static void GC_mark_wxPrintPreview(void *ptr)
35
- {
34
+ WXRUBY_TRACE_GUARD(WxRubyTraceGCMarkPrintPreview, "GC_MARK_PRINT_PREVIEW")
35
+
36
+ // forward decl
37
+ SWIGINTERN void free_wxPrintPreview(void *self);
38
+
39
+ // this is the actual print preview marker which is called for Ruby owned instances from the
40
+ // Ruby standard marker and by the container preview frame for disowned instances
41
+ void WxRuby_mark_wxPrintPreview(void* ptr)
42
+ {
43
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
44
+ WXRUBY_TRACE("> WxRuby_mark_wxPrintPreview : " << ptr)
45
+ WXRUBY_TRACE_END
46
+
36
47
  if (ptr)
37
48
  {
38
49
  wxPrintPreview* print_preview = (wxPrintPreview*)ptr;
39
50
  wxPrintout* printout = print_preview->GetPrintout();
40
- rb_gc_mark( SWIG_RubyInstanceFor(printout) );
41
- wxPrintout* printout_for_printing = print_preview->GetPrintoutForPrinting();
42
- rb_gc_mark( SWIG_RubyInstanceFor(printout_for_printing) );
51
+ VALUE rb_prtout = SWIG_RubyInstanceFor(printout);
52
+
53
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
54
+ WXRUBY_TRACE("| WxRuby_mark_wxPrintPreview : marking preview printout " << printout << " -> " << rb_prtout);
55
+ WXRUBY_TRACE_END
56
+
57
+ rb_gc_mark(rb_prtout);
58
+
59
+ printout = print_preview->GetPrintoutForPrinting();
60
+ rb_prtout = SWIG_RubyInstanceFor(printout);
61
+
62
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
63
+ WXRUBY_TRACE("| WxRuby_mark_wxPrintPreview : marking printing printout " << printout << " -> " << rb_prtout);
64
+ WXRUBY_TRACE_END
65
+
66
+ rb_gc_mark(rb_prtout);
43
67
  }
68
+
69
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
70
+ WXRUBY_TRACE("< WxRuby_mark_wxPrintPreview : " << ptr)
71
+ WXRUBY_TRACE_END
72
+ }
73
+
74
+ // this is the Ruby standard marker called by the Ruby GC mark phase
75
+ // for Ruby instances visible to Ruby
76
+ static void GC_mark_wxPrintPreview(void *ptr)
77
+ {
78
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
79
+ WXRUBY_TRACE("> GC_mark_wxPrintPreview : " << ptr)
80
+ WXRUBY_TRACE_END
81
+
82
+ VALUE rb_pp = SWIG_RubyInstanceFor(ptr);
83
+ // if this is still an instance 'owned' by Ruby
84
+ if (!RB_NIL_P(rb_pp) && RDATA(rb_pp)->dfree==free_wxPrintPreview)
85
+ {
86
+ WxRuby_mark_wxPrintPreview(ptr);
87
+ }
88
+ else
89
+ {
90
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 3)
91
+ WXRUBY_TRACE("| GC_mark_wxPrintPreview : skip marking disowned instance")
92
+ WXRUBY_TRACE_END
93
+ }
94
+
95
+ WXRUBY_TRACE_IF(WxRubyTraceGCMarkPrintPreview, 2)
96
+ WXRUBY_TRACE("< GC_mark_wxPrintPreview : " << ptr)
97
+ WXRUBY_TRACE_END
44
98
  }
45
99
  __HEREDOC
46
100
  spec.add_swig_code '%markfunc wxPrintPreview "GC_mark_wxPrintPreview";'
@@ -74,12 +74,16 @@ module WXRuby3
74
74
  spec.include_mixin 'wxPropertyGrid', 'Wx::PG::PropertyGridInterface'
75
75
  # customize mark function
76
76
  spec.add_header_code <<~__HEREDOC
77
+ extern bool WXRuby_Is_In_GC_mark_wxPropertyGridManager();
78
+
79
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkPropGrid, "GC_MARK_PROPGRID_GRID")
80
+
77
81
  static void GC_mark_wxPropertyGrid(void* ptr)
78
82
  {
79
- #ifdef __WXRB_DEBUG__
80
- if (wxRuby_TraceLevel()>1)
81
- std::wcout << "> GC_mark_wxPropertyGrid : " << ptr << std::endl;
82
- #endif
83
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGrid, 2)
84
+ WXRUBY_TRACE("> GC_mark_wxPropertyGrid : " << ptr)
85
+ WXRUBY_TRACE_END
86
+
83
87
  if ( GC_IsWindowDeleted(ptr) )
84
88
  {
85
89
  return;
@@ -87,38 +91,53 @@ module WXRuby3
87
91
  // Do standard marking routines as for all wxWindows
88
92
  GC_mark_wxWindow(ptr);
89
93
 
94
+ // no need to mark properties if called from GC_mark_wxPropertyGridManager
95
+ // as that will mark properties through the property grid pages
96
+ if (WXRuby_Is_In_GC_mark_wxPropertyGridManager())
97
+ return;
98
+
99
+ #ifdef __WXRB_DEBUG__
100
+ long l = 0, n = 0;
101
+ #endif
90
102
  wxPropertyGrid* wx_pg = (wxPropertyGrid*) ptr;
91
103
 
104
+ VALUE rb_root_prop = SWIG_RubyInstanceFor(wx_pg->GetRoot());
105
+ if (!NIL_P(rb_root_prop))
106
+ {
107
+ rb_gc_mark(rb_root_prop);
108
+ #ifdef __WXRB_DEBUG__
109
+ ++n;
110
+ #endif
111
+ }
92
112
  // mark all properties
93
113
  wxPGVIterator it =
94
114
  wx_pg->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
95
115
  // iterate all
96
116
  for ( ; !it.AtEnd(); it.Next() )
97
117
  {
98
- wxPGProperty* p = it.GetProperty();
99
- VALUE rb_p = SWIG_RubyInstanceFor(p);
100
- if (NIL_P(rb_p))
101
- {
102
- VALUE object = (VALUE) p->GetClientData();
103
- if ( object && !NIL_P(object))
104
- {
105
118
  #ifdef __WXRB_DEBUG__
106
- if (wxRuby_TraceLevel()>2)
107
- std::wcout << "*** marking property data " << p << ":" << p->GetName() << std::endl;
119
+ ++l;
108
120
  #endif
109
- rb_gc_mark(object);
110
- }
111
- }
112
- else
121
+ wxPGProperty* wx_p = it.GetProperty();
122
+ VALUE rb_prop = SWIG_RubyInstanceFor(wx_p);
123
+ if (!RB_NIL_P(rb_prop))
113
124
  {
114
- rb_gc_mark(rb_p);
125
+ rb_gc_mark(rb_prop);
126
+ #ifdef __WXRB_DEBUG__
127
+ ++n;
128
+ #endif
115
129
  }
116
130
  }
131
+
132
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGrid, 2)
133
+ WXRUBY_TRACE("< GC_mark_wxPropertyGrid : iterated " << l << " properties; marked " << n )
134
+ WXRUBY_TRACE_END
117
135
  }
118
136
  __HEREDOC
119
137
  spec.add_swig_code '%markfunc wxPropertyGrid "GC_mark_wxPropertyGrid";'
120
138
  # missing from XML docs
121
139
  spec.extend_interface 'wxPropertyGrid',
140
+ 'virtual bool Destroy()',
122
141
  'wxPoint GetGoodEditorDialogPosition(wxPGProperty* p, const wxSize& sz)',
123
142
  'wxWindow* GetPrimaryEditor() const',
124
143
  'wxWindow* GetEditorControlSecondary() const',
@@ -45,10 +45,12 @@ module WXRuby3
45
45
  end
46
46
  spec.ignore_unless 'USE_DATETIME', 'wxPropertyGridInterface::GetPropertyValueAsDateTime'
47
47
  spec.ignore_unless 'USE_VALIDATORS', 'wxPropertyGridInterface::GetPropertyValidator'
48
- # fix incorrect XML documentation
49
- spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
50
- # and add correct decl
51
- spec.extend_interface 'wxPropertyGridInterface', 'void SetPropertyImage(wxPGPropArg id, const wxBitmapBundle &bmp)'
48
+ if Config.instance.wx_version_check('3.3.1') <= 0
49
+ # fix incorrect XML documentation
50
+ spec.ignore 'wxPropertyGridInterface::SetPropertyImage', ignore_doc: false # ignore non-const BitmapBundle arg decl
51
+ # and add correct decl
52
+ spec.extend_interface 'wxPropertyGridInterface', 'void SetPropertyImage(wxPGPropArg id, const wxBitmapBundle &bmp)'
53
+ end
52
54
  # don't expose property grid iterators; add a more Ruby-like extension
53
55
  spec.ignore 'wxPropertyGridInterface::GetIterator', 'wxPropertyGridInterface::GetVIterator'
54
56
  # add basic property enumerator; will wrap this in pure Ruby still for improved argument handling
@@ -63,7 +65,7 @@ module WXRuby3
63
65
  while (!prop_it.AtEnd())
64
66
  {
65
67
  wxPGProperty* pp = prop_it.GetProperty();
66
- VALUE rb_prop = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
68
+ VALUE rb_prop = wxRuby_WrapWxPGPropertyInRuby(pp);
67
69
  rc = rb_yield(rb_prop);
68
70
  prop_it.Next();
69
71
  }
@@ -101,7 +103,7 @@ module WXRuby3
101
103
  while (!prop_it.AtEnd())
102
104
  {
103
105
  wxPGProperty* pp = prop_it.GetProperty();
104
- VALUE rb_prop = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
106
+ VALUE rb_prop = wxRuby_WrapWxPGPropertyInRuby(pp);
105
107
  rc = rb_yield(rb_prop);
106
108
  reverse ? prop_it.Prev() : prop_it.Next();
107
109
  }
@@ -137,7 +139,7 @@ module WXRuby3
137
139
  for (size_t i = 0; i < $1->GetCount(); i++)
138
140
  {
139
141
  wxPGProperty* pp = $1->Item(i);
140
- VALUE rb_pp = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
142
+ VALUE rb_pp = wxRuby_WrapWxPGPropertyInRuby(pp);
141
143
  rb_ary_push($result, rb_pp);
142
144
  }
143
145
  __CODE
@@ -149,7 +151,7 @@ module WXRuby3
149
151
  for (size_t i = 0; i < $1->GetCount(); i++)
150
152
  {
151
153
  wxPGProperty* pp = $1->Item(i);
152
- VALUE rb_pp = SWIG_NewPointerObj(SWIG_as_voidptr(pp), SWIGTYPE_p_wxPGProperty, 0);
154
+ VALUE rb_pp = wxRuby_WrapWxPGPropertyInRuby(pp);
153
155
  rb_ary_push($result, rb_pp);
154
156
  }
155
157
  __CODE
@@ -19,6 +19,57 @@ module WXRuby3
19
19
  def setup
20
20
  super
21
21
  spec.override_inheritance_chain('wxPropertyGridManager', %w[wxPanel wxWindow wxEvtHandler wxObject])
22
+ # need a custom implementation to handle cleaning up tracked objects
23
+ spec.add_header_code <<~__HEREDOC
24
+ WXRUBY_EXPORT void GC_SetWindowDeleted(void *ptr);
25
+
26
+ class WXRubyPropertyGridManager : public wxPropertyGridManager
27
+ {
28
+ public:
29
+ WXRubyPropertyGridManager() : wxPropertyGridManager() {}
30
+ WXRubyPropertyGridManager( wxWindow *parent, wxWindowID id = wxID_ANY,
31
+ const wxPoint& pos = wxDefaultPosition,
32
+ const wxSize& size = wxDefaultSize,
33
+ long style = wxPGMAN_DEFAULT_STYLE,
34
+ const wxString& name = wxASCII_STR(wxPropertyGridManagerNameStr) )
35
+ : wxPropertyGridManager(parent, id, pos, size, style, name) {}
36
+
37
+ virtual ~WXRubyPropertyGridManager()
38
+ {
39
+ // as the grid will not be deleted by calling Destroy() but
40
+ // rather by deleting directly handle GC cleanup here
41
+ GC_SetWindowDeleted(m_pPropGrid);
42
+ // also cleanup all page and property instances that will
43
+ // be deleted by wxPropertyGridManager
44
+ for( wxPropertyGridPage* page : m_arrPages )
45
+ {
46
+ // clean up tracking of all tracked properties
47
+ wxPGProperty* wx_p = page->GetRoot();
48
+ if (!NIL_P(SWIG_RubyInstanceFor(wx_p)))
49
+ {
50
+ SWIG_RubyUnlinkObjects(wx_p);
51
+ SWIG_RubyRemoveTracking(wx_p);
52
+ }
53
+ wxPGVIterator it =
54
+ page->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
55
+ // iterate all
56
+ for ( ; !it.AtEnd(); it.Next() )
57
+ {
58
+ wx_p = it.GetProperty();
59
+ if (!RB_NIL_P(SWIG_RubyInstanceFor(wx_p)))
60
+ {
61
+ SWIG_RubyUnlinkObjects(wx_p);
62
+ SWIG_RubyRemoveTracking(wx_p);
63
+ }
64
+ }
65
+ // Disassociate the C++ and Ruby pages (if any association)
66
+ SWIG_RubyUnlinkObjects(page);
67
+ SWIG_RubyRemoveTracking(page);
68
+ }
69
+ }
70
+ };
71
+ __HEREDOC
72
+ spec.use_class_implementation 'wxPropertyGridManager', 'WXRubyPropertyGridManager'
22
73
  spec.add_swig_code 'typedef const wxPGPropArgCls& wxPGPropArg;'
23
74
  # mixin PropertyGridInterface
24
75
  spec.include_mixin 'wxPropertyGridManager', 'Wx::PG::PropertyGridInterface'
@@ -29,12 +80,28 @@ module WXRuby3
29
80
  spec.ignore 'wxPropertyGridManager::GetVIterator'
30
81
  # customize mark function
31
82
  spec.add_header_code <<~__HEREDOC
83
+ WXRUBY_TRACE_GUARD(WxRubyTraceMarkPropGridMgr, "GC_MARK_PROPGRID_MGR")
84
+
85
+ static bool __wxr_In_GC_mark_wxPropertyGridManager = false;
86
+
87
+ extern void WXRuby_Set_In_GC_mark_wxPropertyGridManager(bool f)
88
+ {
89
+ __wxr_In_GC_mark_wxPropertyGridManager = f;
90
+ }
91
+
92
+ extern bool WXRuby_Is_In_GC_mark_wxPropertyGridManager()
93
+ {
94
+ return __wxr_In_GC_mark_wxPropertyGridManager;
95
+ }
96
+
97
+ extern void WXRuby_GC_mark_wxPropertyGridPage(wxPropertyGridPage* wx_pgp);
98
+
32
99
  static void GC_mark_wxPropertyGridManager(void* ptr)
33
100
  {
34
- #ifdef __WXRB_DEBUG__
35
- if (wxRuby_TraceLevel()>1)
36
- std::wcout << "> GC_mark_wxPropertyGridManager : " << ptr << std::endl;
37
- #endif
101
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGridMgr, 2)
102
+ WXRUBY_TRACE("> GC_mark_wxPropertyGridManager : " << ptr)
103
+ WXRUBY_TRACE_END
104
+
38
105
  if ( GC_IsWindowDeleted(ptr) )
39
106
  {
40
107
  return;
@@ -42,46 +109,39 @@ module WXRuby3
42
109
  // Do standard marking routines as for all wxWindows
43
110
  GC_mark_wxWindow(ptr);
44
111
 
45
- wxPropertyGridManager* wx_pg = (wxPropertyGridManager*) ptr;
112
+ WXRuby_Set_In_GC_mark_wxPropertyGridManager(true);
113
+
114
+ wxPropertyGridManager* wx_pgm = (wxPropertyGridManager*) ptr;
46
115
 
47
- // mark all properties of all pages
48
- #ifdef __WXRB_DEBUG__
49
- long l = 0;
50
- #endif
51
- for (size_t i=0; i < wx_pg->GetPageCount() ;++i)
116
+ // mark the property grid
117
+ wxPropertyGrid* wx_pg = wx_pgm->GetGrid();
118
+ VALUE rb_pg = SWIG_RubyInstanceFor(wx_pg);
119
+ if (!NIL_P(rb_pg))
52
120
  {
53
- wxPGVIterator it =
54
- wx_pg->GetPage(i)->GetVIterator(wxPG_ITERATOR_FLAGS_ALL | wxPG_IT_CHILDREN(wxPG_ITERATOR_FLAGS_ALL));
55
- // iterate all
56
- for ( ; !it.AtEnd(); it.Next() )
121
+ rb_gc_mark(rb_pg);
122
+ }
123
+
124
+ // mark all properties of all pages
125
+ for (size_t i=0; i < wx_pgm->GetPageCount() ;++i)
126
+ {
127
+ wxPropertyGridPage* wx_pgp = wx_pgm->GetPage(i);
128
+ // check if this page is wrapped in Ruby
129
+ VALUE rb_pgp = SWIG_RubyInstanceFor(wx_pgp);
130
+ if (NIL_P(rb_pgp)) // if not just iterate and mark it's properties
57
131
  {
58
- #ifdef __WXRB_DEBUG__
59
- ++l;
60
- #endif
61
- wxPGProperty* p = it.GetProperty();
62
- VALUE rb_p = SWIG_RubyInstanceFor(p);
63
- if (NIL_P(rb_p))
64
- {
65
- VALUE object = (VALUE) p->GetClientData();
66
- if ( object && !NIL_P(object))
67
- {
68
- #ifdef __WXRB_DEBUG__
69
- if (wxRuby_TraceLevel()>2)
70
- std::wcout << "*** marking property data " << p << ":" << p->GetName() << std::endl;
71
- #endif
72
- rb_gc_mark(object);
73
- }
74
- }
75
- else
76
- {
77
- rb_gc_mark(rb_p);
78
- }
132
+ WXRuby_GC_mark_wxPropertyGridPage(wx_pgp);
133
+ }
134
+ else // but a tracked Ruby page instance we can simply mark and it will mark it's properties itself
135
+ {
136
+ rb_gc_mark(rb_pgp);
79
137
  }
80
138
  }
81
- #ifdef __WXRB_DEBUG__
82
- if (wxRuby_TraceLevel()>1)
83
- std::wcout << "*** iterated " << l << " properties" << std::endl;
84
- #endif
139
+
140
+ WXRuby_Set_In_GC_mark_wxPropertyGridManager(false);
141
+
142
+ WXRUBY_TRACE_IF(WxRubyTraceMarkPropGridMgr, 2)
143
+ WXRUBY_TRACE(" GC_mark_wxPropertyGridManager : " << ptr)
144
+ WXRUBY_TRACE_END
85
145
  }
86
146
  __HEREDOC
87
147
  spec.add_swig_code '%markfunc wxPropertyGridManager "GC_mark_wxPropertyGridManager";'