#473: setObjectValue does not set floats, integers in NSTextFields properly. -----------------------------------+---------------------------------------- Reporter: johnmacshea@… | Owner: lsansonetti@… Type: defect | Status: new Priority: major | Milestone: Component: MacRuby | Keywords: NSTextField, setObjectValue -----------------------------------+---------------------------------------- Description changed by lsansonetti@…: Old description:
When using setObjectValue (NSControl) with MacRuby floats and integer, though they are a subclass of NSNumber,they are not properly set (copied?).
For example in macirb: irb(main):001:0> framework "Cocoa" => true irb(main):002:0> tf = NSTextField.alloc.init => #<NSTextField:0x20024b5a0> irb(main):003:0> num = NSNumber.numberWithFloat(23.3) => 23.2999992370605 irb(main):004:0> tf.setObjectValue(num) => #<NSTextField:0x20024b5a0> irb(main):005:0> p tf.stringValue "0" => "0" irb(main):006:0> p num.superclass.superclass NSNumber => NSNumber irb(main):007:0> tf.setFloatValue(23.3) => #<NSTextField:0x20024b5a0> irb(main):008:0> p tf.stringValue "23.29999923706055" => "23.29999923706055"
or, more simply:
irb(main):013:0> tf.setObjectValue(23.3) => #<NSTextField:0x20024b5a0> irb(main):014:0> p tf.stringValue "0" => "0"
To contrast with proper behavior, with the following obj C code:
NSTextField *tf = [[NSTextField alloc] init]; NSNumber *num = [NSNumber numberWithFloat:23.3]; [tf setObjectValue:num]; NSLog(@"string value of tf %@", [tf stringValue]);
results in the following:
2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3
New description: When using setObjectValue (NSControl) with MacRuby floats and integer, though they are a subclass of NSNumber,they are not properly set (copied?). For example in macirb: {{{ irb(main):001:0> framework "Cocoa" => true irb(main):002:0> tf = NSTextField.alloc.init => #<NSTextField:0x20024b5a0> irb(main):003:0> num = NSNumber.numberWithFloat(23.3) => 23.2999992370605 irb(main):004:0> tf.setObjectValue(num) => #<NSTextField:0x20024b5a0> irb(main):005:0> p tf.stringValue "0" => "0" irb(main):006:0> p num.superclass.superclass NSNumber => NSNumber irb(main):007:0> tf.setFloatValue(23.3) => #<NSTextField:0x20024b5a0> irb(main):008:0> p tf.stringValue "23.29999923706055" => "23.29999923706055" or, more simply: irb(main):013:0> tf.setObjectValue(23.3) => #<NSTextField:0x20024b5a0> irb(main):014:0> p tf.stringValue "0" => "0" }}} To contrast with proper behavior, with the following obj C code: {{{ NSTextField *tf = [[NSTextField alloc] init]; NSNumber *num = [NSNumber numberWithFloat:23.3]; [tf setObjectValue:num]; NSLog(@"string value of tf %@", [tf stringValue]); }}} results in the following: 2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3 -- -- Ticket URL: <http://www.macruby.org/trac/ticket/473#comment:1> MacRuby <http://macruby.org/>