[Top][All Lists]
[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