fxruby 1.6.32-x64-mingw32 → 1.6.33-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.txt +8 -0
- data/README.rdoc +7 -4
- data/Rakefile +11 -0
- data/examples/WhatAQuietStiff.rb +1 -1
- data/examples/imageviewer.rb +1 -1
- data/examples/textedit/textedit.rb +8 -8
- data/ext/fox16_c/FXRuby.cpp +52 -20
- data/ext/fox16_c/extconf.rb +1 -0
- data/ext/fox16_c/include/FXRbWindow.h +2 -2
- data/ext/fox16_c/include/FXRuby.h +5 -1
- data/ext/fox16_c/markfuncs.cpp +24 -0
- data/lib/2.0/fox16_c.so +0 -0
- data/lib/2.1/fox16_c.so +0 -0
- data/lib/2.2/fox16_c.so +0 -0
- data/lib/fox16/core.rb +0 -8
- data/lib/fox16/thread.rb +2 -2
- data/lib/fox16/version.rb +1 -1
- data/ports/x86_64-w64-mingw32/bin/libFOX-1.6-0.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libfxscintilla-20.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libgcc_s_sjlj-1.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libjpeg-8.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libpng15-15.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libstdc++-6.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libtiff-5.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/libwinpthread-1.dll +0 -0
- data/ports/x86_64-w64-mingw32/bin/zlib1.dll +0 -0
- data/swig-interfaces/FXVec2d.i +1 -0
- data/swig-interfaces/FXVec2f.i +1 -0
- data/swig-interfaces/FXVec3d.i +1 -0
- data/swig-interfaces/FXVec3f.i +1 -0
- data/swig-interfaces/FXVec4d.i +1 -0
- data/swig-interfaces/FXVec4f.i +1 -0
- data/swig-interfaces/ruby-typemaps.i +15 -9
- data/test/TC_FXApp.rb +2 -2
- data/test/TC_FXCheckButton.rb +0 -5
- data/test/TC_FXDCPrint.rb +1 -1
- data/test/TC_FXFileStream.rb +1 -1
- data/test/TC_FXFont.rb +2 -2
- data/test/TC_FXId.rb +1 -1
- data/test/TC_FXImage.rb +2 -2
- data/test/TC_FXMainWindow.rb +1 -0
- data/test/TC_FXMat4f.rb +3 -3
- data/test/TC_FXMaterial.rb +1 -1
- data/test/TC_FXMenuCheck.rb +0 -5
- data/test/TC_FXMenuRadio.rb +0 -5
- data/test/TC_FXQuatf.rb +5 -5
- data/test/TC_FXRadioButton.rb +0 -5
- data/test/TC_FXRegion.rb +3 -3
- data/test/TC_FXShell.rb +1 -0
- data/test/TC_FXTable.rb +1 -1
- data/test/TC_FXVec4f.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 976877f65b3913a2d3e2fc78ac76584f8e2b5556
|
4
|
+
data.tar.gz: 345d83f552be95f775894c3dc08cb631a796d046
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93560a1477f13a78e678248c3252e3ea56b32d61a242cbea35b5de2adf129922dedfe04775f4df373acfa9c426249e30b8dafd17c1ab20f2eedd2595cbe54b3a
|
7
|
+
data.tar.gz: 0cf5f68b271b6f6b4c07b94a9f0b057446008d57eba87686fa3abe8a5d88d2eab0ef56897c0b5722e0db555b147a05093857e3c1c058c055c5156e9bb19bbeae
|
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 1.6.33 / 2015-08-20
|
2
|
+
|
3
|
+
* Avoid calls that are prohibited while GC phases during GC. Fixes #23
|
4
|
+
* Use copy'ing getters for FXVec members in FXMat*, FXMaterial and FXLight.
|
5
|
+
This fixes the TC_FXMaterial#test_bug test case.
|
6
|
+
* Fix test suite, so that all tests pass.
|
7
|
+
* Add a travis-ci test setup and connect it to the github account.
|
8
|
+
|
1
9
|
=== 1.6.32 / 2015-08-07
|
2
10
|
|
3
11
|
* Avoid call to rb_class2name() during GC. Fixes #21
|
data/README.rdoc
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
= FXRuby
|
2
2
|
|
3
3
|
* http://github.com/larskanis/fxruby
|
4
|
-
* API: http://rubydoc.info/gems/fxruby/frames
|
4
|
+
* Full API-description: http://rubydoc.info/gems/fxruby/frames
|
5
|
+
* Latest fxruby {<img src="https://badge.fury.io/rb/fxruby.svg" alt="Gem Version" />}[http://badge.fury.io/rb/fxruby]
|
6
|
+
* Status (on Linux): {<img src="https://travis-ci.org/larskanis/fxruby.svg?branch=1.6" alt="Build Status" />}[https://travis-ci.org/larskanis/fxruby]
|
5
7
|
|
6
8
|
== DESCRIPTION:
|
7
9
|
|
@@ -14,7 +16,7 @@ Ruby programming language that you already know and love, while at the
|
|
14
16
|
same time taking advantage of the performance and functionality of a
|
15
17
|
featureful, highly optimized C++ toolkit.
|
16
18
|
|
17
|
-
== FEATURES
|
19
|
+
== FEATURES:
|
18
20
|
|
19
21
|
FXRuby supportes everything of FOX, that is useful in Ruby:
|
20
22
|
* MDI/SDI application window layouts, floating toolbars
|
@@ -22,14 +24,15 @@ FXRuby supportes everything of FOX, that is useful in Ruby:
|
|
22
24
|
* Flexible layout management
|
23
25
|
* Image read/write support in many formats
|
24
26
|
* Embedded OpenGL graphics
|
27
|
+
* Thread support
|
25
28
|
|
26
29
|
== INSTALL:
|
27
30
|
|
28
|
-
FXRuby runs on Linux, Windows and OS-X. Installation on
|
31
|
+
FXRuby runs on Linux, Windows and OS-X with Ruby-1.9.3 or newer and with Rubinius. Installation on Unix requires
|
29
32
|
FOX development headers and libraries installed:
|
30
33
|
* on Debian/Ubuntu: <tt>sudo apt-get install g++ libxrandr-dev libfox-1.6-dev</tt>
|
31
34
|
* see also detailed installation instructions in the {https://github.com/lylejohnson/fxruby/wiki Wiki}
|
32
|
-
*
|
35
|
+
* on Windows: the binary fxruby gems already contain all required libararies
|
33
36
|
|
34
37
|
Then, install the gem:
|
35
38
|
* gem install fxruby
|
data/Rakefile
CHANGED
@@ -21,6 +21,9 @@ end
|
|
21
21
|
# Some constants we'll need
|
22
22
|
PKG_VERSION = Fox.fxrubyversion
|
23
23
|
|
24
|
+
LIBFXSCINTILLA_VERSION = ENV['LIBFXSCINTILLA_VERSION'] || '2.28.0'
|
25
|
+
LIBFXSCINTILLA_SOURCE_URI = "http://download.savannah.gnu.org/releases/fxscintilla/fxscintilla-#{LIBFXSCINTILLA_VERSION}.tar.gz"
|
26
|
+
|
24
27
|
SWIG = (RUBY_PLATFORM =~ /mingw/) ? "swig.exe" : "swig"
|
25
28
|
SWIGFLAGS = "-c++ -ruby -nodefaultdtor -nodefaultctor -w302 -features compactdefaultargs -I../fox-includes"
|
26
29
|
SWIG_MODULES = {
|
@@ -99,6 +102,8 @@ task :test => [:compile]
|
|
99
102
|
Rake::ExtensionTask.new("fox16_c", hoe.spec) do |ext|
|
100
103
|
ext.cross_compile = true
|
101
104
|
ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
|
105
|
+
# Enable FXTRACE and FXASSERT for 'rake compile'
|
106
|
+
ext.config_options << "--enable-debug"
|
102
107
|
|
103
108
|
ext.cross_config_options += [
|
104
109
|
"--enable-win32-cross",
|
@@ -253,6 +258,12 @@ namespace :fxruby do
|
|
253
258
|
file "ext/fox16_c/extconf.rb" => ['ext/fox16_c/swigruby.h', 'ext/fox16_c/impl.cpp', 'ext/fox16_c/include/inlinestubs.h'] +
|
254
259
|
SWIG_MODULES.map{|ifile, cppfile| File.join("ext/fox16_c", cppfile) }
|
255
260
|
|
261
|
+
|
262
|
+
directory "ports/archives"
|
263
|
+
file "ports/archives/fxscintilla-2.28.0.tar.gz" => ["ports/archives"] do |t|
|
264
|
+
sh "wget #{LIBFXSCINTILLA_SOURCE_URI} -O #{t.name}"
|
265
|
+
end
|
266
|
+
|
256
267
|
directory "tmp/fxscintilla"
|
257
268
|
task "tmp/fxscintilla/fxscintilla-2.28.0/include/Scintilla.iface" => ["tmp/fxscintilla", "ports/archives/fxscintilla-2.28.0.tar.gz"] do
|
258
269
|
chdir "tmp/fxscintilla" do
|
data/examples/WhatAQuietStiff.rb
CHANGED
@@ -134,7 +134,7 @@ class WhatAQuietWindow < FXMainWindow
|
|
134
134
|
saveDialog = FXFileDialog.new(self, "Save Image")
|
135
135
|
saveDialog.filename = @itemList.getItemText(@itemList.currentItem)
|
136
136
|
if saveDialog.execute != 0
|
137
|
-
if File.
|
137
|
+
if File.exist? saveDialog.filename
|
138
138
|
if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
|
139
139
|
"Overwrite Image", "Overwrite existing image?")
|
140
140
|
return 1
|
data/examples/imageviewer.rb
CHANGED
@@ -326,7 +326,7 @@ class ImageWindow < FXMainWindow
|
|
326
326
|
def onCmdSave(sender, sel, ptr)
|
327
327
|
saveDialog = FXFileDialog.new(self, "Save Image")
|
328
328
|
if saveDialog.execute != 0
|
329
|
-
if File.
|
329
|
+
if File.exist? saveDialog.filename
|
330
330
|
if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
|
331
331
|
"Overwrite Image", "Overwrite existing image?")
|
332
332
|
return 1
|
@@ -1025,7 +1025,7 @@ class TextWindow < FXMainWindow
|
|
1025
1025
|
return false if (savedialog.execute == 0)
|
1026
1026
|
setCurrentPattern(savedialog.currentPattern)
|
1027
1027
|
file = savedialog.filename
|
1028
|
-
if File.
|
1028
|
+
if File.exist?(file)
|
1029
1029
|
if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
|
1030
1030
|
"Overwrite Document", "Overwrite existing document: #{file}?")
|
1031
1031
|
return false
|
@@ -1092,7 +1092,7 @@ class TextWindow < FXMainWindow
|
|
1092
1092
|
if savedialog.execute != 0
|
1093
1093
|
setCurrentPattern(savedialog.currentPattern)
|
1094
1094
|
file = savedialog.filename
|
1095
|
-
if File.
|
1095
|
+
if File.exist?(file)
|
1096
1096
|
if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
|
1097
1097
|
"Overwrite Document", "Overwrite existing document: #{file}?")
|
1098
1098
|
return 1
|
@@ -1134,24 +1134,24 @@ class TextWindow < FXMainWindow
|
|
1134
1134
|
# Attempt to extract the file name from various forms
|
1135
1135
|
if string =~ /#include \".*\"/
|
1136
1136
|
file = File.expand_path(name, dir)
|
1137
|
-
if !File.
|
1137
|
+
if !File.exist?(file)
|
1138
1138
|
Find.find(@searchpath) { |f| file = f if (f == name) }
|
1139
1139
|
end
|
1140
1140
|
elsif string =~ /#include <.*>/
|
1141
1141
|
file = File.expand_path(name, dir)
|
1142
|
-
if !File.
|
1142
|
+
if !File.exist?(file)
|
1143
1143
|
Find.find(@searchpath) { |f| file = f if (f == name) }
|
1144
1144
|
end
|
1145
1145
|
elsif string =~ /.*:.*:.*/
|
1146
1146
|
file = File.expand_path(name, dir)
|
1147
|
-
if !File.
|
1147
|
+
if !File.exist?(file)
|
1148
1148
|
Find.find(@searchpath) { |f| file = f if (f == name) }
|
1149
1149
|
end
|
1150
1150
|
else
|
1151
1151
|
file = File.expand_path(string, dir)
|
1152
1152
|
end
|
1153
1153
|
|
1154
|
-
if File.
|
1154
|
+
if File.exist?(file)
|
1155
1155
|
# Different from current file?
|
1156
1156
|
if file != @filename
|
1157
1157
|
# Save old file first
|
@@ -1213,7 +1213,7 @@ class TextWindow < FXMainWindow
|
|
1213
1213
|
if savedialog.execute != 0
|
1214
1214
|
setCurrentPattern(savedialog.currentPattern)
|
1215
1215
|
file = savedialog.filename
|
1216
|
-
if File.
|
1216
|
+
if File.exist?(file)
|
1217
1217
|
if MBOX_CLICKED_NO == FXMessageBox.question(self, MBOX_YES_NO,
|
1218
1218
|
"Overwrite Document", "Overwrite existing document: #{file}?")
|
1219
1219
|
return 1
|
@@ -1690,7 +1690,7 @@ class TextWindow < FXMainWindow
|
|
1690
1690
|
|
1691
1691
|
# Update box for readonly display
|
1692
1692
|
def onCheckFile(sender, sel, ptr)
|
1693
|
-
mtime = File.
|
1693
|
+
mtime = File.exist?(@filename) ? File.mtime(@filename) : nil
|
1694
1694
|
if @filetime && mtime && mtime != @filetime
|
1695
1695
|
@filetime = mtime
|
1696
1696
|
if MBOX_CLICKED_OK == FXMessageBox.warning(self, MBOX_OK_CANCEL,
|
data/ext/fox16_c/FXRuby.cpp
CHANGED
@@ -85,12 +85,19 @@ static st_table * FXRuby_Objects;
|
|
85
85
|
|
86
86
|
static const char * const safe_rb_obj_classname(VALUE obj)
|
87
87
|
{
|
88
|
-
|
88
|
+
int tdata = TYPE(obj)==T_DATA;
|
89
|
+
if( (tdata && FXRbIsInGC(DATA_PTR(obj)))
|
90
|
+
#ifdef HAVE_RB_DURING_GC
|
91
|
+
|| rb_during_gc()
|
92
|
+
#endif
|
93
|
+
){
|
89
94
|
/* It's not safe to call rb_obj_classname() during GC.
|
90
95
|
* Return dummy value in this case. */
|
91
96
|
return "during GC";
|
92
|
-
} else {
|
97
|
+
} else if (tdata) {
|
93
98
|
return rb_obj_classname(obj);
|
99
|
+
} else {
|
100
|
+
return "no T_DATA";
|
94
101
|
}
|
95
102
|
}
|
96
103
|
|
@@ -161,6 +168,31 @@ bool FXRbIsBorrowed(void* ptr){
|
|
161
168
|
}
|
162
169
|
}
|
163
170
|
|
171
|
+
bool FXRbSetInGC(const void* ptr, bool enabled){
|
172
|
+
FXASSERT(ptr!=0);
|
173
|
+
FXRubyObjDesc *desc;
|
174
|
+
if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
|
175
|
+
desc->in_gc=enabled;
|
176
|
+
return enabled;
|
177
|
+
}
|
178
|
+
return false;
|
179
|
+
}
|
180
|
+
|
181
|
+
bool FXRbIsInGC(const void* ptr){
|
182
|
+
FXASSERT(ptr!=0);
|
183
|
+
FXRubyObjDesc *desc;
|
184
|
+
|
185
|
+
#ifdef HAVE_RB_DURING_GC
|
186
|
+
if( rb_during_gc() ){
|
187
|
+
return true;
|
188
|
+
}
|
189
|
+
#endif
|
190
|
+
if(st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(ptr),reinterpret_cast<st_data_t *>(&desc))!=0){
|
191
|
+
return desc->in_gc;
|
192
|
+
}
|
193
|
+
return false;
|
194
|
+
}
|
195
|
+
|
164
196
|
|
165
197
|
/**
|
166
198
|
* FXRbConvertPtr() is just a wrapper around SWIG_ConvertPtr().
|
@@ -343,12 +375,13 @@ VALUE to_ruby(const FXObject* obj){
|
|
343
375
|
* Return the registered Ruby class instance associated with this
|
344
376
|
* FOX object, or Qnil if not found.
|
345
377
|
*/
|
346
|
-
VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed){
|
378
|
+
VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed, bool in_gc){
|
347
379
|
FXRubyObjDesc* desc;
|
348
380
|
if(foxObj!=0 && st_lookup(FXRuby_Objects,reinterpret_cast<st_data_t>(const_cast<void*>(foxObj)),reinterpret_cast<st_data_t *>(&desc))!=0){
|
349
381
|
FXASSERT(desc!=0);
|
350
382
|
if(alsoBorrowed || !desc->borrowed){
|
351
|
-
|
383
|
+
const char *classname = in_gc ? "in GC" : safe_rb_obj_classname(desc->obj);
|
384
|
+
FXTRACE((2,"FXRbGetRubyObj(foxObj=%p) => rubyObj=%p (%s)\n", foxObj, (void *)desc->obj, classname));
|
352
385
|
return desc->obj;
|
353
386
|
}
|
354
387
|
}
|
@@ -362,23 +395,21 @@ VALUE FXRbGetRubyObj(const void *foxObj,bool alsoBorrowed){
|
|
362
395
|
VALUE FXRbGetRubyObj(const void *foxObj,swig_type_info* ty){
|
363
396
|
if(foxObj!=0){
|
364
397
|
VALUE rbObj=FXRbGetRubyObj(foxObj,true);
|
365
|
-
|
398
|
+
if( NIL_P(rbObj) ){
|
399
|
+
return FXRbNewPointerObj(const_cast<void*>(foxObj),ty);
|
400
|
+
}else{
|
401
|
+
// The requested type should match the registered class.
|
402
|
+
FXASSERT(SWIG_CheckConvert(rbObj, ty));
|
403
|
+
return rbObj;
|
366
404
|
}
|
367
|
-
else{
|
405
|
+
}else{
|
368
406
|
return Qnil;
|
369
|
-
}
|
370
407
|
}
|
408
|
+
}
|
371
409
|
|
372
410
|
VALUE FXRbGetRubyObj(const void *foxObj,const char *type){
|
373
|
-
|
374
|
-
|
375
|
-
VALUE rbObj=FXRbGetRubyObj(foxObj,true);
|
376
|
-
return NIL_P(rbObj) ? FXRbNewPointerObj(const_cast<void*>(foxObj),FXRbTypeQuery(type)) : rbObj;
|
377
|
-
}
|
378
|
-
else{
|
379
|
-
return Qnil;
|
380
|
-
}
|
381
|
-
}
|
411
|
+
return FXRbGetRubyObj(foxObj, FXRbTypeQuery(type));
|
412
|
+
}
|
382
413
|
|
383
414
|
/**
|
384
415
|
* Look up the Ruby instance associated with this C++ object, if any, and mark
|
@@ -402,7 +433,7 @@ void FXRbGcMark(void *obj){
|
|
402
433
|
* example program works if you invoke the GC in ShutterWindow#create;
|
403
434
|
* make sure that the shutter items' contents don't get blown away!
|
404
435
|
*/
|
405
|
-
VALUE value=FXRbGetRubyObj(obj,true);
|
436
|
+
VALUE value=FXRbGetRubyObj(obj,true, true);
|
406
437
|
if(!NIL_P(value)){
|
407
438
|
rb_gc_mark(value);
|
408
439
|
}
|
@@ -1427,6 +1458,7 @@ void FXRbRange2LoHi(VALUE range,FXdouble& lo,FXdouble& hi){
|
|
1427
1458
|
void FXRbCallVoidMethod_gvlcb(FXObject* recv, const char *func) {
|
1428
1459
|
VALUE obj=FXRbGetRubyObj(recv,false);
|
1429
1460
|
FXASSERT(!NIL_P(obj));
|
1461
|
+
FXASSERT(!FXRbIsInGC(recv));
|
1430
1462
|
rb_funcall(obj,rb_intern(func),0,NULL);
|
1431
1463
|
}
|
1432
1464
|
|
@@ -1633,7 +1665,7 @@ void FXRbCallDCDrawMethod_gvlcb(FXDC* recv, const char * func, FXint x,FXint y,c
|
|
1633
1665
|
FXRbMenuCommand::~FXRbMenuCommand(){
|
1634
1666
|
FXAccelTable *table;
|
1635
1667
|
FXWindow *owner;
|
1636
|
-
if(acckey && !
|
1668
|
+
if(acckey && !FXRbIsInGC(this)){
|
1637
1669
|
owner=getShell()->getOwner();
|
1638
1670
|
if(owner){
|
1639
1671
|
table=owner->getAccelTable();
|
@@ -1649,7 +1681,7 @@ FXRbMenuCommand::~FXRbMenuCommand(){
|
|
1649
1681
|
FXRbMenuCheck::~FXRbMenuCheck(){
|
1650
1682
|
FXAccelTable *table;
|
1651
1683
|
FXWindow *owner;
|
1652
|
-
if(acckey && !
|
1684
|
+
if(acckey && !FXRbIsInGC(this)){
|
1653
1685
|
owner=getShell()->getOwner();
|
1654
1686
|
if(owner){
|
1655
1687
|
table=owner->getAccelTable();
|
@@ -1665,7 +1697,7 @@ FXRbMenuCheck::~FXRbMenuCheck(){
|
|
1665
1697
|
FXRbMenuRadio::~FXRbMenuRadio(){
|
1666
1698
|
FXAccelTable *table;
|
1667
1699
|
FXWindow *owner;
|
1668
|
-
if(acckey && !
|
1700
|
+
if(acckey && !FXRbIsInGC(this)){
|
1669
1701
|
owner=getShell()->getOwner();
|
1670
1702
|
if(owner){
|
1671
1703
|
table=owner->getAccelTable();
|
data/ext/fox16_c/extconf.rb
CHANGED
@@ -149,7 +149,7 @@ inline void klass ## _dropDisable(klass* self){ \
|
|
149
149
|
FXRbCallVoidMethod(this,"killFocus"); \
|
150
150
|
} \
|
151
151
|
void cls::changeFocus(FXWindow* child){ \
|
152
|
-
if(!
|
152
|
+
if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"changeFocus",child); \
|
153
153
|
} \
|
154
154
|
void cls::setDefault(FXbool enable){ \
|
155
155
|
FXRbCallVoidMethod(this,"setDefault",enable); \
|
@@ -173,7 +173,7 @@ inline void klass ## _dropDisable(klass* self){ \
|
|
173
173
|
FXRbCallVoidMethod(this,"position",x,y,w,h); \
|
174
174
|
} \
|
175
175
|
void cls::recalc(){ \
|
176
|
-
if(!
|
176
|
+
if(!FXRbIsInGC(this)) FXRbCallVoidMethod(this,"recalc"); \
|
177
177
|
} \
|
178
178
|
void cls::reparent(FXWindow* father,FXWindow* other){ \
|
179
179
|
FXRbCallVoidMethod(this,"reparent",father,other); \
|
@@ -81,6 +81,8 @@ VALUE showHelper(VALUE self, int argc, VALUE *argv, TYPE *p, swig_type_info *typ
|
|
81
81
|
// Wrapper around SWIG_Ruby_NewPointerObj()
|
82
82
|
VALUE FXRbNewPointerObj(void *ptr, swig_type_info *typeinfo);
|
83
83
|
bool FXRbIsBorrowed(void* ptr);
|
84
|
+
bool FXRbSetInGC(const void* ptr, bool enabled);
|
85
|
+
bool FXRbIsInGC(const void* ptr);
|
84
86
|
|
85
87
|
// Wrapper around SWIG_TypeQuery()
|
86
88
|
swig_type_info *FXRbTypeQuery(const char *name);
|
@@ -124,7 +126,7 @@ void FXRbDestroyAppSensitiveObjects();
|
|
124
126
|
* FOX object (if any). If searchBoth is false, only considers the
|
125
127
|
* Ruby-owned objects; otherwise considers all outstanding references.
|
126
128
|
*/
|
127
|
-
VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth);
|
129
|
+
VALUE FXRbGetRubyObj(const void *foxObj, bool searchBoth, bool in_gc=false);
|
128
130
|
|
129
131
|
/**
|
130
132
|
* Return the registered Ruby class instance associated with this
|
@@ -367,6 +369,7 @@ template<class TYPE>
|
|
367
369
|
void FXRbCallVoidMethod_gvlcb(FXObject* recv,const char *func, TYPE& arg){
|
368
370
|
VALUE obj=FXRbGetRubyObj(recv,false);
|
369
371
|
FXASSERT(!NIL_P(obj));
|
372
|
+
FXASSERT(!FXRbIsInGC(recv));
|
370
373
|
rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
|
371
374
|
FXRbUnregisterBorrowedRubyObj(&arg);
|
372
375
|
}
|
@@ -383,6 +386,7 @@ template<class TYPE>
|
|
383
386
|
void FXRbCallVoidMethod_gvlcb(const FXObject* recv, const char *func, TYPE& arg){
|
384
387
|
VALUE obj=FXRbGetRubyObj(recv,false);
|
385
388
|
FXASSERT(!NIL_P(obj));
|
389
|
+
FXASSERT(!FXRbIsInGC(recv));
|
386
390
|
rb_funcall(obj,rb_intern(func),1,to_ruby(arg));
|
387
391
|
FXRbUnregisterBorrowedRubyObj(&arg);
|
388
392
|
}
|
data/ext/fox16_c/markfuncs.cpp
CHANGED
@@ -53,6 +53,19 @@ void FXRbObject::markfunc(FXObject* obj){
|
|
53
53
|
FXTRACE((100,"%s::markfunc(%p)\n",obj?obj->getClassName():"FXRbObject",obj));
|
54
54
|
}
|
55
55
|
|
56
|
+
static void FXRbSetInGCParentsRecursive(FXWindow *window, bool enabled){
|
57
|
+
FXRbSetInGC( window, true );
|
58
|
+
if(window->getParent()) FXRbSetInGCParentsRecursive( window->getParent(), enabled );
|
59
|
+
}
|
60
|
+
|
61
|
+
static void FXRbSetInGCChildrenRecursive(FXWindow *window, bool enabled){
|
62
|
+
FXRbSetInGC( window, true );
|
63
|
+
for(FXWindow* child=window->getFirst(); child; child=child->getNext()){
|
64
|
+
FXRbSetInGCChildrenRecursive( child, enabled );
|
65
|
+
}
|
66
|
+
}
|
67
|
+
|
68
|
+
|
56
69
|
void FXRbObject::freefunc(FXObject* self){
|
57
70
|
if(self!=0){
|
58
71
|
// Unregister, but don't destroy, borrowed references
|
@@ -65,6 +78,17 @@ void FXRbObject::freefunc(FXObject* self){
|
|
65
78
|
FXASSERT(classname!=0);
|
66
79
|
FXASSERT(strlen(classname)>3);
|
67
80
|
if(classname[0]=='F' && classname[1]=='X' && classname[2]=='R' && classname[3]=='b'){
|
81
|
+
// FXWindow destructor calls recalc() and changeFocus() of it's parent window.
|
82
|
+
// Since these methods are routed back to Ruby code, but calling Ruby code from
|
83
|
+
// GC isn't a good idea, we mark the parent window as "in_gc", so that it will
|
84
|
+
// ignore recalc() and changeFocus() calls completely.
|
85
|
+
// The parent window should also be scheduled to be free'd. In the other case,
|
86
|
+
// the child window would have been marked as used.
|
87
|
+
if(self->isMemberOf(FXMETACLASS(FXWindow))){
|
88
|
+
FXWindow *window = dynamic_cast<FXWindow*>(self);
|
89
|
+
FXRbSetInGCParentsRecursive( window, true );
|
90
|
+
FXRbSetInGCChildrenRecursive( window, true );
|
91
|
+
}
|
68
92
|
delete self;
|
69
93
|
}
|
70
94
|
else{
|
data/lib/2.0/fox16_c.so
CHANGED
Binary file
|
data/lib/2.1/fox16_c.so
CHANGED
Binary file
|
data/lib/2.2/fox16_c.so
CHANGED
Binary file
|
data/lib/fox16/core.rb
CHANGED
@@ -625,14 +625,6 @@ module Fox
|
|
625
625
|
end
|
626
626
|
end
|
627
627
|
|
628
|
-
class FXHVec
|
629
|
-
def normalize!
|
630
|
-
normalized = self.normalize
|
631
|
-
0.upto(3) { |idx| self[idx] = normalized[idx] }
|
632
|
-
self
|
633
|
-
end
|
634
|
-
end
|
635
|
-
|
636
628
|
class FXTable
|
637
629
|
#
|
638
630
|
# Append _numColumns_ columns to the right of the table..
|
data/lib/fox16/thread.rb
CHANGED
@@ -13,7 +13,7 @@ module Fox
|
|
13
13
|
|
14
14
|
def runOnUiThread(&block)
|
15
15
|
@event_handler_events << block
|
16
|
-
@event_handler_pwr.write 'e'
|
16
|
+
@event_handler_pwr.write 'e'
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
@@ -34,7 +34,7 @@ module Fox
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def event_handler_pull(prd)
|
37
|
-
prd.read(1)
|
37
|
+
prd.read(1)
|
38
38
|
while !@event_handler_events.empty?
|
39
39
|
ev = @event_handler_events.shift
|
40
40
|
ev.call
|
data/lib/fox16/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/swig-interfaces/FXVec2d.i
CHANGED
data/swig-interfaces/FXVec2f.i
CHANGED
data/swig-interfaces/FXVec3d.i
CHANGED
data/swig-interfaces/FXVec3f.i
CHANGED
data/swig-interfaces/FXVec4d.i
CHANGED
data/swig-interfaces/FXVec4f.i
CHANGED
@@ -493,13 +493,27 @@ inline void* to_FXEvent(VALUE obj){
|
|
493
493
|
%typemap(out) FXVec2f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
494
494
|
%typemap(out) FXVec2f& "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
495
495
|
|
496
|
+
/* Output typemap for FXVec3f instances */
|
497
|
+
%typemap(out) FXVec3f {
|
498
|
+
FXVec3f* resultptr = new FXVec3f($1);
|
499
|
+
$result = FXRbGetRubyObj(resultptr, "FXVec3f *");
|
500
|
+
}
|
501
|
+
%typemap(out) FXVec3f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
502
|
+
%typemap(out) const FXVec3f& {
|
503
|
+
FXVec3f* resultptr = new FXVec3f(*$1);
|
504
|
+
$result = FXRbGetRubyObj(resultptr, "FXVec3f *");
|
505
|
+
}
|
506
|
+
|
496
507
|
/* Output typemap for FXVec4f instances */
|
497
508
|
%typemap(out) FXVec4f {
|
498
509
|
FXVec4f* resultptr = new FXVec4f($1);
|
499
510
|
$result = FXRbGetRubyObj(resultptr, "FXVec4f *");
|
500
511
|
}
|
501
512
|
%typemap(out) FXVec4f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
502
|
-
%typemap(out) FXVec4f&
|
513
|
+
%typemap(out) const FXVec4f& {
|
514
|
+
FXVec4f* resultptr = new FXVec4f(*$1);
|
515
|
+
$result = FXRbGetRubyObj(resultptr, "FXVec4f *");
|
516
|
+
}
|
503
517
|
|
504
518
|
/* Output typemap for FXIcon instances */
|
505
519
|
%typemap(out) FXIcon * = FXObject *;
|
@@ -610,14 +624,6 @@ inline void* to_FXEvent(VALUE obj){
|
|
610
624
|
/* Output typemap for FXTreeItem instances */
|
611
625
|
%typemap(out) FXTreeItem * = FXObject *;
|
612
626
|
|
613
|
-
/* Output typemap for FXVec3f instances */
|
614
|
-
%typemap(out) FXVec3f {
|
615
|
-
FXVec3f* resultptr = new FXVec3f($1);
|
616
|
-
$result = FXRbGetRubyObj(resultptr, "FXVec3f *");
|
617
|
-
}
|
618
|
-
%typemap(out) FXVec3f* "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
619
|
-
%typemap(out) const FXVec3f& "$result = FXRbGetRubyObj($1, \"$1_ltype\");";
|
620
|
-
|
621
627
|
/* Output typemap for FXVerticalFrame instances */
|
622
628
|
%typemap(out) FXVerticalFrame * = FXObject *;
|
623
629
|
|
data/test/TC_FXApp.rb
CHANGED
@@ -8,7 +8,7 @@ class TC_FXApp < Test::Unit::TestCase
|
|
8
8
|
|
9
9
|
def test_exception_for_second_app
|
10
10
|
assert_raise RuntimeError do
|
11
|
-
|
11
|
+
FXApp.new
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -46,7 +46,7 @@ class TC_FXApp2 < Fox::TestCase
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def test_addInput_on_pipe
|
49
|
-
check_events
|
49
|
+
check_events(*IO.pipe)
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_addInput_on_socket_accept
|
data/test/TC_FXCheckButton.rb
CHANGED
@@ -12,7 +12,6 @@ class TC_FXCheckButton < Fox::TestCase
|
|
12
12
|
|
13
13
|
def test_setCheck_TRUE
|
14
14
|
@checkButton.check = Fox::TRUE
|
15
|
-
assert_equal(true, @checkButton.check)
|
16
15
|
assert_equal(Fox::TRUE, @checkButton.checkState)
|
17
16
|
assert(@checkButton.checked?)
|
18
17
|
assert(!@checkButton.unchecked?)
|
@@ -21,7 +20,6 @@ class TC_FXCheckButton < Fox::TestCase
|
|
21
20
|
|
22
21
|
def test_setCheck_FALSE
|
23
22
|
@checkButton.check = Fox::FALSE
|
24
|
-
assert_equal(false, @checkButton.check)
|
25
23
|
assert_equal(Fox::FALSE, @checkButton.checkState)
|
26
24
|
assert(!@checkButton.checked?)
|
27
25
|
assert(@checkButton.unchecked?)
|
@@ -30,7 +28,6 @@ class TC_FXCheckButton < Fox::TestCase
|
|
30
28
|
|
31
29
|
def test_setCheck_MAYBE
|
32
30
|
@checkButton.check = Fox::MAYBE
|
33
|
-
assert_equal(true, @checkButton.check) # this is not a typo!
|
34
31
|
assert_equal(Fox::MAYBE, @checkButton.checkState)
|
35
32
|
assert(!@checkButton.checked?)
|
36
33
|
assert(!@checkButton.unchecked?)
|
@@ -39,7 +36,6 @@ class TC_FXCheckButton < Fox::TestCase
|
|
39
36
|
|
40
37
|
def test_setCheck_true
|
41
38
|
@checkButton.check = true
|
42
|
-
assert_equal(true, @checkButton.check)
|
43
39
|
assert_equal(Fox::TRUE, @checkButton.checkState)
|
44
40
|
assert(@checkButton.checked?)
|
45
41
|
assert(!@checkButton.unchecked?)
|
@@ -48,7 +44,6 @@ class TC_FXCheckButton < Fox::TestCase
|
|
48
44
|
|
49
45
|
def test_setCheck_false
|
50
46
|
@checkButton.check = false
|
51
|
-
assert_equal(false, @checkButton.check)
|
52
47
|
assert_equal(Fox::FALSE, @checkButton.checkState)
|
53
48
|
assert(!@checkButton.checked?)
|
54
49
|
assert(@checkButton.unchecked?)
|
data/test/TC_FXDCPrint.rb
CHANGED
data/test/TC_FXFileStream.rb
CHANGED
data/test/TC_FXFont.rb
CHANGED
@@ -15,7 +15,7 @@ class TC_FXFont < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
def testConstructFromFontDescription
|
17
17
|
fontdesc = @app.normalFont.fontDesc
|
18
|
-
|
18
|
+
FXFont.new(@app, fontdesc)
|
19
19
|
end
|
20
20
|
|
21
21
|
def testConstructFromParameters
|
@@ -42,7 +42,7 @@ class TC_FXFont < Test::Unit::TestCase
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def testConstructFromFontString
|
45
|
-
|
45
|
+
FXFont.new(@app, "")
|
46
46
|
end
|
47
47
|
|
48
48
|
def testGetTextWidthAndHeight
|
data/test/TC_FXId.rb
CHANGED
@@ -11,7 +11,7 @@ class TC_FXId < Fox::TestCase
|
|
11
11
|
|
12
12
|
def test_created?
|
13
13
|
assert !mainWindow.created?
|
14
|
-
|
14
|
+
mainWindow.create
|
15
15
|
assert mainWindow.created?, "main window should be created after call to FXApp#create"
|
16
16
|
mainWindow.destroy
|
17
17
|
assert !mainWindow.created?
|
data/test/TC_FXImage.rb
CHANGED
@@ -119,7 +119,7 @@ class TC_FXImage < Fox::TestCase
|
|
119
119
|
def test_create_with_non_owned_data
|
120
120
|
GC.stress = true
|
121
121
|
img = image_with_non_owned_data
|
122
|
-
" " * 10000
|
122
|
+
_ = " " * 10000
|
123
123
|
GC.stress = false
|
124
124
|
assert_equal("rgbaRGBA", img.pixel_string)
|
125
125
|
assert_equal(0, img.options)
|
@@ -134,7 +134,7 @@ class TC_FXImage < Fox::TestCase
|
|
134
134
|
img = FXImage.new(app, nil, 0, 1, 2)
|
135
135
|
GC.stress = true
|
136
136
|
set_non_owned_data(img)
|
137
|
-
" " * 10000
|
137
|
+
_ = " " * 10000
|
138
138
|
GC.stress = false
|
139
139
|
assert_equal("rgbaRGBA", img.pixel_string)
|
140
140
|
assert_equal(0, img.options)
|
data/test/TC_FXMainWindow.rb
CHANGED
data/test/TC_FXMat4f.rb
CHANGED
@@ -81,9 +81,9 @@ class TC_FXMat4f < Test::Unit::TestCase
|
|
81
81
|
def test_mul_by_scalar
|
82
82
|
p = FXMat4f.new.eye
|
83
83
|
q = FXMat4f.new(4.0, 0.0, 0.0, 0.0,
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
0.0, 4.0, 0.0, 0.0,
|
85
|
+
0.0, 0.0, 4.0, 0.0,
|
86
|
+
0.0, 0.0, 0.0, 4.0)
|
87
87
|
r = p*4.0
|
88
88
|
assert_instance_of(FXMat4f, r)
|
89
89
|
# assert_equal(q, r)
|
data/test/TC_FXMaterial.rb
CHANGED
@@ -48,7 +48,7 @@ class TC_FXMaterial < Test::Unit::TestCase
|
|
48
48
|
assert_in_delta(0.7, @mat.emission[2], DELTA)
|
49
49
|
assert_in_delta(0.8, @mat.emission[3], DELTA)
|
50
50
|
|
51
|
-
@mat.emission =
|
51
|
+
@mat.emission = FXVec4f.new(0.5, 0.6, 0.7, 0.8)
|
52
52
|
assert_in_delta(0.5, @mat.emission[0], DELTA)
|
53
53
|
assert_in_delta(0.6, @mat.emission[1], DELTA)
|
54
54
|
assert_in_delta(0.7, @mat.emission[2], DELTA)
|
data/test/TC_FXMenuCheck.rb
CHANGED
@@ -12,7 +12,6 @@ class TC_FXMenuCheck < Fox::TestCase
|
|
12
12
|
|
13
13
|
def test_setCheck_TRUE
|
14
14
|
@menuCheck.check = Fox::TRUE
|
15
|
-
assert_equal(true, @menuCheck.check)
|
16
15
|
assert_equal(Fox::TRUE, @menuCheck.checkState)
|
17
16
|
assert(@menuCheck.checked?)
|
18
17
|
assert(!@menuCheck.unchecked?)
|
@@ -21,7 +20,6 @@ class TC_FXMenuCheck < Fox::TestCase
|
|
21
20
|
|
22
21
|
def test_setCheck_FALSE
|
23
22
|
@menuCheck.check = Fox::FALSE
|
24
|
-
assert_equal(false, @menuCheck.check)
|
25
23
|
assert_equal(Fox::FALSE, @menuCheck.checkState)
|
26
24
|
assert(!@menuCheck.checked?)
|
27
25
|
assert(@menuCheck.unchecked?)
|
@@ -30,7 +28,6 @@ class TC_FXMenuCheck < Fox::TestCase
|
|
30
28
|
|
31
29
|
def test_setCheck_MAYBE
|
32
30
|
@menuCheck.check = Fox::MAYBE
|
33
|
-
assert_equal(true, @menuCheck.check) # this is not a typo!
|
34
31
|
assert_equal(Fox::MAYBE, @menuCheck.checkState)
|
35
32
|
assert(!@menuCheck.checked?)
|
36
33
|
assert(!@menuCheck.unchecked?)
|
@@ -39,7 +36,6 @@ class TC_FXMenuCheck < Fox::TestCase
|
|
39
36
|
|
40
37
|
def test_setCheck_true
|
41
38
|
@menuCheck.check = true
|
42
|
-
assert_equal(true, @menuCheck.check)
|
43
39
|
assert_equal(Fox::TRUE, @menuCheck.checkState)
|
44
40
|
assert(@menuCheck.checked?)
|
45
41
|
assert(!@menuCheck.unchecked?)
|
@@ -48,7 +44,6 @@ class TC_FXMenuCheck < Fox::TestCase
|
|
48
44
|
|
49
45
|
def test_setCheck_false
|
50
46
|
@menuCheck.check = false
|
51
|
-
assert_equal(false, @menuCheck.check)
|
52
47
|
assert_equal(Fox::FALSE, @menuCheck.checkState)
|
53
48
|
assert(!@menuCheck.checked?)
|
54
49
|
assert(@menuCheck.unchecked?)
|
data/test/TC_FXMenuRadio.rb
CHANGED
@@ -12,7 +12,6 @@ class TC_FXMenuRadio < Fox::TestCase
|
|
12
12
|
|
13
13
|
def test_setCheck_TRUE
|
14
14
|
@menuRadio.check = Fox::TRUE
|
15
|
-
assert_equal(true, @menuRadio.check)
|
16
15
|
assert_equal(Fox::TRUE, @menuRadio.checkState)
|
17
16
|
assert(@menuRadio.checked?)
|
18
17
|
assert(!@menuRadio.unchecked?)
|
@@ -21,7 +20,6 @@ class TC_FXMenuRadio < Fox::TestCase
|
|
21
20
|
|
22
21
|
def test_setCheck_FALSE
|
23
22
|
@menuRadio.check = Fox::FALSE
|
24
|
-
assert_equal(false, @menuRadio.check)
|
25
23
|
assert_equal(Fox::FALSE, @menuRadio.checkState)
|
26
24
|
assert(!@menuRadio.checked?)
|
27
25
|
assert(@menuRadio.unchecked?)
|
@@ -30,7 +28,6 @@ class TC_FXMenuRadio < Fox::TestCase
|
|
30
28
|
|
31
29
|
def test_setCheck_MAYBE
|
32
30
|
@menuRadio.check = Fox::MAYBE
|
33
|
-
assert_equal(true, @menuRadio.check) # this is not a typo!
|
34
31
|
assert_equal(Fox::MAYBE, @menuRadio.checkState)
|
35
32
|
assert(!@menuRadio.checked?)
|
36
33
|
assert(!@menuRadio.unchecked?)
|
@@ -39,7 +36,6 @@ class TC_FXMenuRadio < Fox::TestCase
|
|
39
36
|
|
40
37
|
def test_setCheck_true
|
41
38
|
@menuRadio.check = true
|
42
|
-
assert_equal(true, @menuRadio.check)
|
43
39
|
assert_equal(Fox::TRUE, @menuRadio.checkState)
|
44
40
|
assert(@menuRadio.checked?)
|
45
41
|
assert(!@menuRadio.unchecked?)
|
@@ -48,7 +44,6 @@ class TC_FXMenuRadio < Fox::TestCase
|
|
48
44
|
|
49
45
|
def test_setCheck_false
|
50
46
|
@menuRadio.check = false
|
51
|
-
assert_equal(false, @menuRadio.check)
|
52
47
|
assert_equal(Fox::FALSE, @menuRadio.checkState)
|
53
48
|
assert(!@menuRadio.checked?)
|
54
49
|
assert(@menuRadio.unchecked?)
|
data/test/TC_FXQuatf.rb
CHANGED
@@ -9,23 +9,23 @@ class TC_FXQuatf < Test::Unit::TestCase
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_default_constructor
|
12
|
-
|
12
|
+
FXQuatf.new
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_construct_from_axis_and_angle
|
16
16
|
axis = FXVec3f.new(1.0, 1.0, 1.0)
|
17
|
-
|
18
|
-
|
17
|
+
FXQuatf.new(axis)
|
18
|
+
FXQuatf.new(axis, 0.0)
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_construct_from_components
|
22
22
|
x, y, z, w = 1.0, 1.0, 1.0, 1.0
|
23
|
-
|
23
|
+
FXQuatf.new(x, y, z, w)
|
24
24
|
end
|
25
25
|
|
26
26
|
def test_construct_from_roll_pitch_yaw
|
27
27
|
roll, pitch, yaw = 45.0, 45.0, 45.0
|
28
|
-
|
28
|
+
FXQuatf.new(roll, pitch, yaw)
|
29
29
|
end
|
30
30
|
|
31
31
|
def test_adjust!
|
data/test/TC_FXRadioButton.rb
CHANGED
@@ -12,7 +12,6 @@ class TC_FXRadioButton < Fox::TestCase
|
|
12
12
|
|
13
13
|
def test_setCheck_TRUE
|
14
14
|
@radioButton.check = Fox::TRUE
|
15
|
-
assert_equal(true, @radioButton.check)
|
16
15
|
assert_equal(Fox::TRUE, @radioButton.checkState)
|
17
16
|
assert(@radioButton.checked?)
|
18
17
|
assert(!@radioButton.unchecked?)
|
@@ -21,7 +20,6 @@ class TC_FXRadioButton < Fox::TestCase
|
|
21
20
|
|
22
21
|
def test_setCheck_FALSE
|
23
22
|
@radioButton.check = Fox::FALSE
|
24
|
-
assert_equal(false, @radioButton.check)
|
25
23
|
assert_equal(Fox::FALSE, @radioButton.checkState)
|
26
24
|
assert(!@radioButton.checked?)
|
27
25
|
assert(@radioButton.unchecked?)
|
@@ -30,7 +28,6 @@ class TC_FXRadioButton < Fox::TestCase
|
|
30
28
|
|
31
29
|
def test_setCheck_MAYBE
|
32
30
|
@radioButton.check = Fox::MAYBE
|
33
|
-
assert_equal(true, @radioButton.check) # this is not a typo!
|
34
31
|
assert_equal(Fox::MAYBE, @radioButton.checkState)
|
35
32
|
assert(!@radioButton.checked?)
|
36
33
|
assert(!@radioButton.unchecked?)
|
@@ -39,7 +36,6 @@ class TC_FXRadioButton < Fox::TestCase
|
|
39
36
|
|
40
37
|
def test_setCheck_true
|
41
38
|
@radioButton.check = true
|
42
|
-
assert_equal(true, @radioButton.check)
|
43
39
|
assert_equal(Fox::TRUE, @radioButton.checkState)
|
44
40
|
assert(@radioButton.checked?)
|
45
41
|
assert(!@radioButton.unchecked?)
|
@@ -48,7 +44,6 @@ class TC_FXRadioButton < Fox::TestCase
|
|
48
44
|
|
49
45
|
def test_setCheck_false
|
50
46
|
@radioButton.check = false
|
51
|
-
assert_equal(false, @radioButton.check)
|
52
47
|
assert_equal(Fox::FALSE, @radioButton.checkState)
|
53
48
|
assert(!@radioButton.checked?)
|
54
49
|
assert(@radioButton.unchecked?)
|
data/test/TC_FXRegion.rb
CHANGED
@@ -17,9 +17,9 @@ class TC_FXRegion < Test::Unit::TestCase
|
|
17
17
|
FXPoint.new(100, 100),
|
18
18
|
FXPoint.new(0, 0)
|
19
19
|
]
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
FXRegion.new(points, true)
|
21
|
+
FXRegion.new(points, false)
|
22
|
+
FXRegion.new(points)
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_copy_constructor
|
data/test/TC_FXShell.rb
CHANGED
data/test/TC_FXTable.rb
CHANGED
data/test/TC_FXVec4f.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fxruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.33
|
5
5
|
platform: x64-mingw32
|
6
6
|
authors:
|
7
7
|
- Lyle Johnson
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-08-
|
12
|
+
date: 2015-08-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mini_portile
|