gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r10846: Commited patches from Tomeu


From: Markus Gothe
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10846: Commited patches from Tomeu and Andrea
Date: Sun, 26 Apr 2009 19:26:09 +0200
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 10846
committer: Markus Gothe <address@hidden>
branch nick: trunk
timestamp: Sun 2009-04-26 19:26:09 +0200
message:
  Commited patches from Tomeu and Andrea
modified:
  gui/Player.cpp
  gui/gui.h
  gui/pythonmod/gnash-view.cpp
  gui/pythonmod/test.py
=== modified file 'gui/Player.cpp'
--- a/gui/Player.cpp    2009-03-28 09:31:01 +0000
+++ b/gui/Player.cpp    2009-04-26 17:26:09 +0000
@@ -724,6 +724,10 @@
     return createFBGui(_windowID, _scale, _doLoop, _bitDepth);
 #endif
 
+#ifdef GUI_AOS4
+    return createAOS4Gui(_windowID, _scale, _doLoop, _bitDepth);
+#endif
+
 #ifdef GUI_DUMP
     return createDumpGui(_windowID, _scale, _doLoop, _bitDepth);
 #endif

=== modified file 'gui/gui.h'
--- a/gui/gui.h 2009-03-28 09:31:01 +0000
+++ b/gui/gui.h 2009-04-26 17:26:09 +0000
@@ -542,6 +542,7 @@
 std::auto_ptr<Gui> createFBGui(unsigned long xid, float scale, bool loop, 
unsigned int depth);
 std::auto_ptr<Gui> createAQUAGui(unsigned long xid, float scale, bool loop, 
unsigned int depth);
 std::auto_ptr<Gui> createRISCOSGui(unsigned long xid, float scale, bool loop, 
unsigned int depth);
+std::auto_ptr<Gui> createAOS4Gui(unsigned long xid, float scale, bool loop, 
unsigned int depth);
 std::auto_ptr<Gui> createDumpGui(unsigned long xid, float scale, bool loop, 
unsigned int depth);
 
  

=== modified file 'gui/pythonmod/gnash-view.cpp'
--- a/gui/pythonmod/gnash-view.cpp      2009-04-26 12:41:35 +0000
+++ b/gui/pythonmod/gnash-view.cpp      2009-04-26 17:26:09 +0000
@@ -36,6 +36,7 @@
 #include "VirtualClock.h"
 #include "SystemClock.h"
 #include "smart_ptr.h"
+#include "DisplayObject.h"
 
 #ifdef USE_FFMPEG
 # include "MediaHandlerFfmpeg.h"
@@ -82,7 +83,12 @@
 static void gnash_view_set_property (GObject *object, guint prop_id, const 
GValue *value, GParamSpec *pspec);
 static void gnash_view_get_property (GObject *object, guint prop_id, GValue 
*value, GParamSpec *pspec);
 static void gnash_view_realize_cb(GtkWidget *widget, gpointer user_data);
-static gboolean gnash_view_key_press_event(GtkWidget *widget, GdkEventKey 
*event);
+
+static gboolean key_press_event_cb(GtkWidget *widget, GdkEventKey *event, 
gpointer data);
+static gboolean key_release_event_cb(GtkWidget *widget, GdkEventKey *event, 
gpointer data);
+static gboolean button_press_event_cb(GtkWidget *widget, GdkEventButton 
*event, gpointer data);
+static gboolean button_release_event_cb(GtkWidget *widget, GdkEventButton 
*event, gpointer data);
+static gboolean motion_notify_event_cb(GtkWidget *widget, GdkEventMotion 
*event, gpointer data);
 
 static gnash::key::code gdk_to_gnash_key(guint key);
 static int gdk_to_gnash_modifier(int state);
@@ -108,7 +114,6 @@
 
     widget_class->size_allocate = gnash_view_size_allocate;
     widget_class->size_request = gnash_view_size_request;
