← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~cjcurran/indicator-sound/button-event-press-fix into lp:indicator-sound

 

Conor Curran has proposed merging lp:~cjcurran/indicator-sound/button-event-press-fix into lp:indicator-sound.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)


key event handling is now sent on the button release. Makes the interaction much smoother.

-- 
https://code.launchpad.net/~cjcurran/indicator-sound/button-event-press-fix/+merge/34727
Your team ayatana-commits is subscribed to branch lp:indicator-sound.
=== modified file 'src/mpris2-controller.vala'
--- src/mpris2-controller.vala	2010-08-27 11:25:47 +0000
+++ src/mpris2-controller.vala	2010-09-07 08:24:45 +0000
@@ -96,7 +96,7 @@
 
 	public void property_changed_cb(string interface_source, HashTable<string, Value?> changed_properties, string[] invalid )
 	{	
-		debug("properties-changed for interface %s", interface_source);
+		debug("properties-changed for interface %s and owner %s", interface_source, this.owner.name.down());
 		if(changed_properties == null || interface_source.has_prefix(this.root_interface) == false){
 			warning("Property-changed hash is null or this is an interface that concerns us");
 			return;

=== modified file 'src/play-button.c'
--- src/play-button.c	2010-08-25 17:15:56 +0000
+++ src/play-button.c	2010-09-07 08:24:45 +0000
@@ -409,11 +409,12 @@
 	g_return_if_fail(IS_PLAY_BUTTON(button));
 	PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);
 	priv->current_command = command;
-	
+		
 	cairo_t *cr;
 	cr = gdk_cairo_create (button->window);
 
-	GList* list = g_hash_table_lookup(priv->command_coordinates, GINT_TO_POINTER(command));
+	GList* list = g_hash_table_lookup(priv->command_coordinates,
+	                                  GINT_TO_POINTER(priv->current_command));
 	cairo_rectangle(cr,
 	                GPOINTER_TO_INT(g_list_nth_data(list, 0)),
 	                GPOINTER_TO_INT(g_list_nth_data(list, 1)),
@@ -426,10 +427,12 @@
 
 
 void 
-play_button_react_to_button_release(GtkWidget* button)
+play_button_react_to_button_release(GtkWidget* button, PlayButtonEvent command)
 {
 	g_return_if_fail(IS_PLAY_BUTTON(button));
 	PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);	
+	priv->current_command = command;
+
 	cairo_t *cr;
 	
 	cr = gdk_cairo_create (button->window);
@@ -437,7 +440,7 @@
 	                                  GINT_TO_POINTER(priv->current_command));
 
 	priv->current_command = TRANSPORT_NADA;
-
+	
 	cairo_rectangle(cr,
 	                GPOINTER_TO_INT(g_list_nth_data(list, 0)),
 	                GPOINTER_TO_INT(g_list_nth_data(list, 1)),
@@ -456,6 +459,7 @@
 	PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);
 	priv->current_state = update;
 	g_debug("PlayButton::toggle play state : %i", priv->current_state); 
+	gtk_widget_queue_draw (GTK_WIDGET(button));
 }
 
 

=== modified file 'src/play-button.h'
--- src/play-button.h	2010-07-20 10:24:43 +0000
+++ src/play-button.h	2010-09-07 08:24:45 +0000
@@ -56,8 +56,8 @@
 GType play_button_get_type (void);
 void play_button_set_style(GtkWidget* button, GtkStyle* style);
 PlayButtonEvent determine_button_event(GtkWidget* button, GdkEventButton* event);
-void play_button_react_to_button_press(GtkWidget* button,  PlayButtonEvent command);
-void play_button_react_to_button_release(GtkWidget* button);
+void play_button_react_to_button_press(GtkWidget* button, PlayButtonEvent command);
+void play_button_react_to_button_release(GtkWidget* button,  PlayButtonEvent command);
 void play_button_toggle_play_pause(GtkWidget* button, PlayButtonState update);
 
 GtkWidget* play_button_new();

=== modified file 'src/transport-widget.c'
--- src/transport-widget.c	2010-07-29 12:19:00 +0000
+++ src/transport-widget.c	2010-09-07 08:24:45 +0000
@@ -136,22 +136,12 @@
                                   	GdkEventButton *event)
 {
 	g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
-
 	TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE(TRANSPORT_WIDGET(menuitem));
-
-  GtkWidget *parent;
-
-  parent = gtk_widget_get_parent (GTK_WIDGET (menuitem));
-
+	
 	PlayButtonEvent result = determine_button_event(priv->play_button, event);
 
 	if(result != TRANSPORT_NADA){
-	 	GValue value = {0};
-		g_value_init(&value, G_TYPE_INT);
-		g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
-		g_value_set_int(&value, (int)result);	
 		play_button_react_to_button_press(priv->play_button, result);
-		dbusmenu_menuitem_handle_event (priv->twin_item, "Transport state change", &value, 0);
 	}	
 	return TRUE;
 }
@@ -164,8 +154,17 @@
 	g_debug("TransportWidget::menu_release_event");
 	g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
 	TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE(TRANSPORT_WIDGET(menuitem));	
-  play_button_react_to_button_release(priv->play_button);
 	
+	PlayButtonEvent result = determine_button_event(priv->play_button, event);
+
+	if(result != TRANSPORT_NADA){
+	 	GValue value = {0};
+		g_value_init(&value, G_TYPE_INT);
+		g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
+		g_value_set_int(&value, (int)result);	
+		play_button_react_to_button_release(priv->play_button, result);
+		dbusmenu_menuitem_handle_event (priv->twin_item, "Transport state change", &value, 0);
+	}	
 	return TRUE;
 }
 
@@ -187,6 +186,7 @@
 		int update_value = g_value_get_int(value);
 		g_debug("transport_widget_update_state - with value  %i", update_value);  
 		play_button_toggle_play_pause(priv->play_button, (PlayButtonState)update_value);
+		
 	}
 }
 


Follow ups