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: Tue, 01 Apr 2008 18:36:22 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/04/01 18:36:22

Modified files:
        .              : ChangeLog 
        server         : edit_text_character.cpp edit_text_character.h 
                         sprite_instance.cpp sprite_instance.h 
        server/parser  : edit_text_character_def.cpp 
                         edit_text_character_def.h 

Log message:
                * server/sprite_instance.{cpp,h}: streamline headers inclusion.
                * server/edit_text_character.{cpp,h}: keep note about whether
                  text is defined, and don't register the text variable until
                  it is. Fixes bug #22472.
                * server/parser/edit_text_character_def.{cpp,h}: keep note about
                  whether text is defined at definition time.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6139&r2=1.6140
http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.cpp?cvsroot=gnash&r1=1.159&r2=1.160
http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.h?cvsroot=gnash&r1=1.70&r2=1.71
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.492&r2=1.493
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.174&r2=1.175
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/edit_text_character_def.cpp?cvsroot=gnash&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/edit_text_character_def.h?cvsroot=gnash&r1=1.24&r2=1.25

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6139
retrieving revision 1.6140
diff -u -b -r1.6139 -r1.6140
--- ChangeLog   1 Apr 2008 18:20:53 -0000       1.6139
+++ ChangeLog   1 Apr 2008 18:36:21 -0000       1.6140
@@ -1,5 +1,14 @@
 2008-04-01 Sandro Santilli <address@hidden>
 
+       * server/sprite_instance.{cpp,h}: streamline headers inclusion.
+       * server/edit_text_character.{cpp,h}: keep note about whether
+         text is defined, and don't register the text variable until
+         it is. Fixes bug #22472.
+       * server/parser/edit_text_character_def.{cpp,h}: keep note about
+         whether text is defined at definition time.
+
+2008-04-01 Sandro Santilli <address@hidden>
+
        * libmedia/gst/SoundHandlerGst.{cpp,h}: streamline headers
          inclusion.
 

Index: server/edit_text_character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/edit_text_character.cpp,v
retrieving revision 1.159
retrieving revision 1.160
diff -u -b -r1.159 -r1.160
--- server/edit_text_character.cpp      12 Mar 2008 16:04:05 -0000      1.159
+++ server/edit_text_character.cpp      1 Apr 2008 18:36:21 -0000       1.160
@@ -376,6 +376,7 @@
        :
        character(parent, id),
        _text(L""),
+       _textDefined(def->has_text()),
        m_def(def),
        _font(0),
        m_has_focus(false),
@@ -415,12 +416,14 @@
 
        int version = VM::get().getSWFVersion();
        
+       if ( _textDefined ) 
+       {
        setTextValue(utf8::decodeCanonicalString(m_def->get_default_text(), 
version));
+               registerTextVariable();
+       }
 
        m_dummy_style.push_back(fill_style());
 
-       registerTextVariable();
-
        reset_bounding_box(0, 0);
 
 }
