CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 08/02/13 18:44:08
Modified files: . : ChangeLog server : sprite_instance.cpp sprite_instance.h testsuite/misc-ming.all: PrototypeEventListenersTestRunner.cpp Log message: * server/sprite_instance.{cpp,h}: always register as a key and mouse listener, not relying on equipment of a known handler (as that would miss prototype assignments). * testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp: fix bogus check. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5642&r2=1.5643 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.472&r2=1.473 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.168&r2=1.169 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp?cvsroot=gnash&r1=1.2&r2=1.3 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5642 retrieving revision 1.5643 diff -u -b -r1.5642 -r1.5643 --- ChangeLog 13 Feb 2008 17:53:06 -0000 1.5642 +++ ChangeLog 13 Feb 2008 18:44:07 -0000 1.5643 @@ -1,5 +1,13 @@ 2008-02-13 Sandro Santilli <[EMAIL PROTECTED]> + * server/sprite_instance.{cpp,h}: always register as a key and mouse + listener, not relying on equipment of a known handler (as that would + miss prototype assignments). + * testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp: fix + bogus check. + +2008-02-13 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/misc-ming.all/Makefile.am: enable test PrototypeEventListenersTestRunner Index: server/sprite_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.472 retrieving revision 1.473 diff -u -b -r1.472 -r1.473 --- server/sprite_instance.cpp 12 Feb 2008 20:56:29 -0000 1.472 +++ server/sprite_instance.cpp 13 Feb 2008 18:44:08 -0000 1.473 @@ -2098,8 +2098,6 @@ is_jumping_back(false), _callingFrameActions(false), m_as_environment(), - m_has_key_event(false), - m_has_mouse_event(false), _text_variables(), m_sound_stream_id(-1), _userCxform(), @@ -2125,17 +2123,8 @@ // We might have been deleted by Quit... //assert(isDestroyed()); - if (m_has_key_event) - { _vm.getRoot().remove_key_listener(this); - } - - if (m_has_mouse_event) - { _vm.getRoot().remove_mouse_listener(this); - } - - //m_display_list.clear(); for (LoadVariablesThreads::iterator it=_loadVariableRequests.begin(); it != _loadVariableRequests.end(); ++it) @@ -2622,10 +2611,10 @@ //log_debug(_("sprite[%p]::set_member(%s, %s)"), (void*)this, VM::get().getStringTable().value(name), val.to_debug_string().c_str()); #endif - if ( val.is_function() ) - { - checkForKeyOrMouseEvent(VM::get().getStringTable().value(name)); - } + //if ( val.is_function() ) + //{ + // checkForKeyOrMouseEvent(VM::get().getStringTable().value(name)); + //} // Try textfield variables // @@ -3821,19 +3810,8 @@ void sprite_instance::registerAsListener() { - if (m_has_key_event) - { _vm.getRoot().add_key_listener(this); - } - // Mouse events listening is done in has_mouse_event directly. - // This shows to work better for attachMovieTest.swf, - // but might actually be a completely unrelated issue. - // In particular, copying event handlers in attachMovie should - // be more closely inspected (and need more ad-hoc testcases) - //if (m_has_mouse_event) - //{ - //_vm.getRoot().add_mouse_listener(this); - //} + _vm.getRoot().add_mouse_listener(this); } @@ -4122,13 +4100,6 @@ } void -sprite_instance::has_mouse_event() -{ - m_has_mouse_event = true; - _vm.getRoot().add_mouse_listener(this); -} - -void sprite_instance::loadVariables(URL url, short sendVarsMethod) { // Check host security @@ -4284,35 +4255,6 @@ } -void -sprite_instance::checkForKeyOrMouseEvent(const std::string& name) -{ - // short-cut - if ( name.size() < 9 ) return; - - // TODO: don't use strcmp/strcasecmp, we're a C++ application after all ! - - typedef int (*cmp_t) (const char*, const char*); - cmp_t cmp = strcmp; - if ( _vm.getSWFVersion() < 7 ) cmp = strcasecmp; - - const char* ptr = name.c_str(); - - // AFAIK, there is no user defined "onKeyPress" event handler! - if ( ! cmp(ptr, "onKeyDown") - || ! cmp(ptr, "onKeyUp")) - { - has_key_event(); - } - else if ( ! cmp(ptr, "onMouseDown") - || ! cmp(ptr, "onMouseUp") - || ! cmp(ptr, "onMouseMove") ) - { - has_mouse_event(); - } - -} - geometry::Range2d<float> sprite_instance::getBounds() const { Index: server/sprite_instance.h =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.h,v retrieving revision 1.168 retrieving revision 1.169 diff -u -b -r1.168 -r1.169 --- server/sprite_instance.h 12 Feb 2008 20:56:29 -0000 1.168 +++ server/sprite_instance.h 13 Feb 2008 18:44:08 -0000 1.169 @@ -103,12 +103,6 @@ TAG_DLIST = 1<<1 }; - virtual void has_key_event() { - m_has_key_event = true; - } - - virtual void has_mouse_event(); - /// \brief /// Return this sprite's root as /// specified at contruction time @@ -908,17 +902,6 @@ /// Forbid assignment sprite_instance& operator=(const sprite_instance&) { abort(); return *this; } - /// \brief - /// Call has_key_event() or has_mouse_event() - /// if the given string correspond to an event handler - /// for which registering as a listener of Mouse or Key is needed - // - /// - /// @param name - /// Member name. - /// - void checkForKeyOrMouseEvent(const std::string& name); - /// Advance to a previous frame. // /// This function will basically restore the DisplayList as it supposedly @@ -1019,11 +1002,6 @@ /// Increment m_current_frame, and take care of looping. void increment_frame_and_check_for_loop(); - /// key events are: KEY_DOWN, KEY_PRESS, KEY_UP - bool m_has_key_event; - - bool m_has_mouse_event; - typedef boost::intrusive_ptr< edit_text_character > TextFieldPtr; typedef std::vector< TextFieldPtr > TextFieldPtrVect; Index: testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp =================================================================== RCS file: /sources/gnash/gnash/testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp 13 Feb 2008 15:07:46 -0000 1.2 +++ testsuite/misc-ming.all/PrototypeEventListenersTestRunner.cpp 13 Feb 2008 18:44:08 -0000 1.3 @@ -53,7 +53,7 @@ // for variables lookup (consistency checking) string_table& st = root->getVM().getStringTable(); - check_equals(root->get_frame_count(), 1); + check_equals(root->get_frame_count(), 2); check_equals(root->get_current_frame(), 0); // first frame is just Dejagnu clip... _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit