[Swfdec-commits] 6 commits - gtk-doc.make player/swfplay.c swfdec/swfdec_font.c swfdec/swfdec_movie.c swfdec/swfdec_movie.h swfdec/swfdec_player.c swfdec/swfdec_player_internal.h test/trace vivified/code
Benjamin Otte
company at kemper.freedesktop.org
Mon Mar 31 04:53:37 PDT 2008
gtk-doc.make | 28 ++++++++++-------
player/swfplay.c | 9 ++++-
swfdec/swfdec_font.c | 2 -
swfdec/swfdec_movie.c | 14 ++++++++
swfdec/swfdec_movie.h | 4 +-
swfdec/swfdec_player.c | 32 +++++++++++++++++++
swfdec/swfdec_player_internal.h | 1
test/trace/Makefile.am | 9 +++++
test/trace/selection-focus-events-5.swf |binary
test/trace/selection-focus-events-6.swf |binary
test/trace/selection-focus-events-6.swf.trace | 10 ++++++
test/trace/selection-focus-events-7.swf |binary
test/trace/selection-focus-events-7.swf.trace | 10 ++++++
test/trace/selection-focus-events-8.swf |binary
test/trace/selection-focus-events-8.swf.trace | 10 ++++++
test/trace/selection-focus-events.as | 42 ++++++++++++++++++++++++++
vivified/code/Makefile.am | 12 -------
17 files changed, 154 insertions(+), 29 deletions(-)
New commits:
commit 6cea86f5ee6f93dfaf0679cce6144876d2df24b4
Author: Pavel Roskin <proski at gnu.org>
Date: Mon Mar 31 13:52:51 2008 +0200
Update gtk-doc.make from gtk-doc SVN repository
This fixes incorrect --destdir switch.
diff --git a/gtk-doc.make b/gtk-doc.make
index ef350de..354ffb7 100644
--- a/gtk-doc.make
+++ b/gtk-doc.make
@@ -5,11 +5,11 @@
####################################
if GTK_DOC_USE_LIBTOOL
-GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
else
-GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CFLAGS) $(CFLAGS)
-GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS)
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
endif
# We set GPATH here; this gives us semantics for GNU make
@@ -119,12 +119,16 @@ clean-local:
rm -f *~ *.bak
rm -rf .libs
+distclean-local:
+ cd $(srcdir) && \
+ rm -rf xml $(REPORT_FILES) \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
maintainer-clean-local: clean
- cd $(srcdir) && rm -rf xml html \
- $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt $(REPORT_FILES)
+ cd $(srcdir) && rm -rf xml html
install-data-local:
- installfiles=`echo $(srcdir)/html/*`; \
+ -installfiles=`echo $(srcdir)/html/*`; \
if test "$$installfiles" = '$(srcdir)/html/*'; \
then echo '-- Nothing to install' ; \
else \
@@ -135,8 +139,10 @@ install-data-local:
done; \
echo '-- Installing $(srcdir)/html/index.sgml' ; \
$(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ which gtkdoc-rebase >/dev/null && \
+ gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
fi
- -gtkdoc-rebase --relative --destdir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR)
+
uninstall-local:
rm -f $(DESTDIR)$(TARGET_DIR)/*
@@ -159,9 +165,9 @@ dist-hook: dist-check-gtkdoc dist-hook-local
-cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
-cp $(srcdir)/xml/*.xml $(distdir)/xml
cp $(srcdir)/html/* $(distdir)/html
- if test -f $(srcdir)/$(DOC_MODULE).types; then \
- cp $(srcdir)/$(DOC_MODULE).types $(distdir)/$(DOC_MODULE).types; \
- fi
+ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+ cd $(distdir) && rm -f $(DISTCLEANFILES)
-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
.PHONY : dist-hook-local docs
commit 2f69335d39e29262f8e5dc29cd1100e704475d19
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Mar 31 13:44:48 2008 +0200
fix there being one 20 too much in the font scale factor (fixes #15262)
Can't add a test unfortunately as that would require user fonts working...
diff --git a/swfdec/swfdec_font.c b/swfdec/swfdec_font.c
index 42a40c0..a1dc936 100644
--- a/swfdec/swfdec_font.c
+++ b/swfdec/swfdec_font.c
@@ -276,7 +276,7 @@ tag_func_define_font_2 (SwfdecSwfDecoder * s, guint tag)
if (!font)
return SWFDEC_STATUS_OK;
SWFDEC_LOG (" id = %u", id);
- font->scale_factor = 20 * SWFDEC_TEXT_SCALE_FACTOR * (tag == SWFDEC_TAG_DEFINEFONT3 ? 20 : 1);
+ font->scale_factor = SWFDEC_TEXT_SCALE_FACTOR * (tag == SWFDEC_TAG_DEFINEFONT3 ? 20 : 1);
layout = swfdec_bits_getbit (bits);
SWFDEC_LOG (" layout = %d", layout);
commit df46846f600192a9f17bcabbb95e072adfe3d285
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Mar 31 13:40:39 2008 +0200
add some infrastructure for handling tab presses
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index 98c3583..cbddd01 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1374,8 +1374,18 @@ swfdec_player_emit_signals (SwfdecPlayer *player)
}
static void
+swfdec_player_handle_tab (SwfdecPlayer *player, gboolean forward)
+{
+ SWFDEC_FIXME ("handle tab properly");
+}
+
+static void
swfdec_player_handle_special_keys (SwfdecPlayer *player, guint key)
{
+ if (key == SWFDEC_KEY_TAB) {
+ gboolean forward = swfdec_player_is_key_pressed (player, SWFDEC_KEY_SHIFT);
+ swfdec_player_handle_tab (player, forward);
+ }
}
static gboolean
diff --git a/swfdec/swfdec_player_internal.h b/swfdec/swfdec_player_internal.h
index fca27d8..9987708 100644
--- a/swfdec/swfdec_player_internal.h
+++ b/swfdec/swfdec_player_internal.h
@@ -187,6 +187,7 @@ SwfdecSocket * swfdec_player_create_socket (SwfdecPlayer * player,
void swfdec_player_grab_focus (SwfdecPlayer * player,
SwfdecMovie * movie);
+#define swfdec_player_is_key_pressed(player,key) ((player)->priv->key_pressed[(key) / 8] & (1 << ((key) % 8)))
#define swfdec_player_is_mouse_pressed(player) ((player)->priv->mouse_button & 1)
void swfdec_player_invalidate (SwfdecPlayer * player,
const SwfdecRect * rect);
commit b42ab3e2a1e1c58914ab0e07dba1ee1c4ec98400
Author: Benjamin Otte <otte at gnome.org>
Date: Sat Mar 29 22:30:42 2008 +0100
various focus changes
- emit onKeyPress and onKeyRelease events
- swfdec_player_set_focus (TRUE) only sets a focus when no movie has focus
diff --git a/player/swfplay.c b/player/swfplay.c
index c0288a1..63c4731 100644
--- a/player/swfplay.c
+++ b/player/swfplay.c
@@ -37,6 +37,12 @@ set_title (GtkWindow *window, const SwfdecURL *url)
g_free (title);
}
+static void
+set_playing (SwfdecGtkWidget *widget, GParamSpec *pspec, gpointer player)
+{
+ swfdec_gtk_player_set_playing (player, TRUE);
+}
+
static GtkWidget *
view_swf (SwfdecPlayer *player, gboolean use_image)
{
@@ -50,6 +56,7 @@ view_swf (SwfdecPlayer *player, gboolean use_image)
gtk_container_add (GTK_CONTAINER (window), widget);
g_signal_connect_swapped (window, "destroy", G_CALLBACK (g_main_loop_quit), loop);
gtk_widget_show_all (window);
+ g_signal_connect (widget, "notify::has-focus", G_CALLBACK (set_playing), player);
return window;
}
@@ -150,8 +157,6 @@ main (int argc, char *argv[])
window->window);
swfdec_url_free (url);
- swfdec_gtk_player_set_playing (SWFDEC_GTK_PLAYER (player), TRUE);
-
if (g_main_loop_is_running (loop))
g_main_loop_run (loop);
diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index 01c02cf..16f90a2 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -1455,6 +1455,18 @@ swfdec_movie_mouse_move (SwfdecMovie *movie, double x, double y)
}
static void
+swfdec_movie_key_press (SwfdecMovie *movie, guint keycode, guint character)
+{
+ swfdec_movie_queue_script (movie, SWFDEC_EVENT_KEY_DOWN);
+}
+
+static void
+swfdec_movie_key_release (SwfdecMovie *movie, guint keycode, guint character)
+{
+ swfdec_movie_queue_script (movie, SWFDEC_EVENT_KEY_UP);
+}
+
+static void
swfdec_movie_do_invalidate (SwfdecMovie *movie, const cairo_matrix_t *matrix, gboolean last)
{
GList *walk;
@@ -1506,6 +1518,8 @@ swfdec_movie_class_init (SwfdecMovieClass * movie_class)
movie_class->mouse_press = swfdec_movie_mouse_press;
movie_class->mouse_release = swfdec_movie_mouse_release;
movie_class->mouse_move = swfdec_movie_mouse_move;
+ movie_class->key_press = swfdec_movie_key_press;
+ movie_class->key_release = swfdec_movie_key_release;
}
void
diff --git a/swfdec/swfdec_movie.h b/swfdec/swfdec_movie.h
index f7da3f7..125f4be 100644
--- a/swfdec/swfdec_movie.h
+++ b/swfdec/swfdec_movie.h
@@ -184,10 +184,10 @@ struct _SwfdecMovieClass {
/* keyboard handling */
void (* focus_in) (SwfdecMovie * movie);
void (* focus_out) (SwfdecMovie * movie);
- void (* key_pressed) (SwfdecMovie * movie,
+ void (* key_press) (SwfdecMovie * movie,
guint keycode,
guint character);
- void (* key_released) (SwfdecMovie * movie,
+ void (* key_release) (SwfdecMovie * movie,
guint keycode,
guint character);
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index e7d7f36..98c3583 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -1082,6 +1082,7 @@ swfdec_player_grab_focus (SwfdecPlayer *player, SwfdecMovie *movie)
g_return_if_fail (SWFDEC_IS_PLAYER (player));
g_return_if_fail (movie == NULL || SWFDEC_IS_MOVIE (movie));
+ g_print ("movie %s grabs focus (%d)\n", movie ? movie->name : "---", player->priv->has_focus);
/* set variables */
priv = player->priv;
if (movie == priv->focus) {
@@ -1372,6 +1373,11 @@ swfdec_player_emit_signals (SwfdecPlayer *player)
}
}
+static void
+swfdec_player_handle_special_keys (SwfdecPlayer *player, guint key)
+{
+}
+
static gboolean
swfdec_player_do_handle_key (SwfdecPlayer *player, guint keycode, guint character, gboolean down)
{
@@ -1390,6 +1396,19 @@ swfdec_player_do_handle_key (SwfdecPlayer *player, guint keycode, guint characte
}
swfdec_player_broadcast (player, SWFDEC_AS_STR_Key,
down ? SWFDEC_AS_STR_onKeyDown : SWFDEC_AS_STR_onKeyUp, 0, NULL);
+ if (priv->focus) {
+ SwfdecMovieClass *klass = SWFDEC_MOVIE_GET_CLASS (priv->focus);
+ g_print ("got a focus movie!\n");
+ if (down) {
+ if (klass->key_press)
+ klass->key_press (priv->focus, keycode, character);
+ } else {
+ if (klass->key_release)
+ klass->key_release (priv->focus, keycode, character);
+ }
+ }
+ if (down)
+ swfdec_player_handle_special_keys (player, keycode);
swfdec_player_perform_actions (player);
swfdec_player_unlock (player);
@@ -3112,7 +3131,8 @@ swfdec_player_update_focus (gpointer playerp, gpointer unused)
SwfdecPlayerPrivate *priv = player->priv;
if (priv->has_focus) {
- swfdec_player_grab_focus (player, priv->focus_previous);
+ if (priv->focus == NULL)
+ swfdec_player_grab_focus (player, priv->focus_previous);
} else {
swfdec_player_grab_focus (player, NULL);
}
commit caaafcd0d9a7215ae5af572dbefc01c7766bb7ae
Author: Benjamin Otte <otte at gnome.org>
Date: Sat Mar 29 17:34:25 2008 +0100
add test about focus event handling
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 68a91a7..7e44ea6 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2616,6 +2616,15 @@ EXTRA_DIST = \
selection-focus-8.swf \
selection-focus-8.swf.trace \
selection-focus.as \
+ selection-focus-events-5.swf \
+ selection-focus-events-5.swf.trace \
+ selection-focus-events-6.swf \
+ selection-focus-events-6.swf.trace \
+ selection-focus-events-7.swf \
+ selection-focus-events-7.swf.trace \
+ selection-focus-events-8.swf \
+ selection-focus-events-8.swf.trace \
+ selection-focus-events.as \
selection-properties.as \
selection-properties-5.swf \
selection-properties-5.swf.trace \
diff --git a/test/trace/selection-focus-events-5.swf b/test/trace/selection-focus-events-5.swf
new file mode 100644
index 0000000..1d60208
Binary files /dev/null and b/test/trace/selection-focus-events-5.swf differ
diff --git a/test/trace/selection-focus-events-5.swf.trace b/test/trace/selection-focus-events-5.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/selection-focus-events-6.swf b/test/trace/selection-focus-events-6.swf
new file mode 100644
index 0000000..8d9c0b3
Binary files /dev/null and b/test/trace/selection-focus-events-6.swf differ
diff --git a/test/trace/selection-focus-events-6.swf.trace b/test/trace/selection-focus-events-6.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-6.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events-7.swf b/test/trace/selection-focus-events-7.swf
new file mode 100644
index 0000000..4147cfd
Binary files /dev/null and b/test/trace/selection-focus-events-7.swf differ
diff --git a/test/trace/selection-focus-events-7.swf.trace b/test/trace/selection-focus-events-7.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-7.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events-8.swf b/test/trace/selection-focus-events-8.swf
new file mode 100644
index 0000000..3e7e191
Binary files /dev/null and b/test/trace/selection-focus-events-8.swf differ
diff --git a/test/trace/selection-focus-events-8.swf.trace b/test/trace/selection-focus-events-8.swf.trace
new file mode 100644
index 0000000..f72f973
--- /dev/null
+++ b/test/trace/selection-focus-events-8.swf.trace
@@ -0,0 +1,10 @@
+(_level0.a) null ==> a
+(_level0.a) null --> _level0.a
+(_level0.a) _level0.b <== a
+(_level0.a) _level0.b <== a
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) _level0.a ===> b
+(_level0.b) _level0.a --> _level0.b
+(_level0.b) null <=== b
+(null) _level0.b --> null
diff --git a/test/trace/selection-focus-events.as b/test/trace/selection-focus-events.as
new file mode 100644
index 0000000..51b918e
--- /dev/null
+++ b/test/trace/selection-focus-events.as
@@ -0,0 +1,42 @@
+// makeswf -v 7 -s 200x150 -r 1 -o movie23.swf movie23.as
+
+rectangle = function (mc, color, x, y, w, h)
+{
+ mc.beginFill (color);
+ mc.moveTo (x, y);
+ mc.lineTo (x, y + h);
+ mc.lineTo (x + w, y + h);
+ mc.lineTo (x + w, y);
+ mc.lineTo (x, y);
+ mc.endFill ();
+};
+
+function show (string)
+{
+ trace ("(" + Selection.getFocus() + ") " + string);
+};
+
+o = { onKeyDown: function () { show ("keyDown: " + Key.getCode ()); },
+ onKeyUp: function () { show ("keyUp: " + Key.getCode ()); } };
+Key.addListener (o);
+o = { onSetFocus: function (from, to) { show (from + " --> " + to); } };
+Selection.addListener (o);
+
+
+createEmptyMovieClip ("a", 0);
+rectangle (a, 0xff, 0, 0, 50, 50);
+a.focusEnabled = true;
+a.tabEnabled = true;
+a.onKillFocus = function(next) { show (next + " <== a"); if (!_root.i) { _root.i = 1; Selection.setFocus (b); }; };
+a.onSetFocus = function(next) { show (next + " ==> a"); };
+Selection.setFocus (a);
+createEmptyMovieClip ("b", 1);
+rectangle (b, 0xff, 70, 70, 50, 50);
+b.focusEnabled = true;
+b.tabEnabled = true;
+b.onKillFocus = function(next) { show (next + " <=== b"); if (!_root.i) { _root.i = 1; Selection.setFocus (a); }; };
+b.onSetFocus = function(next) { show (next + " ===> b"); };
+Selection.setFocus (b);
+
+Selection.setFocus (null);
+getURL ("fscommand:quit", "");
commit ee33ca6fc42bec3b418327635c0e6616f925ca32
Author: Benjamin Otte <otte at gnome.org>
Date: Sat Mar 29 17:31:56 2008 +0100
remove crap from header
diff --git a/vivified/code/Makefile.am b/vivified/code/Makefile.am
index 57a7b4c..62d1ae3 100644
--- a/vivified/code/Makefile.am
+++ b/vivified/code/Makefile.am
@@ -80,15 +80,3 @@ vivi_decompile_CFLAGS = $(GLOBAL_CFLAGS) $(SWFDEC_CFLAGS)
vivi_decompile_LDFLAGS = $(SWFDEC_LIBS)
vivi_decompile_LDADD = libvivified-compiler.la
-if SECRET_TEST_CODE
-noinst_PROGRAMS += vivi-decompile-gtk
-
-vivi_decompile_gtk_SOURCES = \
- vivi_code_gtk_printer.c \
- vivi_code_gtk_printer.h \
- gtk_decompiler.c
-
-vivi_decompile_gtk_CFLAGS = $(GLOBAL_CFLAGS) $(SWFDEC_CFLAGS) $(GTK_CFLAGS)
-vivi_decompile_gtk_LDFLAGS = $(SWFDEC_LIBS) $(GTK_LIBS)
-vivi_decompile_gtk_LDADD = libvivified-compiler.la
-endif
More information about the Swfdec-commits
mailing list