Benjamin Otte
2007-Nov-29 10:19 UTC
[Swfdec] 2 commits - README src/plugin_x11.c src/swfmoz_player.c src/swfmoz_player.h
README | 9 +---- src/plugin_x11.c | 10 ++++-- src/swfmoz_player.c | 79 ++++++++++++++++++++++++++++++---------------------- src/swfmoz_player.h | 12 ++++--- 4 files changed, 62 insertions(+), 48 deletions(-) New commits: commit 0f483c3be7209908e4a58c45371b72bb55d61b4a Author: Benjamin Otte <otte at gnome.org> Date: Thu Nov 29 11:18:55 2007 +0100 recode mouse input handling This updates the API to the recent changes in Swfdec. diff --git a/src/plugin_x11.c b/src/plugin_x11.c index 4ea42ac..a118c24 100644 --- a/src/plugin_x11.c +++ b/src/plugin_x11.c @@ -53,11 +53,15 @@ plugin_x11_handle_event (GdkXEvent *gdkxevent, GdkEvent *unused, gpointer player break; } case ButtonPress: + { + XButtonEvent *button = (XButtonEvent *) event; + swfmoz_player_mouse_press (player, button->x, button->y, button->button); + break; + } case ButtonRelease: { XButtonEvent *button = (XButtonEvent *) event; - swfmoz_player_mouse_changed (player, button->button, button->x, - button->y, event->type == ButtonPress); + swfmoz_player_mouse_release (player, button->x, button->y, button->button); break; } case EnterNotify: @@ -69,7 +73,7 @@ plugin_x11_handle_event (GdkXEvent *gdkxevent, GdkEvent *unused, gpointer player int winx, winy; gdk_window_get_pointer (player->target, &winx, &winy, NULL); - swfmoz_player_mouse_moved (player, winx, winy); + swfmoz_player_mouse_move (player, winx, winy); break; } case KeyPress: diff --git a/src/swfmoz_player.c b/src/swfmoz_player.c index 5609ea9..8744de1 100644 --- a/src/swfmoz_player.c +++ b/src/swfmoz_player.c @@ -626,50 +626,63 @@ swfmoz_player_render (SwfmozPlayer *player, GdkRegion *region) } gboolean -swfmoz_player_mouse_changed (SwfmozPlayer *player, int button, int x, int y, gboolean down) +swfmoz_player_mouse_press (SwfmozPlayer *player, int x, int y, guint button) { + gboolean ret = FALSE; + g_return_val_if_fail (SWFMOZ_IS_PLAYER (player), FALSE); - switch (button) { - case 1: - if (player->menu != NULL) { - g_signal_handlers_disconnect_matched (player->player, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, - swfmoz_player_menu_notify_playing, NULL); - g_signal_handlers_disconnect_matched (player->player, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, - swfmoz_player_menu_notify_audio, NULL); - gtk_widget_destroy (GTK_WIDGET (player->menu)); - player->menu = NULL; - return TRUE; - } - if (!swfdec_gtk_player_get_playing (SWFDEC_GTK_PLAYER (player->player))) { - if (!down) - return FALSE; - swfdec_gtk_player_set_playing (SWFDEC_GTK_PLAYER (player->player), TRUE); - } else { - player->mouse_down = down; - plugin_push_allow_popups (player->instance, TRUE); - swfdec_player_handle_mouse (player->player, x, y, down ? 1 : 0); - plugin_pop_allow_popups (player->instance); - } - return TRUE; - case 3: - if (!down) { - swfmoz_player_popup_menu (player); - return TRUE; - } - default: - break; + if (button > 32) + return FALSE; + + if (player->menu && GTK_WIDGET_VISIBLE (player->menu)) + gtk_menu_popdown (GTK_MENU (player->menu)); + + if (swfdec_gtk_player_get_playing (SWFDEC_GTK_PLAYER (player->player))) { + plugin_push_allow_popups (player->instance, TRUE); + ret = swfdec_player_mouse_press (player->player, x, y, button); + plugin_pop_allow_popups (player->instance); } - return FALSE; + return ret; +} + +gboolean +swfmoz_player_mouse_release (SwfmozPlayer *player, int x, int y, guint button) +{ + gboolean ret; + + g_return_val_if_fail (SWFMOZ_IS_PLAYER (player), FALSE); + + if (button > 32) + return FALSE; + + if (swfdec_gtk_player_get_playing (SWFDEC_GTK_PLAYER (player->player))) { + plugin_push_allow_popups (player->instance, TRUE); + ret = swfdec_player_mouse_release (player->player, x, y, button); + plugin_pop_allow_popups (player->instance); + } else { + if (button == 1) { + swfdec_gtk_player_set_playing (SWFDEC_GTK_PLAYER (player->player), TRUE); + ret = TRUE; + } else { + ret = FALSE; + } + } + + if (button == 3) { + swfmoz_player_popup_menu (player); + ret = TRUE; + } + return ret; } gboolean -swfmoz_player_mouse_moved (SwfmozPlayer *player, int x, int y) +swfmoz_player_mouse_move (SwfmozPlayer *player, int x, int y) { g_return_val_if_fail (SWFMOZ_IS_PLAYER (player), FALSE); if (swfdec_gtk_player_get_playing (SWFDEC_GTK_PLAYER (player->player))) { - swfdec_player_handle_mouse (player->player, x, y, player->mouse_down ? 1 : 0); + swfdec_player_mouse_move (player->player, x, y); } return FALSE; } diff --git a/src/swfmoz_player.h b/src/swfmoz_player.h index 1ae1fc9..2da826e 100644 --- a/src/swfmoz_player.h +++ b/src/swfmoz_player.h @@ -59,7 +59,6 @@ struct _SwfmozPlayer { gboolean windowless; /* TRUE if player communicates with the windowing system via the browser */ GdkWindow * target; /* what we draw to */ GdkRectangle target_rect; /* area in target that this plugin occupies */ - gboolean mouse_down; /* saved state for the mouse */ /* for windowed operation */ GSource * repaint_source; /* set when repaint is necessary */ @@ -90,12 +89,15 @@ void swfmoz_player_set_target (SwfmozPlayer * player, int height); void swfmoz_player_render (SwfmozPlayer * player, GdkRegion * region); -gboolean swfmoz_player_mouse_changed (SwfmozPlayer * player, - int button, +gboolean swfmoz_player_mouse_press (SwfmozPlayer * player, int x, int y, - gboolean down); -gboolean swfmoz_player_mouse_moved (SwfmozPlayer * player, + guint button); +gboolean swfmoz_player_mouse_release (SwfmozPlayer * player, + int x, + int y, + guint button); +gboolean swfmoz_player_mouse_move (SwfmozPlayer * player, int x, int y); commit 330518557277e87bfcf42dedc0b2d2656f086724 Author: Benjamin Otte <otte at gnome.org> Date: Thu Nov 29 10:03:03 2007 +0100 remove outdated cruft from README diff --git a/README b/README index eb2bbca..a94838c 100644 --- a/README +++ b/README @@ -19,14 +19,9 @@ Notes: browsers by adding /usr/local/lib/mozilla/plugins to the MOZ_PLUGIN_PATH environment variable. - - Sound output is provided by libswfdec-gtk. It is currently only - available for ALSA. If you want a different output, feel - encouraged to provide patches. - Dependencies: - swfdec (= 0.4.4) - swfdec-gtk (= 0.4.4) - Mozilla (>= 1.0.0) + swfdec (= 0.5.4) + swfdec-gtk (= 0.5.4)