gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/asobj/Key.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Key.cpp
Date: Wed, 07 Feb 2007 18:13:22 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/07 18:13:22

Modified files:
        .              : ChangeLog 
        server/asobj   : Key.cpp 

Log message:
                * server/asobj/Key.cpp: properly handle case of function names
                  (TODO: produce an automated testcase for this!).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2265&r2=1.2266
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.cpp?cvsroot=gnash&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2265
retrieving revision 1.2266
diff -u -b -r1.2265 -r1.2266
--- ChangeLog   7 Feb 2007 17:31:04 -0000       1.2265
+++ ChangeLog   7 Feb 2007 18:13:21 -0000       1.2266
@@ -1,7 +1,8 @@
 2007-02-07 Sandro Santilli <address@hidden>
 
        * server/asobj/Key.cpp (notify_key_event): fix update
-         of the _global.Key object (need a testcase for this!).
+         of the _global.Key object, properly handle case of function names
+         (TODO: produce an automated testcase for this!).
        * server/sprite_instance.cpp (movieclip_ctor): don't attach MovieClip
          properties, as those are only good for real sprites.
        * server/swf/tag_loaders.cpp: use log_swferror where appropriate,

Index: server/asobj/Key.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/asobj/Key.cpp        7 Feb 2007 17:31:04 -0000       1.9
+++ server/asobj/Key.cpp        7 Feb 2007 18:13:22 -0000       1.10
@@ -157,7 +157,13 @@
 
            m_keymap[byte_index] |= mask;
 
-           notify_listeners(event_id(event_id::KEY_DOWN).get_function_name());
+       std::string funcname = event_id(event_id::KEY_DOWN).get_function_name();
+       VM& vm = VM::get();
+       if ( vm.getSWFVersion() < 7 )
+       {
+               boost::to_lower(funcname, vm.getLocale());
+       }
+       notify_listeners(funcname);
 }
 
 
@@ -174,7 +180,13 @@
 
            m_keymap[byte_index] &= ~mask;
 
-           notify_listeners(event_id(event_id::KEY_UP).get_function_name());
+       std::string funcname = event_id(event_id::KEY_UP).get_function_name();
+       VM& vm = VM::get();
+       if ( vm.getSWFVersion() < 7 )
+       {
+               boost::to_lower(funcname, vm.getLocale());
+       }
+       notify_listeners(funcname);
 }
 
 // TODO: take a std::string
@@ -346,8 +358,19 @@
                mroot.notify_keypress_listeners(k);
        }
 
-       //static boost::intrusive_ptr<key_as_object*> keyobject = NULL;
-       static key_as_object* keyobject = NULL;
+       //
+       // Notify the _global.Key object about key event
+       //
+
+
+       VM& vm = VM::get();
+       if ( vm.getSWFVersion() < 6 )
+       {
+               // _global.Key was added in SWF6
+               return;
+       }
+
+       static boost::intrusive_ptr<key_as_object> keyobject = NULL;
        if ( ! keyobject )
        {
                // This isn't very performant... do we allow user override
@@ -357,14 +380,17 @@
                as_object* global = VM::get().getGlobal();
 
                std::string objName = "Key";
-               VM& vm = VM::get();
                if ( vm.getSWFVersion() < 7 )
                {
                        boost::to_lower(objName, vm.getLocale());
                }
-               global->get_member(objName, &kval);
-
-               keyobject = dynamic_cast<key_as_object*>( kval.to_object() );
+               if ( global->get_member(objName, &kval) )
+               {
+                       log_msg("Found member 'Key' in _global: %s", 
kval.to_string());
+                       as_object* obj = kval.to_object();
+                       log_msg("_global.Key to_object() : %s @ %p", 
typeid(*obj).name(), obj);
+                       keyobject = dynamic_cast<key_as_object*>( obj );
+               }
        }
 
        if ( keyobject )
@@ -421,6 +447,8 @@
     key_obj->init_member("removeListener", &key_remove_listener);
 
     global.init_member("Key", key_obj);
+    log_msg("Registered %s object %p as _global.Key member",
+                   typeid(*key_obj).name(), key_obj);
 }
 
 } // end of gnash namespace




reply via email to

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