@@ -722,6 +725,8 @@
 void
 edit_text_character::updateText(const std::wstring& wstr)
 {
+       _textDefined=true;
+
        unsigned int maxLen = m_def->get_max_length();
 
        std::wstring newText = wstr; // copy needed for eventual resize
@@ -1584,6 +1589,14 @@
        log_debug(_("registerTextVariable() called"));
 #endif
 
+       if ( ! _textDefined )
+       {
+#ifdef DEBUG_DYNTEXT_VARIABLES
+               log_debug(_("registerTextVariable() no-op call (has no text)"));
+#endif
+               return;
+       }
+
        if ( _text_variable_registered )
        {
 #ifdef DEBUG_DYNTEXT_VARIABLES

Index: server/edit_text_character.h
===================================================================
RCS file: /sources/gnash/gnash/server/edit_text_character.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- server/edit_text_character.h        27 Mar 2008 10:50:14 -0000      1.70
+++ server/edit_text_character.h        1 Apr 2008 18:36:21 -0000       1.71
@@ -115,6 +115,9 @@
        /// Return value of our text.
        std::string get_text_value() const;
 
+       /// Return true if this TextField has text defined
+       bool getTextDefined();
+
        /// We have a "text" member.
        void set_member(string_table::key name, const as_value& val, 
                string_table::key nsname = 0);
@@ -362,6 +365,12 @@
        /// are then the same, which makes manipulating the string much easier.
        std::wstring _text;
 
+       /// This flag will be true as soon as the TextField
+       /// is assigned a text value. Only way to be false is
+       /// when definition has the hasText flag set to false
+       /// and no actionscript added text.
+       bool _textDefined;
+
        /// immutable definition of this object, as read
        /// from the SWF stream. Assured to be not-NULL
        /// by constructor. This might change in the future

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.492
retrieving revision 1.493
diff -u -b -r1.492 -r1.493
--- server/sprite_instance.cpp  1 Apr 2008 13:32:51 -0000       1.492
+++ server/sprite_instance.cpp  1 Apr 2008 18:36:22 -0000       1.493
@@ -28,6 +28,7 @@
 #include "MovieClipLoader.h" // @@ temp hack for loading tests
 #include "as_value.h"
 #include "as_function.h"
+#include "edit_text_character.h" // for registered variables
 #include "edit_text_character_def.h" // @@ temp hack for createTextField exp.
 #include "ControlTag.h"
 #include "fn_call.h"
@@ -2375,6 +2376,7 @@
     {
       TextFieldPtr tf = *i;
           val->set_string(tf->get_text_value());
+       // break ?
     }
     return true;
   }

Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.174
retrieving revision 1.175
diff -u -b -r1.174 -r1.175
--- server/sprite_instance.h    27 Mar 2008 10:50:15 -0000      1.174
+++ server/sprite_instance.h    1 Apr 2008 18:36:22 -0000       1.175
@@ -25,7 +25,7 @@
 #include "gnashconfig.h" // GNASH_USE_GC
 #endif
 
-#include "edit_text_character.h" // temp hack
+//#include "edit_text_character.h" // temp hack
 #include "movie_definition.h" // for inlines
 #include "dlist.h" // DisplayList 
 #include "log.h"
@@ -47,6 +47,7 @@
        class drag_state;
        class LoadVariablesThread;
        class gradient_record;
+       class edit_text_character;
 }
 
 namespace gnash
@@ -901,15 +902,10 @@
 
 
        /// Forbid copy
-       sprite_instance(const sprite_instance&)
-               :
-               character(NULL, 0)
-       {
-               abort();
-       }
+       sprite_instance(const sprite_instance&);
 
        /// Forbid assignment
-       sprite_instance& operator=(const sprite_instance&) { abort(); return 
*this; }
+       sprite_instance& operator=(const sprite_instance&);
 
        /// Advance to a previous frame.
        //

Index: server/parser/edit_text_character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/edit_text_character_def.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- server/parser/edit_text_character_def.cpp   5 Mar 2008 03:56:02 -0000       
1.18
+++ server/parser/edit_text_character_def.cpp   1 Apr 2008 18:36:22 -0000       
1.19
@@ -44,7 +44,7 @@
 
        in->align();
        in->ensureBytes(1);
-       bool    has_text = in->read_bit();
+       m_has_text = in->read_bit();
        m_word_wrap = in->read_bit();
        m_multiline = in->read_bit();
        m_password = in->read_bit();
@@ -93,7 +93,7 @@
 
        in->read_string(m_variable_name);
 
-       if (has_text)
+       if (m_has_text)
        {
                in->read_string(m_default_text);
        }

Index: server/parser/edit_text_character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/edit_text_character_def.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- server/parser/edit_text_character_def.h     27 Mar 2008 10:50:16 -0000      
1.24
+++ server/parser/edit_text_character_def.h     1 Apr 2008 18:36:22 -0000       
1.25
@@ -51,6 +51,11 @@
                :
                m_root_def(root_def),
                m_format(),
+
+               m_has_text(true), // For an SWF-defined textfield we'll read
+                                 // this from the tag. Dynamic textfields 
should
+                                 // behave as always having text by default 
(not tested).
+
                m_word_wrap(false),
                m_multiline(false),
                m_password(false),
@@ -213,6 +218,11 @@
                return m_word_wrap;
        }
 
+       /// Has text defined ?
+       bool has_text() const {
+               return m_has_text;
+       }
+
        /// Get root movie definition
        movie_definition* get_root_def() {
                return m_root_def;
@@ -268,6 +278,7 @@
        rect                    m_rect;
        std::string             m_variable_name;
        text_format             m_format;
+       bool                    m_has_text;
        bool                    m_word_wrap;
        bool                    m_multiline;
        /// show asterisks instead of actual characters




reply via email to

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