CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/09/19 10:17:04
Modified files: . : ChangeLog server : character.cpp character.h edit_text_character.cpp sprite_instance.cpp testsuite/actionscript.all: TextField.as testsuite/misc-swfc.all: edittext_test1.sc Log message: * server/character.{cpp,h}: provide a generic _name getter-setter. * server/sprite_instance.cpp: use character's version for _name and _target getter/setter. * server/edit_text_character.cpp: use character's _name and _target getter/setter. * testsuite/actionscript.all/TextField.as: successes on _name and _target accesses, minor failures. * testsuite/misc-swfc.all/edittext_test1.sc: successes on _name and _target access. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4349&r2=1.4350 http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.54&r2=1.55 http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.94&r2=1.95 http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.cpp?cvsroot=gnash&r1=1.114&r2=1.115 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.345&r2=1.346 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/TextField.as?cvsroot=gnash&r1=1.25&r2=1.26 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-swfc.all/edittext_test1.sc?cvsroot=gnash&r1=1.1&r2=1.2 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4349 retrieving revision 1.4350 diff -u -b -r1.4349 -r1.4350 --- ChangeLog 19 Sep 2007 09:28:00 -0000 1.4349 +++ ChangeLog 19 Sep 2007 10:17:02 -0000 1.4350 @@ -1,5 +1,18 @@ 2007-09-19 Sandro Santilli <[EMAIL PROTECTED]> + * server/character.{cpp,h}: provide a generic + _name getter-setter. + * server/sprite_instance.cpp: use character's version + for _name and _target getter/setter. + * server/edit_text_character.cpp: use character's + _name and _target getter/setter. + * testsuite/actionscript.all/TextField.as: successes + on _name and _target accesses, minor failures. + * testsuite/misc-swfc.all/edittext_test1.sc: successes + on _name and _target access. + +2007-09-19 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/actionscript.all/TextField.as: add tests for effects of changing _name. Index: server/character.cpp =================================================================== RCS file: /sources/gnash/gnash/server/character.cpp,v retrieving revision 1.54 retrieving revision 1.55 diff -u -b -r1.54 -r1.55 --- server/character.cpp 16 Sep 2007 16:48:13 -0000 1.54 +++ server/character.cpp 19 Sep 2007 10:17:03 -0000 1.55 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: character.cpp,v 1.54 2007/09/16 16:48:13 cmusick Exp $ */ +/* $Id: character.cpp,v 1.55 2007/09/19 10:17:03 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -604,6 +604,32 @@ return as_value(ptr->getTargetPath()); } +as_value +character::name_getset(const fn_call& fn) +{ + boost::intrusive_ptr<character> ptr = ensureType<character>(fn.this_ptr); + + if ( fn.nargs == 0 ) // getter + { + VM& vm = VM::get(); // TODO: fetch VM from ptr + const std::string& name = ptr->get_name(); + if ( vm.getSWFVersion() < 6 && name.empty() ) + { + return as_value(); + } + else + { + return as_value(name.c_str()); + } + } + else // setter + { + ptr->set_name(fn.arg(0).to_string(&fn.env()).c_str()); + } + + return as_value(); +} + void character::set_event_handlers(const Events& copyfrom) { Index: server/character.h =================================================================== RCS file: /sources/gnash/gnash/server/character.h,v retrieving revision 1.94 retrieving revision 1.95 diff -u -b -r1.94 -r1.95 --- server/character.h 4 Sep 2007 21:50:21 -0000 1.94 +++ server/character.h 19 Sep 2007 10:17:03 -0000 1.95 @@ -19,7 +19,7 @@ // // -/* $Id: character.h,v 1.94 2007/09/04 21:50:21 strk Exp $ */ +/* $Id: character.h,v 1.95 2007/09/19 10:17:03 strk Exp $ */ #ifndef GNASH_CHARACTER_H #define GNASH_CHARACTER_H @@ -328,6 +328,9 @@ /// Getter-setter for _target static as_value target_getset(const fn_call& fn); + /// Getter-setter for _name + static as_value name_getset(const fn_call& fn); + /// @} Common ActionScript getter-setters for characters public: Index: server/edit_text_character.cpp =================================================================== RCS file: /sources/gnash/gnash/server/edit_text_character.cpp,v retrieving revision 1.114 retrieving revision 1.115 diff -u -b -r1.114 -r1.115 --- server/edit_text_character.cpp 17 Sep 2007 14:39:35 -0000 1.114 +++ server/edit_text_character.cpp 19 Sep 2007 10:17:03 -0000 1.115 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: edit_text_character.cpp,v 1.114 2007/09/17 14:39:35 strk Exp $ */ +/* $Id: edit_text_character.cpp,v 1.115 2007/09/19 10:17:03 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -337,6 +337,15 @@ getset = new builtin_function(textfield_html_getset); o.init_property("html", *getset, *getset); + // Target seems to not be a normal property + getset = new builtin_function(&character::target_getset, NULL); + o.init_property("_target", *getset, *getset); + + // _name should be a property of the instance, not the prototype + getset = new builtin_function(&character::name_getset, NULL); + o.init_property("_name", *getset, *getset); + + if ( target_version < 7 ) return; // SWF7 or higher Index: server/sprite_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.345 retrieving revision 1.346 diff -u -b -r1.345 -r1.346 --- server/sprite_instance.cpp 18 Sep 2007 14:57:23 -0000 1.345 +++ server/sprite_instance.cpp 19 Sep 2007 10:17:03 -0000 1.346 @@ -1300,43 +1300,6 @@ } static as_value -sprite_target_get(const fn_call& fn) -{ - boost::intrusive_ptr<sprite_instance> ptr = ensureType<sprite_instance>(fn.this_ptr); - - return as_value(ptr->getTargetPath().c_str()); -} - -static as_value -sprite_name_getset(const fn_call& fn) -{ - boost::intrusive_ptr<sprite_instance> ptr = ensureType<sprite_instance>(fn.this_ptr); - - if ( fn.nargs == 0 ) // getter - { - VM& vm = VM::get(); - const std::string& name = ptr->get_name(); - if ( vm.getSWFVersion() < 6 && name.empty() ) - { - return as_value(); - } - else - { - return as_value(name.c_str()); - } - } - else // setter - { - ptr->set_name(fn.arg(0).to_string(&fn.env()).c_str()); - //IF_VERBOSE_ASCODING_ERRORS( - //log_aserror(_("Attempt to set read-only property '_name'")); - //); - } - - return as_value(); -} - -static as_value sprite_droptarget_getset(const fn_call& fn) { boost::intrusive_ptr<sprite_instance> ptr = ensureType<sprite_instance>(fn.this_ptr); @@ -1552,10 +1515,10 @@ gettersetter = new builtin_function(&sprite_framesloaded_get, NULL); o.init_property("_framesloaded", *gettersetter, *gettersetter); - gettersetter = new builtin_function(&sprite_target_get, NULL); + gettersetter = new builtin_function(&character::target_getset, NULL); o.init_property("_target", *gettersetter, *gettersetter); - gettersetter = new builtin_function(&sprite_name_getset, NULL); + gettersetter = new builtin_function(&character::name_getset, NULL); o.init_property("_name", *gettersetter, *gettersetter); gettersetter = new builtin_function(&sprite_droptarget_getset, NULL); Index: testsuite/actionscript.all/TextField.as =================================================================== RCS file: /sources/gnash/gnash/testsuite/actionscript.all/TextField.as,v retrieving revision 1.25 retrieving revision 1.26 diff -u -b -r1.25 -r1.26 --- testsuite/actionscript.all/TextField.as 19 Sep 2007 09:28:01 -0000 1.25 +++ testsuite/actionscript.all/TextField.as 19 Sep 2007 10:17:03 -0000 1.26 @@ -19,7 +19,7 @@ // compile this test case with Ming makeswf, and then // execute it like this gnash -1 -r 0 -v out.swf -rcsid="$Id: TextField.as,v 1.25 2007/09/19 09:28:01 strk Exp $"; +rcsid="$Id: TextField.as,v 1.26 2007/09/19 10:17:03 strk Exp $"; #include "check.as" @@ -347,16 +347,16 @@ // Check TextField._name -xcheck_equals(typeof(tf._name), 'string'); +check_equals(typeof(tf._name), 'string'); check(!tf.hasOwnProperty('_name')); -check(!tf.__proto__.hasOwnProperty('_name')); -xcheck_equals(tf._name, 'tf'); +xcheck(!tf.__proto__.hasOwnProperty('_name')); +check_equals(tf._name, 'tf'); tfref = tf; tf._name = 'changed'; -xcheck_equals(typeof(tf), 'undefined'); +check_equals(typeof(tf), 'undefined'); check_equals(typeof(tfref), 'object'); check_equals(tfref._name, 'changed'); -xcheck_equals(tfref._target, '/changed'); +check_equals(tfref._target, '/changed'); tfref._name = 'tf'; check_equals(typeof(tf), 'object'); check_equals(typeof(tfref), 'object'); @@ -461,13 +461,13 @@ // Check TextField._target -xcheck_equals(typeof(tf._target), 'string'); +check_equals(typeof(tf._target), 'string'); check( ! tf.hasOwnProperty('_target') ); -check( ! tf.__proto__.hasOwnProperty('_target') ); -xcheck_equals(tf._target, '/tf'); +xcheck( ! tf.__proto__.hasOwnProperty('_target') ); +check_equals(tf._target, '/tf'); // TODO: check the effect of changing _name on the _target value tf._target = "fake_target"; // read-only -xcheck_equals(tf._target, '/tf'); +check_equals(tf._target, '/tf'); // Check TextField.text Index: testsuite/misc-swfc.all/edittext_test1.sc =================================================================== RCS file: /sources/gnash/gnash/testsuite/misc-swfc.all/edittext_test1.sc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- testsuite/misc-swfc.all/edittext_test1.sc 19 Sep 2007 08:02:15 -0000 1.1 +++ testsuite/misc-swfc.all/edittext_test1.sc 19 Sep 2007 10:17:03 -0000 1.2 @@ -39,8 +39,8 @@ .action: // check the initial values check_equals(typeof(edtext1), 'object'); - xcheck_equals(edtext1._name, 'edtext1'); - xcheck_equals(edtext1._target, '/edtext1'); + check_equals(edtext1._name, 'edtext1'); + check_equals(edtext1._target, '/edtext1'); check_equals(edtext1.text, 'Hello'); check_equals(edtext1.variable, 'textVar1'); check_equals(_root.textVar1, 'Hello'); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit