wxruby3 1.3.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +16 -12
- data/README.md +4 -3
- data/ext/wxruby3/include/wxRubyApp.h +9 -9
- data/ext/wxruby3/swig/mark_free_impl.i +47 -11
- data/ext/wxruby3/swig/wx.i +30 -12
- data/lib/wx/aui/auifloatframe.rb +1 -1
- data/lib/wx/aui/auimanager.rb +5 -16
- data/lib/wx/aui/auinotebook.rb +1 -1
- data/lib/wx/aui/require.rb +0 -2
- data/lib/wx/core/acceleratortable.rb +1 -1
- data/lib/wx/core/animation.rb +2 -2
- data/lib/wx/core/app.rb +1 -1
- data/lib/wx/core/artprovider.rb +4 -4
- data/lib/wx/core/bitmap.rb +1 -1
- data/lib/wx/core/bitmap_combobox.rb +2 -2
- data/lib/wx/core/clientdc.rb +1 -1
- data/lib/wx/core/clipboard.rb +4 -4
- data/lib/wx/core/colour.rb +1 -1
- data/lib/wx/core/combobox.rb +1 -1
- data/lib/wx/core/config.rb +7 -7
- data/lib/wx/core/controlwithitems.rb +3 -3
- data/lib/wx/core/data_object.rb +4 -4
- data/lib/wx/core/dataformat.rb +9 -3
- data/lib/wx/core/dialog.rb +3 -2
- data/lib/wx/core/event.rb +3 -3
- data/lib/wx/core/evthandler.rb +317 -289
- data/lib/wx/core/file_dialog.rb +1 -1
- data/lib/wx/core/find_replace_dialog.rb +2 -2
- data/lib/wx/core/functions.rb +1 -1
- data/lib/wx/core/genericdirctrl.rb +1 -1
- data/lib/wx/core/geometry.rb +2 -2
- data/lib/wx/core/graphics_pen_info.rb +1 -1
- data/lib/wx/core/helpprovider.rb +1 -1
- data/lib/wx/core/icon.rb +1 -1
- data/lib/wx/core/image.rb +2 -2
- data/lib/wx/core/imagelist.rb +1 -1
- data/lib/wx/core/locale.rb +5 -5
- data/lib/wx/core/log.rb +8 -8
- data/lib/wx/core/menu.rb +3 -3
- data/lib/wx/core/module_ext.rb +16 -0
- data/lib/wx/core/owner_drawn_combobox.rb +3 -3
- data/lib/wx/core/pen_info.rb +1 -1
- data/lib/wx/core/persistence_manager.rb +2 -2
- data/lib/wx/core/rect.rb +1 -1
- data/lib/wx/core/secret_store.rb +1 -1
- data/lib/wx/core/simplehelpprovider.rb +1 -1
- data/lib/wx/core/sizer.rb +8 -8
- data/lib/wx/core/splash_screen.rb +1 -1
- data/lib/wx/core/standard_paths.rb +1 -1
- data/lib/wx/core/task_bar_button.rb +1 -1
- data/lib/wx/core/text_entry.rb +1 -1
- data/lib/wx/core/textctrl.rb +2 -2
- data/lib/wx/core/timer.rb +2 -2
- data/lib/wx/core/tree_ctrl.rb +1 -1
- data/lib/wx/core/v_list_box.rb +1 -1
- data/lib/wx/core/validator.rb +2 -2
- data/lib/wx/core/variant.rb +2 -2
- data/lib/wx/core/window.rb +48 -2
- data/lib/wx/core/xmlresource.rb +4 -4
- data/lib/wx/core.rb +2 -0
- data/lib/wx/doc/evthandler.rb +1 -0
- data/lib/wx/doc/tip_window.rb +22 -0
- data/lib/wx/grid/grid.rb +3 -3
- data/lib/wx/grid/require.rb +0 -2
- data/lib/wx/html/htmlhelpcontroller.rb +1 -1
- data/lib/wx/html/htmlwindow.rb +1 -1
- data/lib/wx/html/require.rb +0 -2
- data/lib/wx/html/simple_html_listbox.rb +3 -3
- data/lib/wx/keyword_ctors.rb +14 -7
- data/lib/wx/keyword_defs.rb +7 -7
- data/lib/wx/pg/pg_properties.rb +1 -1
- data/lib/wx/pg/pg_property.rb +3 -3
- data/lib/wx/pg/property_grid.rb +2 -2
- data/lib/wx/pg/property_grid_interface.rb +2 -2
- data/lib/wx/pg/require.rb +0 -2
- data/lib/wx/prt/previewframe.rb +1 -1
- data/lib/wx/prt/require.rb +0 -2
- data/lib/wx/rbn/ribbon_control.rb +1 -1
- data/lib/wx/rbn/ribbon_page.rb +1 -1
- data/lib/wx/rbn/ribbon_panel.rb +1 -1
- data/lib/wx/rtc/require.rb +0 -2
- data/lib/wx/rtc/rich_text_composite_object.rb +1 -1
- data/lib/wx/rtc/rich_text_ctrl.rb +1 -1
- data/lib/wx/rtc/rich_text_paragraph.rb +1 -1
- data/lib/wx/rtc/richtext_buffer.rb +3 -3
- data/lib/wx/rtc/richtext_formatting_dialog.rb +2 -2
- data/lib/wx/rtc/richtext_style_organiser_dialog.rb +1 -1
- data/lib/wx/rtc/symbol_picker_dialog.rb +1 -1
- data/lib/wx/stc/require.rb +0 -2
- data/lib/wx/stc/styled_text_ctrl.rb +1 -1
- data/lib/wx/version.rb +1 -1
- data/lib/wx/wxruby/base.rb +8 -2
- data/lib/wx/wxruby/cmd/setup.rb +61 -37
- data/rakelib/gem.rb +8 -4
- data/rakelib/lib/config/mingw.rb +1 -1
- data/rakelib/lib/director/about_dialog_info.rb +1 -0
- data/rakelib/lib/director/aui_manager.rb +63 -57
- data/rakelib/lib/director/aui_notebook.rb +7 -0
- data/rakelib/lib/director/colour.rb +1 -1
- data/rakelib/lib/director/data_format.rb +1 -1
- data/rakelib/lib/director/event.rb +1 -0
- data/rakelib/lib/director/event_handler.rb +82 -46
- data/rakelib/lib/director/functions.rb +0 -3
- data/rakelib/lib/director/list_ctrl.rb +14 -10
- data/rakelib/lib/director/locale.rb +2 -0
- data/rakelib/lib/director/num_validator.rb +7 -0
- data/rakelib/lib/director/tip_window.rb +34 -0
- data/rakelib/lib/director/window.rb +9 -1
- data/rakelib/lib/director.rb +0 -1
- data/rakelib/lib/generate/doc/evt_handler.yaml +31 -12
- data/rakelib/lib/specs/interfaces.rb +1 -0
- data/tests/test_combo_ctrl.rb +1 -0
- data/tests/test_event_handling.rb +158 -31
- metadata +6 -5
@@ -6,23 +6,42 @@
|
|
6
6
|
- :pattern: !ruby/regexp /.*/
|
7
7
|
:replace: ''
|
8
8
|
:post:
|
9
|
-
- :pattern: !ruby/regexp
|
10
|
-
:subst: 'This implies'
|
11
|
-
- :pattern: !ruby/regexp /\{Wx::EvtHandler#queue_event\}.*For\s+example:/
|
9
|
+
- :pattern: !ruby/regexp /\,\s+i\.e\.\s+it\s+will\s+delete\s+it\s+itself/
|
12
10
|
:subst: ''
|
13
|
-
- :pattern: !ruby/regexp /
|
11
|
+
- :pattern: !ruby/regexp /This\s+implies\s+that\s+the\s+event\s+should\s+be\s+allocated.*deleted\s+at\s+any\s+moment\)/
|
12
|
+
:subst: "This implies that the event (or any of it's member objects) should not be used/changed after the function returns (as it can be handled and subsequently discarded at any moment)"
|
13
|
+
- :pattern: !ruby/regexp /\{Wx::EvtHandler#queue_event\}.*not\s+used\s+by\s+the\s+calling\s+thread\s+any\s+more\./
|
14
|
+
:subst: ''
|
15
|
+
- :pattern: !ruby/regexp /Care\s+should\s+still\s+be\s+taken\s+to\s+avoid\s+that\s+some\s+fields.*/
|
16
|
+
:subst: ''
|
17
|
+
- :pattern: !ruby/regexp /Example:/
|
18
|
+
:subst: ''
|
19
|
+
- :pattern: !ruby/regexp /Note\s+that\s+if\s+you\s+want\s+to\s+pass\s+more\s+data.*/
|
20
|
+
:subst: ''
|
21
|
+
- :pattern: !ruby/regexp /Reimplemented\s+in.*/
|
22
|
+
:subst: ''
|
23
|
+
:wxEvtHandler.AddPendingEvent:
|
24
|
+
:detail:
|
25
|
+
:post:
|
26
|
+
- :pattern: !ruby/regexp /This\s+function\s+is\s+similar\s+to\s+\{Wx::EvtHandler#queue_event\}.*/
|
27
|
+
:subst: 'This function is similar to {Wx::EvtHandler#queue_event}.'
|
28
|
+
- :pattern: !ruby/regexp /A\s+copy\s+of\s+event\s+is\s+made\s+by\s+the\s+function,.*/
|
29
|
+
:subst: 'Other than {Wx::EvtHandler#queue_event} this method creates a (shallow) copy of event before queueing the copied event. In case (user defined) event classes require deep copying of Ruby member object these classes should override the #initialize_clone method (**NOT** #clone as wxRuby3 does not currently support overriding event class #clone methods).'
|
30
|
+
- :pattern: !ruby/regexp /Reimplemented\s+in.*/
|
14
31
|
:subst: ''
|
15
32
|
:wxEvtHandler.SetNextHandler:
|
33
|
+
:brief:
|
34
|
+
:post:
|
35
|
+
- :pattern: !ruby/regexp /Sets\s+the\s+pointer\s+to\s+the\s+next\s+handler\./
|
36
|
+
:subst: 'Inserts the given handler as the next handler in the chain.'
|
16
37
|
:detail:
|
17
38
|
:pre:
|
18
|
-
:
|
19
|
-
- :pattern: !ruby/regexp
|
20
|
-
:replace:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
handlerB.set_previous_handler(handlerA)
|
25
|
-
```
|
39
|
+
:para:
|
40
|
+
- :pattern: !ruby/regexp /See.*ProcessEvent\(\)/
|
41
|
+
:replace: |
|
42
|
+
In wxRuby this fully handles double linking, i.e. wxRuby will take care of pointing the handler given
|
43
|
+
back to this handler as well. There is no need to call set_previous_handler so this method is not supported
|
44
|
+
in wxRuby3.
|
26
45
|
:wxEvtHandler.TryBefore:
|
27
46
|
:detail:
|
28
47
|
:pre:
|
@@ -201,6 +201,7 @@ module WXRuby3
|
|
201
201
|
Director.Spec(pkg, 'wxDragDrop', requirements: %w[USE_DRAG_AND_DROP])
|
202
202
|
Director.Spec(pkg, 'wxContextHelpButton', requirements: %w[USE_HELP])
|
203
203
|
Director.Spec(pkg, 'wxHelpProvider', requirements: %w[USE_HELP])
|
204
|
+
Director.Spec(pkg, 'wxTipWindow', requirements: %w[USE_HELP])
|
204
205
|
Director.Spec(pkg, 'wxHelpController', requirements: %w[USE_HELP])
|
205
206
|
Director.Spec(pkg, 'wxExtHelpController', director: Director::HelpController, requirements: %w[USE_HELP])
|
206
207
|
Director.Spec(pkg, 'wxTaskBarIconEvent', director: Director::Event, requirements: %w[USE_TASKBARICON])
|
data/tests/test_combo_ctrl.rb
CHANGED
@@ -23,6 +23,7 @@ class ComboCtrlCtrlTests < WxRuby::Test::GUITests
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def create(parent)
|
26
|
+
GC.start
|
26
27
|
# need to finish creating the list view here
|
27
28
|
# as calling super here would just call Wx::ComboPopup#create and not Wx::ListView#create
|
28
29
|
# we need to use Ruby magic
|
@@ -10,6 +10,14 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
10
10
|
EVT_TEST_EVENT = Wx::EvtHandler.register_class(self, nil, 'evt_test_event', 0)
|
11
11
|
def initialize(id=0)
|
12
12
|
super(EVT_TEST_EVENT, id)
|
13
|
+
@value = nil
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_accessor :value
|
17
|
+
|
18
|
+
def initialize_clone(org)
|
19
|
+
super
|
20
|
+
self.value = org.value.dup if org.value
|
13
21
|
end
|
14
22
|
end
|
15
23
|
|
@@ -53,15 +61,18 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
53
61
|
super(nil, size: [300,300])
|
54
62
|
@child = Child.new(self)
|
55
63
|
@test_event = false
|
64
|
+
@test_event_value = nil
|
56
65
|
@test_cmd_event = false
|
66
|
+
@focus_event = false
|
57
67
|
@called_after = false
|
58
68
|
|
59
|
-
evt_test_event { |evt| @test_event = true }
|
69
|
+
evt_test_event { |evt| @test_event = true; @test_event_value = evt.value }
|
60
70
|
evt_test_cmd_event { |evt| @test_cmd_event = true }
|
71
|
+
evt_set_focus { |evt| @focus_event = true }
|
61
72
|
end
|
62
73
|
|
63
74
|
attr_reader :child
|
64
|
-
attr_reader :test_event, :test_cmd_event
|
75
|
+
attr_reader :test_event, :test_event_value, :test_cmd_event, :focus_event
|
65
76
|
attr_accessor :called_after
|
66
77
|
|
67
78
|
def reset
|
@@ -76,16 +87,20 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
76
87
|
win = TestFrame.new
|
77
88
|
assert(!win.test_event)
|
78
89
|
assert(!win.child.test_event)
|
79
|
-
win.child.
|
90
|
+
win.child.process_event(TestEvent.new)
|
80
91
|
assert(!win.test_event)
|
81
92
|
assert(win.child.test_event)
|
82
93
|
win.reset
|
83
|
-
win.child.
|
94
|
+
win.child.process_event(TestEvent.new(1))
|
84
95
|
assert(!win.test_event)
|
85
96
|
assert(win.child.test_event)
|
86
97
|
win.reset
|
87
|
-
|
98
|
+
evt = TestEvent.new
|
99
|
+
evt.value = 'Something happened'.dup
|
100
|
+
win.process_event(evt)
|
101
|
+
evt.value << ' again'
|
88
102
|
assert(win.test_event)
|
103
|
+
assert_equal('Something happened again', win.test_event_value)
|
89
104
|
assert(!win.child.test_event)
|
90
105
|
win.destroy
|
91
106
|
Wx.get_app.yield
|
@@ -95,43 +110,72 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
95
110
|
win = TestFrame.new
|
96
111
|
assert_false(win.test_cmd_event)
|
97
112
|
assert_false(win.child.test_cmd_event)
|
98
|
-
win.child.
|
113
|
+
win.child.process_event(TestCmdEvent.new)
|
99
114
|
assert_false(win.test_cmd_event)
|
100
115
|
assert_true(win.child.test_cmd_event)
|
101
116
|
assert_false(win.child.test_client_data)
|
102
117
|
win.reset
|
103
|
-
win.child.
|
118
|
+
win.child.process_event(TestCmdEvent.new(1))
|
104
119
|
assert_true(win.test_cmd_event)
|
105
120
|
assert_true(win.child.test_cmd_event)
|
106
121
|
assert_true(win.child.test_client_data)
|
107
122
|
win.reset
|
108
|
-
win.
|
123
|
+
win.process_event(TestCmdEvent.new)
|
109
124
|
assert_true(win.test_cmd_event)
|
110
125
|
assert_false(win.child.test_cmd_event)
|
111
126
|
win.destroy
|
112
127
|
Wx.get_app.yield
|
113
128
|
end
|
114
129
|
|
130
|
+
def test_queue_focus_event
|
131
|
+
win = TestFrame.new
|
132
|
+
assert_false(win.focus_event)
|
133
|
+
win.queue_event(Wx::FocusEvent.new(Wx::EVT_SET_FOCUS))
|
134
|
+
Wx.get_app.yield
|
135
|
+
assert_true(win.focus_event)
|
136
|
+
win.destroy
|
137
|
+
Wx.get_app.yield
|
138
|
+
end
|
139
|
+
|
115
140
|
def test_queue_event
|
116
141
|
win = TestFrame.new
|
117
142
|
assert_false(win.test_cmd_event)
|
118
143
|
assert_false(win.child.test_cmd_event)
|
119
|
-
win.child.
|
144
|
+
win.child.queue_event(TestCmdEvent.new)
|
120
145
|
Wx.get_app.yield
|
121
146
|
assert_false(win.test_cmd_event)
|
122
147
|
assert_true(win.child.test_cmd_event)
|
123
148
|
assert_false(win.child.test_client_data)
|
124
149
|
win.reset
|
125
|
-
win.child.
|
150
|
+
win.child.queue_event(TestCmdEvent.new(1))
|
126
151
|
Wx.get_app.yield
|
127
152
|
assert_true(win.test_cmd_event)
|
128
153
|
assert_true(win.child.test_cmd_event)
|
129
154
|
assert_true(win.child.test_client_data)
|
130
155
|
win.reset
|
131
|
-
win.
|
156
|
+
win.queue_event(TestCmdEvent.new)
|
132
157
|
Wx.get_app.yield
|
133
158
|
assert_true(win.test_cmd_event)
|
134
159
|
assert_false(win.child.test_cmd_event)
|
160
|
+
win.reset
|
161
|
+
evt = TestEvent.new
|
162
|
+
evt.value = 'Something happened'.dup
|
163
|
+
win.queue_event(evt)
|
164
|
+
evt.value << ' again'
|
165
|
+
Wx.get_app.yield
|
166
|
+
assert_true(win.test_event)
|
167
|
+
assert_equal('Something happened again', win.test_event_value)
|
168
|
+
assert_false(win.child.test_event)
|
169
|
+
win.destroy
|
170
|
+
Wx.get_app.yield
|
171
|
+
end
|
172
|
+
|
173
|
+
def test_pending_focus_event
|
174
|
+
win = TestFrame.new
|
175
|
+
assert_false(win.focus_event)
|
176
|
+
win.add_pending_event(Wx::FocusEvent.new(Wx::EVT_SET_FOCUS))
|
177
|
+
Wx.get_app.yield
|
178
|
+
assert_true(win.focus_event)
|
135
179
|
win.destroy
|
136
180
|
Wx.get_app.yield
|
137
181
|
end
|
@@ -140,22 +184,31 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
140
184
|
win = TestFrame.new
|
141
185
|
assert_false(win.test_cmd_event)
|
142
186
|
assert_false(win.child.test_cmd_event)
|
143
|
-
win.child.
|
187
|
+
win.child.add_pending_event(TestCmdEvent.new)
|
144
188
|
Wx.get_app.yield
|
145
189
|
assert_false(win.test_cmd_event)
|
146
190
|
assert_true(win.child.test_cmd_event)
|
147
191
|
assert_false(win.child.test_client_data)
|
148
192
|
win.reset
|
149
|
-
win.child.
|
193
|
+
win.child.add_pending_event(TestCmdEvent.new(1))
|
150
194
|
Wx.get_app.yield
|
151
195
|
assert_true(win.test_cmd_event)
|
152
196
|
assert_true(win.child.test_cmd_event)
|
153
197
|
assert_true(win.child.test_client_data)
|
154
198
|
win.reset
|
155
|
-
win.
|
199
|
+
win.add_pending_event(TestCmdEvent.new)
|
156
200
|
Wx.get_app.yield
|
157
201
|
assert_true(win.test_cmd_event)
|
158
202
|
assert_false(win.child.test_cmd_event)
|
203
|
+
win.reset
|
204
|
+
evt = TestEvent.new
|
205
|
+
evt.value = 'Something happened'.dup
|
206
|
+
win.add_pending_event(evt)
|
207
|
+
evt.value << ' again'
|
208
|
+
Wx.get_app.yield
|
209
|
+
assert_true(win.test_event)
|
210
|
+
assert_equal('Something happened', win.test_event_value)
|
211
|
+
assert_false(win.child.test_event)
|
159
212
|
win.destroy
|
160
213
|
Wx.get_app.yield
|
161
214
|
end
|
@@ -164,19 +217,19 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
164
217
|
win = TestFrame.new
|
165
218
|
assert_false(win.test_cmd_event)
|
166
219
|
assert_false(win.child.test_cmd_event)
|
167
|
-
Wx.post_event(win.child
|
220
|
+
Wx.post_event(win.child, TestCmdEvent.new)
|
168
221
|
Wx.get_app.yield
|
169
222
|
assert_false(win.test_cmd_event)
|
170
223
|
assert_true(win.child.test_cmd_event)
|
171
224
|
assert_false(win.child.test_client_data)
|
172
225
|
win.reset
|
173
|
-
Wx.post_event(win.child
|
226
|
+
Wx.post_event(win.child, TestCmdEvent.new(1))
|
174
227
|
Wx.get_app.yield
|
175
228
|
assert_true(win.test_cmd_event)
|
176
229
|
assert_true(win.child.test_cmd_event)
|
177
230
|
assert_true(win.child.test_client_data)
|
178
231
|
win.reset
|
179
|
-
Wx.post_event(win
|
232
|
+
Wx.post_event(win, TestCmdEvent.new)
|
180
233
|
Wx.get_app.yield
|
181
234
|
assert_true(win.test_cmd_event)
|
182
235
|
assert_false(win.child.test_cmd_event)
|
@@ -187,11 +240,11 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
187
240
|
def test_call_after
|
188
241
|
win = TestFrame.new
|
189
242
|
assert(!win.called_after)
|
190
|
-
win.
|
243
|
+
win.call_after { win.called_after = true }
|
191
244
|
Wx.get_app.yield
|
192
245
|
assert(win.called_after)
|
193
246
|
win.reset
|
194
|
-
win.child.
|
247
|
+
win.child.call_after { win.called_after = true }
|
195
248
|
Wx.get_app.yield
|
196
249
|
assert(win.called_after)
|
197
250
|
win.destroy
|
@@ -201,31 +254,105 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
201
254
|
def test_event_blocker
|
202
255
|
win = TestFrame.new
|
203
256
|
assert(!win.test_event)
|
204
|
-
win.
|
257
|
+
win.process_event(TestEvent.new)
|
205
258
|
assert(win.test_event)
|
206
259
|
win.reset
|
207
260
|
Wx::EventBlocker.blocked_for(win) do |blkr|
|
208
|
-
win.
|
261
|
+
win.process_event(TestEvent.new(1))
|
209
262
|
end
|
210
263
|
assert(!win.test_event)
|
211
|
-
win.
|
264
|
+
win.process_event(TestEvent.new)
|
212
265
|
assert(win.test_event)
|
213
266
|
win.reset
|
214
267
|
Wx::EventBlocker.blocked_for(win, TestEvent::EVT_TEST_EVENT) do |blkr|
|
215
|
-
win.
|
268
|
+
win.process_event(TestEvent.new(1))
|
216
269
|
end
|
217
270
|
assert(!win.test_event)
|
218
|
-
win.
|
271
|
+
win.process_event(TestEvent.new)
|
219
272
|
assert(win.test_event)
|
220
273
|
win.reset
|
221
274
|
Wx::EventBlocker.blocked_for(win, Wx::EVT_ACTIVATE) do |blkr|
|
222
|
-
win.
|
275
|
+
win.process_event(TestEvent.new(1))
|
223
276
|
end
|
224
277
|
assert(win.test_event)
|
225
278
|
win.destroy
|
226
279
|
Wx.get_app.yield
|
227
280
|
end
|
228
281
|
|
282
|
+
class MyEventHandler < Wx::EvtHandler
|
283
|
+
|
284
|
+
def initialize
|
285
|
+
super
|
286
|
+
@test_event = false
|
287
|
+
@test_cmd_event = false
|
288
|
+
evt_test_event :on_test_event
|
289
|
+
evt_test_cmd_event :on_test_cmd_event
|
290
|
+
end
|
291
|
+
|
292
|
+
attr_reader :test_event, :test_cmd_event
|
293
|
+
|
294
|
+
def on_test_event(_evt)
|
295
|
+
@test_event = true
|
296
|
+
end
|
297
|
+
|
298
|
+
def on_test_cmd_event(evt)
|
299
|
+
@test_cmd_event = true
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
class EventSnooper < Wx::EvtHandler
|
304
|
+
|
305
|
+
def initialize
|
306
|
+
super
|
307
|
+
@test_event = false
|
308
|
+
@test_cmd_event = false
|
309
|
+
evt_test_event :on_test_event
|
310
|
+
evt_test_cmd_event :on_test_cmd_event
|
311
|
+
end
|
312
|
+
|
313
|
+
attr_reader :test_event, :test_cmd_event
|
314
|
+
|
315
|
+
def on_test_event(_evt)
|
316
|
+
@test_event = true
|
317
|
+
end
|
318
|
+
|
319
|
+
def on_test_cmd_event(evt)
|
320
|
+
@test_cmd_event = true
|
321
|
+
evt.skip # make sure other handler(s) get this too
|
322
|
+
end
|
323
|
+
|
324
|
+
end
|
325
|
+
|
326
|
+
def test_chained_event_handler
|
327
|
+
snooper = EventSnooper.new
|
328
|
+
my_handler = MyEventHandler.new
|
329
|
+
snooper.set_next_handler(my_handler)
|
330
|
+
assert_false(my_handler.test_event)
|
331
|
+
assert_false(snooper.test_event)
|
332
|
+
snooper.process_event(TestEvent.new)
|
333
|
+
assert_false(my_handler.test_event)
|
334
|
+
assert_true(snooper.test_event)
|
335
|
+
end
|
336
|
+
|
337
|
+
def test_pushed_event_handler
|
338
|
+
win = TestFrame.new
|
339
|
+
snooper = EventSnooper.new
|
340
|
+
win.push_event_handler(snooper)
|
341
|
+
assert_false(win.test_event)
|
342
|
+
assert_false(snooper.test_event)
|
343
|
+
win.process_event(TestEvent.new)
|
344
|
+
assert_false(win.test_event)
|
345
|
+
assert_true(snooper.test_event)
|
346
|
+
win.reset
|
347
|
+
assert_false(win.test_cmd_event)
|
348
|
+
assert_false(snooper.test_cmd_event)
|
349
|
+
win.process_event(TestCmdEvent.new)
|
350
|
+
assert_true(win.test_cmd_event)
|
351
|
+
assert_true(snooper.test_cmd_event)
|
352
|
+
win.destroy
|
353
|
+
Wx.get_app.yield
|
354
|
+
end
|
355
|
+
|
229
356
|
class MyEventFilter < Wx::EventFilter
|
230
357
|
def initialize
|
231
358
|
super
|
@@ -245,16 +372,16 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
245
372
|
assert_nothing_raised { Wx::EvtHandler.add_filter(filter) }
|
246
373
|
GC.start
|
247
374
|
win = TestFrame.new
|
248
|
-
win.child.
|
375
|
+
win.child.process_event(TestEvent.new)
|
249
376
|
GC.start
|
250
377
|
assert(filter.filtered)
|
251
378
|
filter.filtered = false
|
252
|
-
win.child.
|
379
|
+
win.child.process_event(TestCmdEvent.new)
|
253
380
|
GC.start
|
254
381
|
assert(!filter.filtered)
|
255
382
|
assert_nothing_raised { Wx::EvtHandler.remove_filter(filter) }
|
256
383
|
GC.start
|
257
|
-
win.child.
|
384
|
+
win.child.process_event(TestEvent.new)
|
258
385
|
assert(!filter.filtered)
|
259
386
|
GC.start
|
260
387
|
win.destroy
|
@@ -277,16 +404,16 @@ class EventHandlingTests < Test::Unit::TestCase
|
|
277
404
|
assert_nothing_raised { Wx::EvtHandler.add_filter(MyEventFilter2.new) }
|
278
405
|
GC.start
|
279
406
|
win = TestFrame.new
|
280
|
-
win.child.
|
407
|
+
win.child.process_event(TestEvent.new)
|
281
408
|
GC.start
|
282
409
|
assert(MyEventFilter2.filtered)
|
283
410
|
MyEventFilter2.filtered = false
|
284
|
-
win.child.
|
411
|
+
win.child.process_event(TestCmdEvent.new)
|
285
412
|
GC.start
|
286
413
|
assert(!MyEventFilter2.filtered)
|
287
414
|
assert_nothing_raised { Wx::EvtHandler.clear_filters }
|
288
415
|
GC.start
|
289
|
-
win.child.
|
416
|
+
win.child.process_event(TestEvent.new)
|
290
417
|
assert(!MyEventFilter2.filtered)
|
291
418
|
GC.start
|
292
419
|
win.destroy
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wxruby3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Corino
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date: 2024-
|
10
|
+
date: 2024-12-29 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: nokogiri
|
@@ -205,6 +204,7 @@ files:
|
|
205
204
|
- lib/wx/core/menu.rb
|
206
205
|
- lib/wx/core/menu_bar.rb
|
207
206
|
- lib/wx/core/menuitem.rb
|
207
|
+
- lib/wx/core/module_ext.rb
|
208
208
|
- lib/wx/core/notebook.rb
|
209
209
|
- lib/wx/core/object.rb
|
210
210
|
- lib/wx/core/owner_drawn_combobox.rb
|
@@ -339,6 +339,7 @@ files:
|
|
339
339
|
- lib/wx/doc/system_settings.rb
|
340
340
|
- lib/wx/doc/text_validator.rb
|
341
341
|
- lib/wx/doc/textctrl.rb
|
342
|
+
- lib/wx/doc/tip_window.rb
|
342
343
|
- lib/wx/doc/top_level_window.rb
|
343
344
|
- lib/wx/doc/tree_ctrl.rb
|
344
345
|
- lib/wx/doc/tree_event.rb
|
@@ -667,6 +668,7 @@ files:
|
|
667
668
|
- rakelib/lib/director/time_picker_ctrl.rb
|
668
669
|
- rakelib/lib/director/timer.rb
|
669
670
|
- rakelib/lib/director/tip_provider.rb
|
671
|
+
- rakelib/lib/director/tip_window.rb
|
670
672
|
- rakelib/lib/director/toggle_button.rb
|
671
673
|
- rakelib/lib/director/tool_bar.rb
|
672
674
|
- rakelib/lib/director/tool_tip.rb
|
@@ -1207,8 +1209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1207
1209
|
- !ruby/object:Gem::Version
|
1208
1210
|
version: '0'
|
1209
1211
|
requirements: []
|
1210
|
-
rubygems_version: 3.
|
1211
|
-
signing_key:
|
1212
|
+
rubygems_version: 3.6.2
|
1212
1213
|
specification_version: 4
|
1213
1214
|
summary: wxWidgets extension for Ruby
|
1214
1215
|
test_files: []
|