gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/edit_text_character.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/edit_text_character.cpp
Date: Thu, 21 Sep 2006 13:55:42 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/09/21 13:55:41

Modified files:
        .              : ChangeLog 
        server         : edit_text_character.cpp 

Log message:
        * server/edit_text_character.cpp (ctor): set textfield variable when 
available.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.895&r2=1.896
http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.cpp?cvsroot=gnash&r1=1.12&r2=1.13

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.895
retrieving revision 1.896
diff -u -b -r1.895 -r1.896
--- ChangeLog   21 Sep 2006 13:54:45 -0000      1.895
+++ ChangeLog   21 Sep 2006 13:55:41 -0000      1.896
@@ -1,5 +1,7 @@
 2006-09-21 Sandro Santilli  <address@hidden>
 
+       * server/edit_text_character.cpp (ctor): set textfield variable
+         when available.
        * server/sprite_instance.{h,cpp}: added new set_textfield_variable
          public method and a lazily-allocated map for textfield variables;
          scan textfield variable names in both set_member and get_member.

Index: server/edit_text_character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/edit_text_character.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- server/edit_text_character.cpp      21 Sep 2006 10:18:37 -0000      1.12
+++ server/edit_text_character.cpp      21 Sep 2006 13:55:41 -0000      1.13
@@ -11,8 +11,10 @@
 #include "edit_text_character.h"
 #include "Key.h"
 #include "movie_root.h"        
+#include "as_environment.h" // for parse_path
 
 #include <algorithm>
+#include <string>
 
 namespace gnash {
 
@@ -30,15 +32,6 @@
        assert(parent);
        assert(m_def);
 
-       if ( m_def->get_variable_name() != "" )
-       {
-               // we should add a character to the parent
-               // which would act as a proxy for our 'text'
-               // member ( ie: get_text_value() and set_text_value()
-               // would set our 'text' member )
-               log_warning("EditTextCharacter VariableName support broken");
-       }
-
        // WARNING! remember to set the font *before* setting text value!
        set_font( m_def->get_font() );
 
@@ -46,6 +39,56 @@
 
        m_dummy_style.push_back(fill_style());
 
+       //
+       // If this EditText definition contained a VariableName
+       // member, handle it by adding the textfield_variable
+       // to the appropriate sprite
+       //
+       const char* varname = m_def->get_variable_name().c_str();
+       if ( *varname )
+       {
+               // add a text variable to the sprite
+
+               assert(dynamic_cast<sprite_instance*>(parent));
+               sprite_instance* sprite = static_cast<sprite_instance*>(parent);
+
+               // If the variable name can contain path information,
+               // in which case
+               tu_string path, var;
+               if ( as_environment::parse_path(varname, path, var) )
+               {
+                       // contains path info
+                       character* tgt_char = 
sprite->get_environment().find_target(path);
+                       assert(dynamic_cast<sprite_instance*>(tgt_char));
+                       sprite = static_cast<sprite_instance*>(tgt_char);
+                       varname = var.c_str();
+               }
+
+               // check if the VariableName already has a value,
+               // in that case update text value
+               as_value val;
+               if ( sprite->get_member(tu_stringi(varname), &val) )
+               {
+#ifdef DEBUG_DYNTEXT_VARIABLES
+log_msg("target sprite (%p) does have a member named %s", (void*)sprite, 
varname);
+#endif
+                       set_text_value(val.to_string());
+               }
+#ifdef DEBUG_DYNTEXT_VARIABLES
+               else
+               {
+log_msg("target sprite (%p) does NOT have a member named %s", (void*)sprite, 
varname);
+               }
+#endif
+
+               // add this text variable to the target sprite
+               sprite->set_textfield_variable(varname, this);
+
+               log_warning("EditTextCharacter VariableName support TESTING");
+
+       }
+
+
        reset_bounding_box(0, 0);
 }
 




reply via email to

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