-    widget_class->key_press_event = gnash_view_key_press_event;
 
        g_object_class->get_property = gnash_view_get_property;
        g_object_class->set_property = gnash_view_set_property;
@@ -174,7 +179,7 @@
                          G_CALLBACK (gnash_view_realize_cb), NULL);
 
     // Initializations that can happen before realization come here. The rest
-    // come after realize.
+    // come after realize, in gnash_view_realize_cb.
     gnash::gnashInit();
     gnash::LogFile& dbglogfile = gnash::LogFile::getDefaultInstance();
     dbglogfile.setVerbosity(3);
@@ -208,6 +213,23 @@
     gnash_canvas_setup(view->canvas, 0, NULL);
     gtk_container_add (GTK_CONTAINER (view), GTK_WIDGET(view->canvas));
     gtk_widget_show (GTK_WIDGET(view->canvas));
+
+    gtk_widget_add_events(GTK_WIDGET(view->canvas), GDK_BUTTON_PRESS_MASK
+                        | GDK_BUTTON_RELEASE_MASK
+                        | GDK_KEY_RELEASE_MASK
+                        | GDK_KEY_PRESS_MASK        
+                        | GDK_POINTER_MOTION_MASK);
+
+    g_signal_connect_object(GTK_WIDGET(view->canvas), "key-press-event",
+                   G_CALLBACK(key_press_event_cb), view, (GConnectFlags)0);
+    g_signal_connect_object(GTK_WIDGET(view->canvas), "key-release-event",
+                   G_CALLBACK(key_release_event_cb), view, (GConnectFlags)0);
+    g_signal_connect_object(GTK_WIDGET(view->canvas), "button-press-event",
+                   G_CALLBACK(button_press_event_cb), view, (GConnectFlags)0);
+    g_signal_connect_object(GTK_WIDGET(view->canvas), "button-release-event",
+                   G_CALLBACK(button_release_event_cb), view, 
(GConnectFlags)0);
+    g_signal_connect_object(GTK_WIDGET(view->canvas), "motion-notify-event",
+                   G_CALLBACK(motion_notify_event_cb), view, (GConnectFlags)0);
 }
 
 static void
@@ -245,6 +267,8 @@
 {
     GNASH_REPORT_FUNCTION;
     GnashView *view = GNASH_VIEW(widget);
+
+    // Some initializations need to happen after the widget has been realized.
     if(view->movie_definition.get() == NULL) {
         gtk_widget_realize(GTK_WIDGET(view->canvas));
         gnash_view_load_movie(view, view->uri);
@@ -252,21 +276,126 @@
 }
 
 static gboolean
-gnash_view_key_press_event(GtkWidget *widget, GdkEventKey *event)
-{
-    if (GNASH_VIEW(widget)->stage.get() == NULL)
-        return FALSE;
-
-    gnash::key::code c = gdk_to_gnash_key(event->keyval);
-    //int mod = gdk_to_gnash_modifier(event->state);
-    
-    if (c != gnash::key::INVALID) {
-        if( GNASH_VIEW(widget)->stage->notify_key_event(c, true) )
-            gnash_view_display(GNASH_VIEW(widget));
-        return TRUE;
-    }
-    
-    return FALSE;
+key_press_event_cb(GtkWidget */*widget*/, GdkEventKey *event, gpointer data)
+{
+    GNASH_REPORT_FUNCTION;
+    GnashView *view = GNASH_VIEW(data);
+    if (view->stage.get() == NULL)
+        return FALSE;
+
+    gnash::key::code c = gdk_to_gnash_key(event->keyval);
+    
+    if (c != gnash::key::INVALID) {
+        if( view->stage->notify_key_event(c, true) )
+            gnash_view_display(view);
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+key_release_event_cb(GtkWidget */*widget*/, GdkEventKey *event, gpointer data)
+{
+    GNASH_REPORT_FUNCTION;
+    GnashView *view = GNASH_VIEW(data);
+    if (view->stage.get() == NULL)
+        return FALSE;
+
+    gnash::key::code c = gdk_to_gnash_key(event->keyval);
+    
+    if (c != gnash::key::INVALID) {
+        if( view->stage->notify_key_event(c, false) )
+            gnash_view_display(view);
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+button_press_event_cb(GtkWidget */*widget*/, GdkEventButton *event, gpointer 
data)
+{
+    GNASH_REPORT_FUNCTION;
+    GnashView *view = GNASH_VIEW(data);
+    if (view->stage.get() == NULL)
+        return FALSE;
+
+    /// Double- and triple-clicks should not send an extra event!
+    /// Flash has no built-in double click.
+    if (event->type != GDK_BUTTON_PRESS) return FALSE;
+
+    gtk_widget_grab_focus(GTK_WIDGET(view->canvas));
+
+    int        mask = 1 << (event->button - 1);
+    view->stage->notify_mouse_clicked(true, mask);
+
+    return TRUE;
+}
+
+static gboolean
+button_release_event_cb(GtkWidget */*widget*/, GdkEventButton *event, gpointer 
data)
+{
+    GNASH_REPORT_FUNCTION;
+    GnashView *view = GNASH_VIEW(data);
+    if (view->stage.get() == NULL)
+        return FALSE;
+
+    int        mask = 1 << (event->button - 1);
+    view->stage->notify_mouse_clicked(false, mask);
+
+    return TRUE;
+}
+
+static gboolean
+motion_notify_event_cb(GtkWidget */*widget*/, GdkEventMotion *event, gpointer 
data)
+{
+    //GNASH_REPORT_FUNCTION;
+
+    GtkWidget *widget = GTK_WIDGET(data);
+    GnashView *view = GNASH_VIEW(data);
+    float xscale = widget->allocation.width / 
view->movie_definition->get_width_pixels();
+    float yscale = widget->allocation.height / 
view->movie_definition->get_height_pixels();
+
+       // A stage pseudopixel is user pixel / _xscale wide
+       boost::int32_t x = event->x / xscale;
+
+       // A stage pseudopixel is user pixel / _yscale high
+       boost::int32_t y = event->y / yscale;
+
+       if ( view->stage->notify_mouse_moved(x, y) )
+       {
+               // any action triggered by the
+               // event required screen refresh
+        gnash_view_display(view);
+       }
+
+       gnash::DisplayObject* activeEntity = 
view->stage->getActiveEntityUnderPointer();
+       if ( activeEntity )
+       {
+               if ( activeEntity->isSelectableTextField() )
+               {
+                   GdkCursor *gdkcursor = gdk_cursor_new(GDK_XTERM);
+                   gdk_window_set_cursor (widget->window, NULL);
+            gdk_cursor_unref(gdkcursor);
+               }
+               else if ( activeEntity->allowHandCursor() )
+               {
+                   GdkCursor *gdkcursor = gdk_cursor_new(GDK_HAND2);
+                   gdk_window_set_cursor (widget->window, NULL);
+            gdk_cursor_unref(gdkcursor);
+               }
+               else
+               {
+                   gdk_window_set_cursor (widget->window, NULL);
+               }
+       }
+       else
+       {
+           gdk_window_set_cursor (widget->window, NULL);
+       }
+
+    return TRUE;
 }
 
 static void

=== modified file 'gui/pythonmod/test.py'
--- a/gui/pythonmod/test.py     2009-04-26 12:41:35 +0000
+++ b/gui/pythonmod/test.py     2009-04-26 17:26:09 +0000
@@ -1,12 +1,15 @@
+import sys
+
 import gtk
 import gnash
 
 gtk.gdk.threads_init
 
 w = gtk.Window()
+w.connect('delete-event', lambda w, e: gtk.main_quit())
 
 v = gnash.View()
-v.props.uri = '/home/tomeu/Desktop/EatBoom.swf'
+v.props.uri = sys.argv[1]
 w.add(v)
 v.show()
 


reply via email to

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