← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~cjcurran/indicator-sound/menu-close-button-reset into lp:indicator-sound

 

Conor Curran has proposed merging lp:~cjcurran/indicator-sound/menu-close-button-reset into lp:indicator-sound.

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


On menu close, playbutton state should be reset. 

-- 
https://code.launchpad.net/~cjcurran/indicator-sound/menu-close-button-reset/+merge/35564
Your team ayatana-commits is subscribed to branch lp:indicator-sound.
=== modified file 'src/play-button.c'
--- src/play-button.c	2010-09-10 13:00:43 +0000
+++ src/play-button.c	2010-09-15 18:03:39 +0000
@@ -99,6 +99,7 @@
 static void play_button_finalize   (GObject *object);
 
 static gboolean play_button_expose (GtkWidget *button, GdkEventExpose *event);
+
 static void draw (GtkWidget* button, cairo_t *cr);
 
 G_DEFINE_TYPE (PlayButton, play_button, GTK_TYPE_DRAWING_AREA);
@@ -370,6 +371,7 @@
                       next_list);
 	
 	gtk_widget_set_size_request(GTK_WIDGET(self), 200, 50); 
+  
 }
 
 static void
@@ -395,6 +397,7 @@
                    event->area.width, event->area.height);
 
 	cairo_clip(cr);
+  
 	draw (button, cr);
 	cairo_destroy (cr);
 	return FALSE;

=== modified file 'src/transport-widget.c'
--- src/transport-widget.c	2010-09-13 11:49:01 +0000
+++ src/transport-widget.c	2010-09-15 18:03:39 +0000
@@ -54,10 +54,15 @@
                                                   		GdkEventButton  *event);
 static gboolean transport_widget_button_release_event (GtkWidget      *menuitem,
                                                     	GdkEventButton  *event);                                          
-static void transport_widget_property_update(DbusmenuMenuitem* item,
+static void transport_widget_property_update( DbusmenuMenuitem* item,
                                        				gchar * property, 
                                        				GValue * value,
-                                       				gpointer userdata);
+                                       				gpointer userdata );
+static void transport_widget_menu_hidden ( GtkWidget        *menu,
+                                           TransportWidget *transport);
+static void transport_widget_notify ( TransportWidget *item,
+                                      GParamSpec       *pspec,
+                                      gpointer          user_data );
 
 
 G_DEFINE_TYPE (TransportWidget, transport_widget, GTK_TYPE_MENU_ITEM);
@@ -100,6 +105,11 @@
 	gtk_container_add (GTK_CONTAINER (self), priv->hbox);
 
   gtk_widget_show_all (priv->hbox);
+
+  g_signal_connect (G_OBJECT(self),
+                    "notify",
+                    G_CALLBACK (transport_widget_notify),
+                    NULL);  
 }
 
 static void
@@ -129,6 +139,37 @@
 	                 G_CALLBACK(transport_widget_property_update), self);
 }
 
+static void
+transport_widget_notify (TransportWidget *item,
+                         GParamSpec       *pspec,
+                         gpointer          user_data)
+{
+  
+  if (g_strcmp0 (pspec->name, "parent"))
+    {
+      GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (item));
+
+      if (parent)
+        {
+          g_signal_connect (parent, "hide",
+                            G_CALLBACK (transport_widget_menu_hidden),
+                            item);
+        }
+    }
+}
+
+static void
+transport_widget_menu_hidden ( GtkWidget        *menu,
+                               TransportWidget *transport)
+{
+  g_debug("Transport Widget's menu hidden method called");
+	g_return_val_if_fail(IS_TRANSPORT_WIDGET(transport), FALSE);
+	TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE(TRANSPORT_WIDGET(transport));
+	play_button_react_to_button_release(priv->play_button, TRANSPORT_NADA);
+    
+}
+
+
 /* keyevents */
 static gboolean
 transport_widget_button_press_event (GtkWidget *menuitem, 


Follow ups