[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/vm/action.cpp server/aso...
From: |
Zou Lunkai |
Subject: |
[Gnash-commit] gnash ChangeLog server/vm/action.cpp server/aso... |
Date: |
Thu, 26 Apr 2007 10:56:51 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Zou Lunkai <zoulunkai> 07/04/26 10:56:50
Modified files:
. : ChangeLog
server/vm : action.cpp
server/asobj : Key.h Key.cpp
server : button_character_instance.cpp
edit_text_character.cpp character.h
character.cpp sprite_instance.h
sprite_instance.cpp
Log message:
attempt to fix the key events, actions order is not considered
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3000&r2=1.3001
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/action.cpp?cvsroot=gnash&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.h?cvsroot=gnash&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Key.cpp?cvsroot=gnash&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.44&r2=1.45
http://cvs.savannah.gnu.org/viewcvs/gnash/server/edit_text_character.cpp?cvsroot=gnash&r1=1.61&r2=1.62
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.72&r2=1.73
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.102&r2=1.103
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.257&r2=1.258
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3000
retrieving revision 1.3001
diff -u -b -r1.3000 -r1.3001
--- ChangeLog 26 Apr 2007 10:17:56 -0000 1.3000
+++ ChangeLog 26 Apr 2007 10:56:50 -0000 1.3001
@@ -1,3 +1,20 @@
+2007-04-26 Zou Lunkai <address@hidden>
+ * server/vm/action.cpp:
+ add is_key_event() method
+ * server/asobj/Key.{h, cpp}:
+ change notify_listeners() to public; set_key_down() and
set_key_up()
+ don't trigger event handler now.
+ * server/button_character_instance.cpp:
+ * server/edit_text_character.cpp:
+ replace *_keypress_listener() to *_key_listener()
+ * server/character.{h, cpp},server/movie_root.{h, cpp}
+ trigger onClipKeyUp and onClipKeyDown event handlers
+ * server/sprite_instance.{h, cpp}
+ bypass user defined key events in on_event(), let the global
key object
+ take over user defined key events.
+ * testsuite/misc-ming.all/key_event_testrunner.cpp
+ enable all checks
+
2007-04-26 Sandro Santilli <address@hidden>
* server/as_value.{cpp,h}: to_primitive() made private, and had
Index: server/vm/action.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/action.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- server/vm/action.cpp 19 Apr 2007 07:09:51 -0000 1.16
+++ server/vm/action.cpp 26 Apr 2007 10:56:50 -0000 1.17
@@ -528,7 +528,6 @@
{
switch (m_id)
{
- case event_id::KEY_PRESS :
case event_id::PRESS:
case event_id::RELEASE:
case event_id::RELEASE_OUTSIDE:
@@ -544,6 +543,20 @@
}
}
+bool
+event_id::is_key_event() const
+{
+ switch (m_id)
+ {
+ case event_id::KEY_DOWN:
+ case event_id::KEY_PRESS :
+ case event_id::KEY_UP:
+ return true;
+ default:
+ return false;
+ }
+}
+
// Standard member lookup.
// TODO: move to character.h ?
// TODO: case-insensitive search ?
Index: server/asobj/Key.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/asobj/Key.h 20 Mar 2007 15:01:20 -0000 1.13
+++ server/asobj/Key.h 26 Apr 2007 10:56:50 -0000 1.14
@@ -16,7 +16,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: Key.h,v 1.13 2007/03/20 15:01:20 strk Exp $ */
+/* $Id: Key.h,v 1.14 2007/04/26 10:56:50 zoulunkai Exp $ */
#ifndef __KEY_H__
#define __KEY_H__
@@ -28,6 +28,7 @@
#include "tu_config.h"
#include "as_object.h" // for inheritance
#include "fn_call.h"
+#include "Event_id.h"
#include "gnash.h" // for gnash::key namespace
#ifdef WIN32
@@ -99,8 +100,6 @@
std::vector<boost::intrusive_ptr<as_object> > m_listeners;
int m_last_key_pressed;
- void notify_listeners(const std::string& funcname);
-
public:
key_as_object();
@@ -111,6 +110,8 @@
void set_key_up(int code);
+ void notify_listeners(const event_id key_event_type);
+
void add_listener(boost::intrusive_ptr<as_object> listener);
void remove_listener(boost::intrusive_ptr<as_object> listener);
Index: server/asobj/Key.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Key.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- server/asobj/Key.cpp 18 Apr 2007 11:00:29 -0000 1.21
+++ server/asobj/Key.cpp 26 Apr 2007 10:56:50 -0000 1.22
@@ -132,17 +132,8 @@
assert(byte_index >= 0 && byte_index <
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
m_keymap[byte_index] |= mask;
-
- 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);
}
-
void
key_as_object::set_key_up(int code)
{
@@ -155,20 +146,19 @@
assert(byte_index >= 0 && byte_index <
int(sizeof(m_keymap)/sizeof(m_keymap[0])));
m_keymap[byte_index] &= ~mask;
+}
+
+void
+key_as_object::notify_listeners(const event_id key_event_type)
+{
- std::string funcname = event_id(event_id::KEY_UP).get_function_name();
+ std::string funcname = key_event_type.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
-void
-key_as_object::notify_listeners(const std::string& funcname)
-{
// Notify listeners.
for (std::vector<boost::intrusive_ptr<as_object> >::iterator iter =
m_listeners.begin();
iter != m_listeners.end(); ++iter) {
Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- server/button_character_instance.cpp 19 Apr 2007 17:41:35 -0000
1.44
+++ server/button_character_instance.cpp 26 Apr 2007 10:56:50 -0000
1.45
@@ -263,12 +263,12 @@
attachButtonInterface(*this);
- // check up presence KeyPress events
+ // check up presence Key events
for (unsigned int i = 0; i < m_def->m_button_actions.size(); i++)
{
if (m_def->m_button_actions[i].m_conditions & 0xFE00) //
check up on CondKeyPress: UB[7]
{
- _vm.getRoot().add_keypress_listener(this);
+ _vm.getRoot().add_key_listener(this);
break;
}
}
@@ -277,7 +277,7 @@
button_character_instance::~button_character_instance()
{
- _vm.getRoot().remove_keypress_listener(this);
+ _vm.getRoot().remove_key_listener(this);
}
@@ -317,7 +317,7 @@
-// called from keypress listener only
+// called from Key listener only
// (the above line is wrong, it's also called with onConstruct, for instance)
bool
button_character_instance::on_event(const event_id& id)
Index: server/edit_text_character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/edit_text_character.cpp,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -b -r1.61 -r1.62
--- server/edit_text_character.cpp 26 Apr 2007 07:00:29 -0000 1.61
+++ server/edit_text_character.cpp 26 Apr 2007 10:56:50 -0000 1.62
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: edit_text_character.cpp,v 1.61 2007/04/26 07:00:29 strk Exp $ */
+/* $Id: edit_text_character.cpp,v 1.62 2007/04/26 10:56:50 zoulunkai Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -498,7 +498,7 @@
{
if (m_has_focus == false)
{
- _vm.getRoot().add_keypress_listener(this);
+ _vm.getRoot().add_key_listener(this);
m_has_focus = true;
m_cursor = _text.size();
format_text();
@@ -512,7 +512,7 @@
{
movie_root& root = _vm.getRoot();
root.set_active_entity(NULL);
- root.remove_keypress_listener(this);
+ root.remove_key_listener(this);
m_has_focus = false;
format_text();
}
Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -b -r1.72 -r1.73
--- server/character.h 26 Apr 2007 07:00:29 -0000 1.72
+++ server/character.h 26 Apr 2007 10:56:50 -0000 1.73
@@ -18,7 +18,7 @@
//
//
-/* $Id: character.h,v 1.72 2007/04/26 07:00:29 strk Exp $ */
+/* $Id: character.h,v 1.73 2007/04/26 10:56:50 zoulunkai Exp $ */
#ifndef GNASH_CHARACTER_H
#define GNASH_CHARACTER_H
@@ -405,7 +405,7 @@
/// Set a built-in function handler for the given event
//
- /// Mark the character as having mouse or keypress event
+ /// Mark the character as having mouse or Key event
/// handlers if this is the case.
///
/// NOTE: this function is only for registering statically-defined
@@ -426,14 +426,14 @@
/// \brief
/// Call this when a character get equipped
- /// with a keypress event handler
+ /// with a Key event handler
//
/// TODO: provide a function to *unset*
/// the flag. This should happen
- /// when keypress event handler is
+ /// when Key event handler is
/// set to undefined or equivalent..
///
- virtual void has_keypress_event() {}
+ virtual void has_key_event() {}
/// \brief
/// Call this when a character get equipped
Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- server/character.cpp 26 Apr 2007 07:00:29 -0000 1.38
+++ server/character.cpp 26 Apr 2007 10:56:50 -0000 1.39
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: character.cpp,v 1.38 2007/04/26 07:00:29 strk Exp $ */
+/* $Id: character.cpp,v 1.39 2007/04/26 10:56:50 zoulunkai Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -619,8 +619,10 @@
// kind of event is a KEY or MOUSE one
switch (id.m_id)
{
+ case event_id::KEY_DOWN:
case event_id::KEY_PRESS:
- has_keypress_event();
+ case event_id::KEY_UP:
+ has_key_event();
break;
case event_id::MOUSE_UP:
case event_id::MOUSE_DOWN:
@@ -634,7 +636,7 @@
// todo: drop the character as a listener
// if it gets no valid handlers for
- // mouse or keypress events.
+ // mouse or Key events.
}
std::auto_ptr<ExecutableCode>
Index: server/sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.102
retrieving revision 1.103
diff -u -b -r1.102 -r1.103
--- server/sprite_instance.h 23 Apr 2007 20:05:20 -0000 1.102
+++ server/sprite_instance.h 26 Apr 2007 10:56:50 -0000 1.103
@@ -17,7 +17,7 @@
//
//
-/* $Id: sprite_instance.h,v 1.102 2007/04/23 20:05:20 strk Exp $ */
+/* $Id: sprite_instance.h,v 1.103 2007/04/26 10:56:50 zoulunkai Exp $ */
// Stateful live Sprite instance
@@ -113,8 +113,8 @@
TAG_DLIST = 1<<1
};
- virtual void has_keypress_event() {
- m_has_keypress_event = true;
+ virtual void has_key_event() {
+ m_has_key_event = true;
}
virtual void has_mouse_event();
@@ -755,7 +755,7 @@
sprite_instance& operator=(const sprite_instance&) { assert(0); return
*this; }
/// \brief
- /// Call has_keypress_event() or has_mouse_event()
+ /// 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
//
@@ -763,7 +763,7 @@
/// @param name
/// Member name.
///
- void checkForKeyPressOrMouseEvent(const std::string& name);
+ void checkForKeyOrMouseEvent(const std::string& name);
/// Duplicate the object with the specified name
/// and add it with a new name at a new depth.
@@ -852,7 +852,8 @@
/// Increment m_current_frame, and take care of looping.
void increment_frame_and_check_for_loop();
- bool m_has_keypress_event;
+ /// key events are: KEY_DOWN, KEY_PRESS, KEY_UP
+ bool m_has_key_event;
bool m_has_mouse_event;
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.257
retrieving revision 1.258
diff -u -b -r1.257 -r1.258
--- server/sprite_instance.cpp 24 Apr 2007 22:22:48 -0000 1.257
+++ server/sprite_instance.cpp 26 Apr 2007 10:56:50 -0000 1.258
@@ -1692,7 +1692,7 @@
m_has_looped(false),
m_init_actions_executed(),
m_as_environment(),
- m_has_keypress_event(false),
+ m_has_key_event(false),
m_has_mouse_event(false),
_text_variables(),
m_sound_stream_id(-1),
@@ -1718,9 +1718,9 @@
sprite_instance::~sprite_instance()
{
- if (m_has_keypress_event)
+ if (m_has_key_event)
{
- _vm.getRoot().remove_keypress_listener(this);
+ _vm.getRoot().remove_key_listener(this);
}
if (m_has_mouse_event)
@@ -2109,6 +2109,7 @@
// Fall through and call the function also, if it's defined!
// Check for member function.
+ if( ! id.is_key_event ())
{
boost::intrusive_ptr<as_function> method =
getUserDefinedEventHandler(id.get_function_name());
@@ -2148,7 +2149,7 @@
if ( val.is_function() )
{
- checkForKeyPressOrMouseEvent(name);
+ checkForKeyOrMouseEvent(name);
}
// Try textfield variables
@@ -2352,9 +2353,9 @@
#endif
on_event(event_id::LOAD); // clip onload
- if (m_has_keypress_event)
+ if (m_has_key_event)
{
- _vm.getRoot().add_keypress_listener(this);
+ _vm.getRoot().add_key_listener(this);
}
// Mouse events listening is done in has_mouse_event directly.
// This shows to work better for attachMovieTest.swf,
@@ -3565,7 +3566,7 @@
}
void
-sprite_instance::checkForKeyPressOrMouseEvent(const std::string& name)
+sprite_instance::checkForKeyOrMouseEvent(const std::string& name)
{
// short-cut
if ( name.size() < 9 ) return;
@@ -3578,9 +3579,11 @@
const char* ptr = name.c_str();
- if ( ! cmp(ptr, "onkeypress") )
+ if ( ! cmp(ptr, "onKeyDown")
+ || ! cmp(ptr, "onKeypress")
+ || ! cmp(ptr, "onKeyUp"))
{
- has_keypress_event();
+ has_key_event();
}
else if ( ! cmp(ptr, "onMouseDown")
|| ! cmp(ptr, "onMouseUp")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/vm/action.cpp server/aso...,
Zou Lunkai <=