gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/as_object.cpp server/as_...
Date: Tue, 08 Apr 2008 21:59:24 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/04/08 21:59:24

Modified files:
        .              : ChangeLog 
        server         : as_object.cpp as_object.h 
                         edit_text_character.cpp sprite_instance.cpp 
        testsuite/actionscript.all: TextField.as 

Log message:
                * server/as_object.{cpp,h}: add init_readonly_property taking
                  string_table::key directly.
                * server/sprite_instance.cpp (attachMovieClipProperties): use 
named
                  strings to avoid 22 string_table lookups for each created 
sprite.
                * server/edit_text_character.cpp: parseAutoSizeValue must be
                  case-insensitive; implement TextField.length.
                * testsuite/actionscript.all/TextField.as: successes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6222&r2=1.6223
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.cpp?cvsroot=gnash&r1=1.114&r2=1.115
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_object.h?cvsroot=gnash&r1=1.103&r2=1.104
http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.cpp?cvsroot=gnash&r1=1.163&r2=1.164
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.497&r2=1.498
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/TextField.as?cvsroot=gnash&r1=1.50&r2=1.51

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6222
retrieving revision 1.6223
diff -u -b -r1.6222 -r1.6223
--- ChangeLog   8 Apr 2008 20:33:30 -0000       1.6222
+++ ChangeLog   8 Apr 2008 21:59:22 -0000       1.6223
@@ -1,5 +1,15 @@
 2008-04-08 Sandro Santilli <address@hidden>
 
+       * server/as_object.{cpp,h}: add init_readonly_property taking
+         string_table::key directly.
+       * server/sprite_instance.cpp (attachMovieClipProperties): use named
+         strings to avoid 22 string_table lookups for each created sprite.
+       * server/edit_text_character.cpp: parseAutoSizeValue must be
+         case-insensitive; implement TextField.length.
+       * testsuite/actionscript.all/TextField.as: successes
+
+2008-04-08 Sandro Santilli <address@hidden>
+
        * testsuite/misc-ming.all/DefineEditTextTest.c: more tests
          for _parent, _xscale, _yscale, _xmouse and _ymouse.
 

Index: server/as_object.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.cpp,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -b -r1.114 -r1.115
--- server/as_object.cpp        7 Apr 2008 18:25:42 -0000       1.114
+++ server/as_object.cpp        8 Apr 2008 21:59:23 -0000       1.115
@@ -818,6 +818,15 @@
 }
 
 void
+as_object::init_readonly_property(const string_table::key& k, as_function& 
getter,
+       int initflags, string_table::key nsname)
+{
+       init_property(k, getter, getter, initflags | as_prop_flags::readOnly
+               | as_prop_flags::isProtected, nsname);
+       assert(_members.getProperty(k, nsname));
+}
+
+void
 as_object::init_readonly_property(const std::string& key, as_c_function_ptr 
getter,
        int initflags, string_table::key nsname)
 {
@@ -828,6 +837,15 @@
        assert(_members.getProperty(k, nsname));
 }
 
+void
+as_object::init_readonly_property(const string_table::key& k, 
as_c_function_ptr getter,
+       int initflags, string_table::key nsname)
+{
+       init_property(k, getter, getter, initflags | as_prop_flags::readOnly
+               | as_prop_flags::isProtected, nsname);
+       assert(_members.getProperty(k, nsname));
+}
+
 std::string
 as_object::asPropName(string_table::key name)
 {

Index: server/as_object.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_object.h,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -b -r1.103 -r1.104
--- server/as_object.h  5 Apr 2008 10:19:26 -0000       1.103
+++ server/as_object.h  8 Apr 2008 21:59:23 -0000       1.104
@@ -527,6 +527,10 @@
                        int 
flags=as_prop_flags::dontDelete|as_prop_flags::dontEnum,
                        string_table::key nsname = 0);
 
+       void init_readonly_property(const string_table::key& key, as_function& 
getter,
+                       int 
flags=as_prop_flags::dontDelete|as_prop_flags::dontEnum,
+                       string_table::key nsname = 0);
+
        /// \brief
        /// Use this method for read-only properties.
        //
@@ -545,6 +549,10 @@
                        int 
flags=as_prop_flags::dontDelete|as_prop_flags::dontEnum,
                        string_table::key nsname = 0);
 
+       void init_readonly_property(const string_table::key& key, 
as_c_function_ptr getter,
+                       int 
flags=as_prop_flags::dontDelete|as_prop_flags::dontEnum,
+                       string_table::key nsname = 0);
+
        /// \brief
        /// Add a watch trigger, overriding any other defined for same name.
        //

Index: server/edit_text_character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/edit_text_character.cpp,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -b -r1.163 -r1.164
--- server/edit_text_character.cpp      8 Apr 2008 20:23:34 -0000       1.163
+++ server/edit_text_character.cpp      8 Apr 2008 21:59:23 -0000       1.164
@@ -87,6 +87,7 @@
 static as_value textfield_wordWrap_getset(const fn_call& fn);
 static as_value textfield_html_getset(const fn_call& fn);
 static as_value textfield_selectable_getset(const fn_call& fn);
+static as_value textfield_length_getset(const fn_call& fn);
 
 
 //
@@ -338,6 +339,8 @@
        o.init_property("html", *getset, *getset);
        getset = new builtin_function(textfield_selectable_getset);
        o.init_property("selectable", *getset, *getset);
+       getset = new builtin_function(textfield_length_getset);
+       o.init_property("length", *getset, *getset);
 
 
        if ( target_version  < 7 ) return;
@@ -2042,6 +2045,26 @@
 }
 
 static as_value
+textfield_length_getset(const fn_call& fn)
+{
+       boost::intrusive_ptr<edit_text_character> ptr = 
ensureType<edit_text_character>(fn.this_ptr);
+
+       if ( fn.nargs == 0 ) // getter
+       {
+               const std::string& s = ptr->get_text_value();
+               return as_value(s.length()); // TOCHECK: utf-8 ?
+       }
+       else // setter
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_aserror(_("Attempt to set length property of TextField 
%s"), ptr->getTarget());
+               );
+       }
+
+       return as_value();
+}
+
+static as_value
 textfield_autoSize_getset(const fn_call& fn)
 {
        boost::intrusive_ptr<edit_text_character> ptr = 
ensureType<edit_text_character>(fn.this_ptr);
@@ -2105,15 +2128,17 @@
 edit_text_character::AutoSizeValue
 edit_text_character::parseAutoSizeValue(const std::string& val)
 {
-       if ( val == "left" )
+       StringNoCaseEqual cmp;
+
+       if ( cmp(val, "left") )
        {
                return autoSizeLeft;
        }
-       if ( val == "right" )
+       if ( cmp(val, "right") )
        {
                return autoSizeRight;
        }
-       if ( val == "center" )
+       if ( cmp(val, "center") )
        {
                return autoSizeCenter;
        }

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.497
retrieving revision 1.498
diff -u -b -r1.497 -r1.498
--- server/sprite_instance.cpp  4 Apr 2008 10:51:54 -0000       1.497
+++ server/sprite_instance.cpp  8 Apr 2008 21:59:23 -0000       1.498
@@ -2036,70 +2036,70 @@
   as_c_function_ptr gettersetter;
 
   gettersetter = character::x_getset;
-  o.init_property("_x", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uX, gettersetter, gettersetter);
 
   gettersetter = character::y_getset;
-  o.init_property("_y", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uY, gettersetter, gettersetter);
 
   gettersetter = character::xscale_getset;
-  o.init_property("_xscale", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uXSCALE, gettersetter, gettersetter);
 
   gettersetter = character::yscale_getset;
-  o.init_property("_yscale", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uYSCALE, gettersetter, gettersetter);
 
   gettersetter = character::xmouse_get;
-  o.init_readonly_property("_xmouse", gettersetter);
+  o.init_readonly_property(NSV::PROP_uXMOUSE, gettersetter);
 
   gettersetter = character::ymouse_get;
-  o.init_readonly_property("_ymouse", gettersetter);
+  o.init_readonly_property(NSV::PROP_uYMOUSE, gettersetter);
 
   gettersetter = character::alpha_getset;
-  o.init_property("_alpha", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uALPHA, gettersetter, gettersetter);
 
   gettersetter = character::visible_getset;
-  o.init_property("_visible", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uVISIBLE, gettersetter, gettersetter);
 
   gettersetter = character::width_getset;
-  o.init_property("_width", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uWIDTH, gettersetter, gettersetter);
 
   gettersetter = character::height_getset;
-  o.init_property("_height", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uHEIGHT, gettersetter, gettersetter);
 
   gettersetter = character::rotation_getset;
-  o.init_property("_rotation", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uROTATION, gettersetter, gettersetter);
 
   gettersetter = character::parent_getset;
-  o.init_property("_parent", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uPARENT, gettersetter, gettersetter);
 
   gettersetter = sprite_currentframe_get;
-  o.init_property("_currentframe", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uCURRENTFRAME, gettersetter, gettersetter);
 
   gettersetter = sprite_totalframes_get;
-  o.init_property("_totalframes", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uTOTALFRAMES, gettersetter, gettersetter);
 
   gettersetter = sprite_framesloaded_get;
-  o.init_property("_framesloaded", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uFRAMESLOADED, gettersetter, gettersetter);
 
   gettersetter = character::target_getset;
-  o.init_property("_target", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uTARGET, gettersetter, gettersetter);
 
   gettersetter = character::name_getset;
-  o.init_property("_name", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uNAME, gettersetter, gettersetter);
 
   gettersetter = sprite_droptarget_getset;
-  o.init_property("_droptarget", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uDROPTARGET, gettersetter, gettersetter);
 
   gettersetter = sprite_url_getset;
-  o.init_property("_url", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uURL, gettersetter, gettersetter);
 
   gettersetter = sprite_highquality_getset;
-  o.init_property("_highquality", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uHIGHQUALITY, gettersetter, gettersetter);
 
   gettersetter = sprite_focusrect_getset;
-  o.init_property("_focusrect", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uFOCUSRECT, gettersetter, gettersetter);
 
   gettersetter = sprite_soundbuftime_getset;
-  o.init_property("_soundbuftime", gettersetter, gettersetter);
+  o.init_property(NSV::PROP_uSOUNDBUFTIME, gettersetter, gettersetter);
 
 }
 

Index: testsuite/actionscript.all/TextField.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/TextField.as,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- testsuite/actionscript.all/TextField.as     8 Apr 2008 20:23:35 -0000       
1.50
+++ testsuite/actionscript.all/TextField.as     8 Apr 2008 21:59:24 -0000       
1.51
@@ -20,7 +20,7 @@
 // execute it like this gnash -1 -r 0 -v out.swf
 
 
-rcsid="$Id: TextField.as,v 1.50 2008/04/08 20:23:35 strk Exp $";
+rcsid="$Id: TextField.as,v 1.51 2008/04/08 21:59:24 strk Exp $";
 #include "check.as"
 
 #if OUTPUT_VERSION > 5
@@ -58,7 +58,7 @@
 check( !TextField.prototype.hasOwnProperty('hscroll') );
 xcheck( !TextField.prototype.hasOwnProperty('html') );
 check( !TextField.prototype.hasOwnProperty('htmlText') );
-check( !TextField.prototype.hasOwnProperty('length') );
+xcheck( !TextField.prototype.hasOwnProperty('length') );
 check( !TextField.prototype.hasOwnProperty('maxChars') );
 check( !TextField.prototype.hasOwnProperty('maxhscroll') );
 check( !TextField.prototype.hasOwnProperty('maxscroll') );
@@ -133,7 +133,7 @@
 xcheck( TextField.prototype.hasOwnProperty('hscroll') );
 check( TextField.prototype.hasOwnProperty('html') );
 xcheck( TextField.prototype.hasOwnProperty('htmlText') );
-xcheck( TextField.prototype.hasOwnProperty('length') );
+check( TextField.prototype.hasOwnProperty('length') );
 xcheck( TextField.prototype.hasOwnProperty('maxChars') );
 xcheck( TextField.prototype.hasOwnProperty('maxhscroll') );
 xcheck( TextField.prototype.hasOwnProperty('maxscroll') );
@@ -149,6 +149,7 @@
 check( TextField.prototype.hasOwnProperty('type') );
 check( TextField.prototype.hasOwnProperty('variable') );
 check( TextField.prototype.hasOwnProperty('wordWrap') );
+check( TextField.prototype.hasOwnProperty('length') );
 
 check( ! TextField.prototype.hasOwnProperty('valueOf') );
 check( ! TextField.prototype.hasOwnProperty('toString') );
@@ -180,7 +181,7 @@
 tf.autoSize = o;
 check_equals(tf.autoSize, 'center'); // toString is called for object args
 tf.autoSize = 'lEft';
-xcheck_equals(tf.autoSize, 'left'); // arg is not case sensitive 
+check_equals(tf.autoSize, 'left'); // arg is not case sensitive 
 tf.autoSize = new Boolean(true);
 check_equals(tf.autoSize, 'none'); // a Boolean is the same as any other object
 
@@ -311,18 +312,20 @@
 tf.text = "Hello world";
 check_equals(tf.htmlText, 'Hello world');
 
+//-------------------------------------------------------------------------
 // Check TextField.length  (number of characters in text)
+//-------------------------------------------------------------------------
 
-xcheck_equals(typeof(tf.length), 'number');
+check_equals(typeof(tf.length), 'number');
 check(!tf.hasOwnProperty('length'));
 tf.text = "";
-xcheck_equals(tf.length, 0);
+check_equals(tf.length, 0);
 tf.length = 10; // you don't change lenght like this, you assign to text 
instead
-xcheck_equals(tf.length, 0);
+check_equals(tf.length, 0);
 tf.text = "Hello world";
-xcheck_equals(tf.length, 11);
+check_equals(tf.length, 11);
 tf.htmlText = "Hello <b>world</b>";
-xcheck_equals(tf.length, 18); // the tags are also counted
+check_equals(tf.length, 18); // the tags are also counted
 
 // Check TextField.maxChars
 
@@ -514,7 +517,7 @@
 check_equals(tf.text, 'Hello World');
 tf.text = "hello world";
 check_equals(tf.text, 'hello world');
-xcheck_equals(tf.length, 11); // number of characters in "hello world"
+check_equals(tf.length, 11); // number of characters in "hello world"
 
 
 // Check TextField.textColor
@@ -847,9 +850,9 @@
 
 
 #if OUTPUT_VERSION < 8
- check_totals(397);
-#else
  check_totals(398);
+#else
+ check_totals(399);
 #endif
 
 #else // OUTPUT_VERSION <= 5




reply via email to

[Prev in Thread] Current Thread [Next in Thread]