[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/button_character_instanc...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/button_character_instanc... |
Date: |
Thu, 01 Nov 2007 21:54:46 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/11/01 21:54:46
Modified files:
. : ChangeLog
server : button_character_instance.cpp character.cpp
character.h movie_root.cpp movie_root.h
sprite_instance.cpp
Log message:
* server/character.{cpp,h}: remove the do_mouse_drag
method. It's silly to call it for each sprite or button
when at the end only a single character (if any) would
do something useful with that.
* server/: button_character_instance.cpp, sprite_instance.cpp:
remove the do_mouse_drag call from the (advance) function.
* server/movie_root.{cpp,h}: Move the doMouseDrag method
here, as a private one, called from advance. Also, drag
anyway, even if not correctly, when the drag is not
lock-centered (to be fixed later).
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4756&r2=1.4757
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.105&r2=1.106
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.cpp?cvsroot=gnash&r1=1.114&r2=1.115
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_root.h?cvsroot=gnash&r1=1.84&r2=1.85
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.374&r2=1.375
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4756
retrieving revision 1.4757
diff -u -b -r1.4756 -r1.4757
--- ChangeLog 1 Nov 2007 20:21:54 -0000 1.4756
+++ ChangeLog 1 Nov 2007 21:54:44 -0000 1.4757
@@ -1,3 +1,16 @@
+2007-11-01 Sandro Santilli <address@hidden>
+
+ * server/character.{cpp,h}: remove the do_mouse_drag
+ method. It's silly to call it for each sprite or button
+ when at the end only a single character (if any) would
+ do something useful with that.
+ * server/: button_character_instance.cpp, sprite_instance.cpp:
+ remove the do_mouse_drag call from the (advance) function.
+ * server/movie_root.{cpp,h}: Move the doMouseDrag method
+ here, as a private one, called from advance. Also, drag
+ anyway, even if not correctly, when the drag is not
+ lock-centered (to be fixed later).
+
2007-11-01 Bastiaan Jacques <address@hidden>
* backend/render_handler.h: Document that draw_poly draws a
Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- server/button_character_instance.cpp 30 Oct 2007 18:55:42 -0000
1.62
+++ server/button_character_instance.cpp 1 Nov 2007 21:54:45 -0000
1.63
@@ -375,8 +375,6 @@
button_character_instance::advance(float delta_time)
{
// printf("%s:\n", __PRETTY_FUNCTION__); // FIXME:
- // Implement mouse-drag.
- character::do_mouse_drag();
matrix mat = get_world_matrix();
Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- server/character.cpp 26 Oct 2007 13:03:56 -0000 1.59
+++ server/character.cpp 1 Nov 2007 21:54:45 -0000 1.60
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: character.cpp,v 1.59 2007/10/26 13:03:56 strk Exp $ */
+/* $Id: character.cpp,v 1.60 2007/11/01 21:54:45 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -51,60 +51,6 @@
}
-// TODO: this should likely go in movie_root instead !
-void
-character::do_mouse_drag()
-{
- drag_state st;
- _vm.getRoot().get_drag_state(st);
- if ( this == st.getCharacter() )
- {
- // We're being dragged!
- int x, y, buttons;
- get_root_movie()->get_mouse_state(x, y, buttons);
-
- point world_mouse(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
- if ( st.hasBounds() )
- {
- // Clamp mouse coords within a defined rect.
- // (it is assumed that drag_state keeps
- st.getBounds().clamp(world_mouse);
- }
-
- if (st.isLockCentered())
- {
- matrix world_mat = get_world_matrix();
- point local_mouse;
- world_mat.transform_by_inverse(&local_mouse, world_mouse);
-
- matrix parent_world_mat;
- if (m_parent != NULL)
- {
- parent_world_mat = m_parent->get_world_matrix();
- }
-
- point parent_mouse;
- parent_world_mat.transform_by_inverse(&parent_mouse,
world_mouse);
-
- // Place our origin so that it coincides with the mouse
coords
- // in our parent frame.
- matrix local = get_matrix();
- local.set_translation( parent_mouse.m_x, parent_mouse.m_y );
- set_matrix(local);
- }
- else
- {
- // FIXME: Implement relative drag...
- static bool warned_relative_drag = false;
- if ( ! warned_relative_drag )
- {
- log_unimpl(_("Relative drag"));
- warned_relative_drag = true;
- }
- }
- }
-}
-
matrix
character::get_world_matrix() const
{
Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -b -r1.105 -r1.106
--- server/character.h 30 Oct 2007 17:29:23 -0000 1.105
+++ server/character.h 1 Nov 2007 21:54:45 -0000 1.106
@@ -19,7 +19,7 @@
//
//
-/* $Id: character.h,v 1.105 2007/10/30 17:29:23 strk Exp $ */
+/* $Id: character.h,v 1.106 2007/11/01 21:54:45 strk Exp $ */
#ifndef GNASH_CHARACTER_H
#define GNASH_CHARACTER_H
@@ -220,9 +220,6 @@
boost::intrusive_ptr<character> m_parent;
- /// Implement mouse-dragging for this movie.
- void do_mouse_drag();
-
/// look for '.', 'this', '..', '_parent', '_level0' and '_root'
//
/// NOTE: case insensitive up to SWF6, sensitive from SWF7 up
Index: server/movie_root.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.cpp,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -b -r1.114 -r1.115
--- server/movie_root.cpp 22 Oct 2007 21:13:16 -0000 1.114
+++ server/movie_root.cpp 1 Nov 2007 21:54:45 -0000 1.115
@@ -666,6 +666,56 @@
assert(testInvariant());
}
+void
+movie_root::doMouseDrag()
+{
+ character* dragChar = m_drag_state.getCharacter();
+ if ( ! dragChar || dragChar->isUnloaded() ) return; // nothing to do
+
+ int x, y, buttons;
+ get_mouse_state(x, y, buttons);
+
+ point world_mouse(PIXELS_TO_TWIPS(x), PIXELS_TO_TWIPS(y));
+ if ( m_drag_state.hasBounds() )
+ {
+ // Clamp mouse coords within a defined rect.
+ m_drag_state.getBounds().clamp(world_mouse);
+ }
+
+ if (! m_drag_state.isLockCentered())
+ {
+ // FIXME: Implement relative drag...
+ static bool warned_relative_drag = false;
+ if ( ! warned_relative_drag )
+ {
+ log_unimpl(_("Relative drag"));
+ warned_relative_drag = true;
+ }
+ }
+
+#if 0
+ matrix world_mat = dragChar->get_world_matrix();
+ point local_mouse;
+ world_mat.transform_by_inverse(&local_mouse, world_mouse);
+#endif
+
+ matrix parent_world_mat;
+ character* parent = dragChar->get_parent();
+ if (parent != NULL)
+ {
+ parent_world_mat = parent->get_world_matrix();
+ }
+
+ point parent_mouse;
+ parent_world_mat.transform_by_inverse(&parent_mouse, world_mouse);
+
+ // Place our origin so that it coincides with the mouse coords
+ // in our parent frame.
+ matrix local = dragChar->get_matrix();
+ local.set_translation( parent_mouse.m_x, parent_mouse.m_y );
+ dragChar->set_matrix(local);
+}
+
unsigned int
movie_root::add_interval_timer(std::auto_ptr<Timer> timer, bool internal)
{
@@ -710,6 +760,9 @@
{
// GNASH_REPORT_FUNCTION;
+ // Do mouse drag, if needed
+ doMouseDrag();
+
try
{
Index: server/movie_root.h
===================================================================
RCS file: /sources/gnash/gnash/server/movie_root.h,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- server/movie_root.h 30 Oct 2007 18:55:42 -0000 1.84
+++ server/movie_root.h 1 Nov 2007 21:54:45 -0000 1.85
@@ -15,7 +15,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-/* $Id: movie_root.h,v 1.84 2007/10/30 18:55:42 strk Exp $ */
+/* $Id: movie_root.h,v 1.85 2007/11/01 21:54:45 strk Exp $ */
/// \page events_handling Handling of user events
///
@@ -604,6 +604,9 @@
private:
+ /// Take care of dragging, if needed
+ void doMouseDrag();
+
/// Delete all elements on the action queue and empty it.
void clearActionQueue();
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.374
retrieving revision 1.375
diff -u -b -r1.374 -r1.375
--- server/sprite_instance.cpp 29 Oct 2007 21:23:16 -0000 1.374
+++ server/sprite_instance.cpp 1 Nov 2007 21:54:45 -0000 1.375
@@ -2331,9 +2331,6 @@
// Process any pending loadVariables request
processCompletedLoadVariableRequests();
- // mouse drag.
- character::do_mouse_drag();
-
#ifdef GNASH_DEBUG
size_t frame_count = m_def->get_frame_count();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/button_character_instanc...,
Sandro Santilli <=