diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.in | 5 | ||||
-rw-r--r-- | src/indicator-sound.c | 41 | ||||
-rw-r--r-- | src/metadata-menu-item.c | 1 | ||||
-rw-r--r-- | src/mpris2-controller.c | 1 | ||||
-rw-r--r-- | src/music-player-bridge.c | 1 | ||||
-rw-r--r-- | src/music-player-bridge.h | 1 | ||||
-rw-r--r-- | src/player-controller.c | 1 | ||||
-rw-r--r-- | src/player-item.c | 1 | ||||
-rw-r--r-- | src/playlists-menu-item.c | 1 | ||||
-rw-r--r-- | src/title-menu-item.c | 1 | ||||
-rw-r--r-- | src/transport-menu-item.c | 1 | ||||
-rw-r--r-- | src/transport-widget.c | 99 |
12 files changed, 72 insertions, 82 deletions
diff --git a/src/Makefile.in b/src/Makefile.in index b470fcf..e23b0b1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -39,7 +39,10 @@ libexec_PROGRAMS = indicator-sound-service$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs diff --git a/src/indicator-sound.c b/src/indicator-sound.c index 42560c8..f259dfd 100644 --- a/src/indicator-sound.c +++ b/src/indicator-sound.c @@ -77,19 +77,22 @@ static gboolean key_release_cb(GtkWidget* widget, GdkEventKey* event, gpointer d //custom widget realisation methods static gboolean new_volume_slider_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client); + DbusmenuClient * client, + gpointer user_data); static gboolean new_transport_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client); + DbusmenuClient * client, + gpointer user_data); static gboolean new_metadata_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client); + DbusmenuClient * client, + gpointer user_data); static gboolean new_title_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client); + DbusmenuClient * client, + gpointer user_data); // DBUS communication - static GDBusNodeInfo *node_info = NULL; static GDBusInterfaceInfo *interface_info = NULL; static void create_connection_to_service (GObject *source_object, @@ -185,10 +188,18 @@ get_menu (IndicatorObject * io) DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(menu); g_object_set_data (G_OBJECT (client), "indicator", io); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_VOLUME_MENUITEM_TYPE, new_volume_slider_widget); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TRANSPORT_MENUITEM_TYPE, new_transport_widget); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_METADATA_MENUITEM_TYPE, new_metadata_widget); - dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TITLE_MENUITEM_TYPE, new_title_widget); + dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client), + DBUSMENU_VOLUME_MENUITEM_TYPE, + new_volume_slider_widget); + dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client), + DBUSMENU_TRANSPORT_MENUITEM_TYPE, + new_transport_widget); + dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client), + DBUSMENU_METADATA_MENUITEM_TYPE, + new_metadata_widget); + dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client), + DBUSMENU_TITLE_MENUITEM_TYPE, + new_title_widget); // Note: Not ideal but all key handling needs to be managed here and then // delegated to the appropriate widget. g_signal_connect (menu, "key-press-event", G_CALLBACK(key_press_cb), io); @@ -286,7 +297,8 @@ static void create_connection_to_service (GObject *source_object, static gboolean new_transport_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client) + DbusmenuClient * client, + gpointer user_data) { g_debug("indicator-sound: new_transport_bar() called "); @@ -314,7 +326,8 @@ new_transport_widget (DbusmenuMenuitem * newitem, static gboolean new_metadata_widget (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client) + DbusmenuClient * client, + gpointer user_data) { g_debug("indicator-sound: new_metadata_widget"); @@ -335,7 +348,8 @@ new_metadata_widget (DbusmenuMenuitem * newitem, static gboolean new_title_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client) + DbusmenuClient * client, + gpointer user_data) { g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE); g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE); @@ -358,7 +372,8 @@ new_title_widget(DbusmenuMenuitem * newitem, static gboolean new_volume_slider_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, - DbusmenuClient * client) + DbusmenuClient * client, + gpointer user_data) { g_debug("indicator-sound: new_volume_slider_widget"); diff --git a/src/metadata-menu-item.c b/src/metadata-menu-item.c index 05d7e84..cda3934 100644 --- a/src/metadata-menu-item.c +++ b/src/metadata-menu-item.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/mpris2-controller.c b/src/mpris2-controller.c index c953648..fa57af3 100644 --- a/src/mpris2-controller.c +++ b/src/mpris2-controller.c @@ -27,6 +27,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <string.h> #include <gee.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/music-player-bridge.c b/src/music-player-bridge.c index 16f3dfa..6076732 100644 --- a/src/music-player-bridge.c +++ b/src/music-player-bridge.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/music-player-bridge.h b/src/music-player-bridge.h index b156cfe..14575fe 100644 --- a/src/music-player-bridge.h +++ b/src/music-player-bridge.h @@ -9,6 +9,7 @@ #include <stdlib.h> #include <string.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/player-controller.c b/src/player-controller.c index 2aa709f..c8f241d 100644 --- a/src/player-controller.c +++ b/src/player-controller.c @@ -25,6 +25,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib-object.h> #include <gee.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/player-item.c b/src/player-item.c index fad8f9f..2408ec7 100644 --- a/src/player-item.c +++ b/src/player-item.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/playlists-menu-item.c b/src/playlists-menu-item.c index 5a32860..13004ed 100644 --- a/src/playlists-menu-item.c +++ b/src/playlists-menu-item.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/title-menu-item.c b/src/title-menu-item.c index 8696ff4..a92af90 100644 --- a/src/title-menu-item.c +++ b/src/title-menu-item.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/transport-menu-item.c b/src/transport-menu-item.c index 9bc1eea..92d435b 100644 --- a/src/transport-menu-item.c +++ b/src/transport-menu-item.c @@ -23,6 +23,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <glib.h> #include <glib-object.h> #include <libdbusmenu-glib/client.h> +#include <libdbusmenu-glib/dbusmenu-glib.h> #include <libdbusmenu-glib/menuitem-proxy.h> #include <libdbusmenu-glib/menuitem.h> #include <libdbusmenu-glib/server.h> diff --git a/src/transport-widget.c b/src/transport-widget.c index 6ddd4bc..7c96684 100644 --- a/src/transport-widget.c +++ b/src/transport-widget.c @@ -129,10 +129,10 @@ static void transport_widget_toggle_play_pause ( TransportWidget* button, TransportWidgetState update); static void transport_widget_select (GtkItem* menu, gpointer Userdata); static void transport_widget_deselect (GtkItem* menu, gpointer Userdata); +static TransportWidgetEvent transport_widget_collision_detection (gint x, gint y); /// Init functions ////////////////////////////////////////////////////////// - static void transport_widget_class_init (TransportWidgetClass *klass) { @@ -301,30 +301,23 @@ transport_widget_leave_notify_event (GtkWidget *menuitem, TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) ); priv->motion_event = TRANSPORT_NADA; - cairo_t *cr; - cr = gdk_cairo_create (menuitem->window); - draw ( menuitem, cr ); - cairo_destroy ( cr ); - + priv->current_command = TRANSPORT_NADA; + gtk_widget_queue_draw (GTK_WIDGET(menuitem)); + return TRUE; } -/* keyevents */ static gboolean transport_widget_button_press_event (GtkWidget *menuitem, - GdkEventButton *event) + GdkEventButton *event) { g_return_val_if_fail ( IS_TRANSPORT_WIDGET(menuitem), FALSE ); TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) ); TransportWidgetEvent result = transport_widget_determine_button_event ( TRANSPORT_WIDGET(menuitem), event); - if(result != TRANSPORT_NADA){ priv->current_command = result; - cairo_t *cr; - cr = gdk_cairo_create (menuitem->window); - draw ( menuitem, cr ); - cairo_destroy ( cr ); + gtk_widget_queue_draw (GTK_WIDGET(menuitem)); } return TRUE; } @@ -333,14 +326,12 @@ static gboolean transport_widget_button_release_event (GtkWidget *menuitem, GdkEventButton *event) { - //g_debug("TransportWidget::menu_release_event"); g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE); TransportWidget* transport = TRANSPORT_WIDGET(menuitem); TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport ); TransportWidgetEvent result = transport_widget_determine_button_event ( transport, event ); - if(result != TRANSPORT_NADA){ - //g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result); + if (result != TRANSPORT_NADA && priv->current_command == result){ GVariant* new_transport_state = g_variant_new_int32 ((int)result); dbusmenu_menuitem_handle_event ( priv->twin_item, "Transport state change", @@ -376,17 +367,8 @@ transport_widget_react_to_key_press_event ( TransportWidget* transport, TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport ); priv->current_command = transport_event; priv->key_event = transport_event; -/* printf("transport_widget_react_to_key_press_event: before drawing\n");*/ gtk_widget_realize ( GTK_WIDGET(transport) ); - - printf ( "transport widget - react to key press event -> is the window null: %i", - gtk_widget_get_window (GTK_WIDGET (transport) ) == NULL ); - cairo_t *cr; - - printf("transport_widget_react_to_key_press_event: before drawing\n"); - cr = gdk_cairo_create ( GTK_WIDGET(transport)->window ); - draw ( GTK_WIDGET(transport), cr ); - cairo_destroy (cr); + gtk_widget_queue_draw (GTK_WIDGET(transport) ); } } @@ -396,7 +378,6 @@ transport_widget_react_to_key_release_event ( TransportWidget* transport, { if(transport_event != TRANSPORT_NADA){ TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport ); - //g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result); GVariant* new_transport_event = g_variant_new_int32((int)transport_event); dbusmenu_menuitem_handle_event ( priv->twin_item, "Transport state change", @@ -412,53 +393,41 @@ transport_widget_focus_update ( TransportWidget* transport, gboolean focus ) { TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport ); priv->has_focus = focus; - g_debug("new focus update = %i", focus); } static TransportWidgetEvent transport_widget_determine_button_event( TransportWidget* button, GdkEventButton* event ) { - //g_debug("event x coordinate = %f", event->x); - //g_debug("event y coordinate = %f", event->y); - TransportWidgetEvent button_event = TRANSPORT_NADA; - // For now very simple rectangular collision detection - if(event->x > 67 && event->x < 112 - && event->y > 12 && event->y < 40){ - button_event = TRANSPORT_PREVIOUS; - } - else if(event->x > 111 && event->x < 153 - && event->y > 5 && event->y < 47){ - button_event = TRANSPORT_PLAY_PAUSE; - } - else if(event->x > 152 && event->x < 197 - && event->y > 12 && event->y < 40){ - button_event = TRANSPORT_NEXT; - } - return button_event; + return transport_widget_collision_detection (event->x, event->y); } static TransportWidgetEvent transport_widget_determine_motion_event( TransportWidget* button, GdkEventMotion* event ) { -/* g_debug("event x coordinate = %f", event->x);*/ -/* g_debug("event y coordinate = %f", event->y);*/ - TransportWidgetEvent motion_event = TRANSPORT_NADA; - // For now very simple rectangular collision detection - if(event->x > 67 && event->x < 112 - && event->y > 12 && event->y < 40){ - motion_event = TRANSPORT_PREVIOUS; + return transport_widget_collision_detection (event->x, event->y); +} + +static TransportWidgetEvent +transport_widget_collision_detection ( gint x, + gint y ) +{ + TransportWidgetEvent event = TRANSPORT_NADA; + + if (x > 67 && x < 112 + && y > 12 && y < 40){ + event = TRANSPORT_PREVIOUS; } - else if(event->x > 111 && event->x < 153 - && event->y > 5 && event->y < 47){ - motion_event = TRANSPORT_PLAY_PAUSE; + else if (x > 111 && x < 153 + && y > 5 && y < 47){ + event = TRANSPORT_PLAY_PAUSE; } - else if(event->x > 152 && event->x < 197 - && event->y > 12 && event->y < 40){ - motion_event = TRANSPORT_NEXT; - } - return motion_event; + else if (x > 152 && x < 197 + && y > 12 && y < 40){ + event = TRANSPORT_NEXT; + } + return event; } static void @@ -467,17 +436,11 @@ transport_widget_react_to_button_release ( TransportWidget* button, { g_return_if_fail(IS_TRANSPORT_WIDGET(button)); TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(button); - if(priv->current_command != TRANSPORT_NADA && - command != TRANSPORT_NADA){ - priv->current_command = command; - } - cairo_t *cr; - cr = gdk_cairo_create ( GTK_WIDGET(button)->window ); priv->current_command = TRANSPORT_NADA; priv->key_event = TRANSPORT_NADA; - draw ( GTK_WIDGET(button), cr ); - cairo_destroy (cr); + + gtk_widget_queue_draw (GTK_WIDGET(button)); } /// internal helper functions ////////////////////////////////////////////////// |