Hello,

It's just a little patch for appearance. It's added some icons to menu
item.
I do not know what version of GTK+ is supported by Gnash so that I use
GTK_CHECK_VERSION to be able to use some icons.

And this patch is included the fix for a memory leak.
Toggle sound menu item is leaking when gst_sound_handler() returns
false.

Thank you,
Hiroyuki Ikezoe
Index: gui/gtk.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gtk.cpp,v
retrieving revision 1.47
diff -d -u -p -r1.47 gtk.cpp
--- gui/gtk.cpp	5 Nov 2006 23:10:43 -0000	1.47
+++ gui/gtk.cpp	9 Nov 2006 03:44:13 -0000
@@ -280,47 +280,75 @@ GtkGui::createMenu()
 
     _popup_menu = GTK_MENU(gtk_menu_new());
     
+#if GTK_CHECK_VERSION(2,6,0)
+    GtkMenuItem *menuitem_play =
+ 	GTK_MENU_ITEM(gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PLAY, NULL));
+    GtkMenuItem *menuitem_pause =
+ 	GTK_MENU_ITEM(gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PAUSE, NULL));
+    GtkMenuItem *menuitem_stop =
+ 	GTK_MENU_ITEM(gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_STOP, NULL));
+    GtkMenuItem *menuitem_restart =
+ 	GTK_MENU_ITEM(gtk_image_menu_item_new_with_label("Restart Movie"));
+    GtkWidget *restart_image =
+        GTK_WIDGET(gtk_image_new_from_stock(GTK_STOCK_REFRESH, GTK_ICON_SIZE_MENU));
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(menuitem_restart), restart_image);
+    GtkMenuItem *menuitem_step_forward =
+ 	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Step Forward Frame"));
+    GtkMenuItem *menuitem_step_backward =
+ 	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Step Backward Frame"));
+    GtkMenuItem *menuitem_jump_forward =
+        GTK_MENU_ITEM(gtk_menu_item_new_with_label("Jump Forward 10 Frames"));
+    GtkMenuItem *menuitem_jump_backward =
+ 	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Jump Backward 10 Frames"));
+#else /* GTK_CHECK_VERSION(2,6,0) */
     GtkMenuItem *menuitem_play =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Play Movie"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_play));
-    gtk_widget_show(GTK_WIDGET(menuitem_play));    
     GtkMenuItem *menuitem_pause =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Pause Movie"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_pause));
-    gtk_widget_show(GTK_WIDGET(menuitem_pause));
     GtkMenuItem *menuitem_stop =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Stop Movie"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_stop));
-    gtk_widget_show(GTK_WIDGET(menuitem_stop));
     GtkMenuItem *menuitem_restart =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Restart Movie"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_restart));
-    gtk_widget_show(GTK_WIDGET(menuitem_restart));
     GtkMenuItem *menuitem_step_forward =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Step Forward Frame"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_step_forward));
-    gtk_widget_show(GTK_WIDGET(menuitem_step_forward));
     GtkMenuItem *menuitem_step_backward =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Step Backward Frame"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_step_backward));
-    gtk_widget_show(GTK_WIDGET(menuitem_step_backward));
     GtkMenuItem *menuitem_jump_forward =
         GTK_MENU_ITEM(gtk_menu_item_new_with_label("Jump Forward 10 Frames"));
-    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_jump_forward));
-    gtk_widget_show(GTK_WIDGET(menuitem_jump_forward));
     GtkMenuItem *menuitem_jump_backward =
  	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Jump Backward 10 Frames"));
+#endif
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_play));
+    gtk_widget_show(GTK_WIDGET(menuitem_play));    
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_pause));
+    gtk_widget_show(GTK_WIDGET(menuitem_pause));
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_stop));
+    gtk_widget_show(GTK_WIDGET(menuitem_stop));
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_restart));
+    gtk_widget_show(GTK_WIDGET(menuitem_restart));
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_step_forward));
+    gtk_widget_show(GTK_WIDGET(menuitem_step_forward));
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_step_backward));
+    gtk_widget_show(GTK_WIDGET(menuitem_step_backward));
+    gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_jump_forward));
+    gtk_widget_show(GTK_WIDGET(menuitem_jump_forward));
     gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_jump_backward));
     gtk_widget_show(GTK_WIDGET(menuitem_jump_backward));
-    GtkMenuItem *menuitem_sound =
-        GTK_MENU_ITEM(gtk_menu_item_new_with_label("Toggle Sound"));
+
+    // Menu for sound
     if (get_sound_handler()) {
+        GtkMenuItem *menuitem_sound =
+	    GTK_MENU_ITEM(gtk_check_menu_item_new_with_label("Toggle Sound"));
         gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_sound));
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem_sound),
+	                               get_sound_handler()->is_muted() ? FALSE : TRUE);
         gtk_widget_show(GTK_WIDGET(menuitem_sound));
+        g_signal_connect(GTK_OBJECT(menuitem_sound), "activate",
+                         G_CALLBACK(&menuitem_sound_callback), this);
     }
 
     GtkMenuItem *menuitem_quit =
- 	GTK_MENU_ITEM(gtk_menu_item_new_with_label("Quit Gnash"));
+ 	GTK_MENU_ITEM(gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL));
     gtk_menu_append(_popup_menu, GTK_WIDGET(menuitem_quit));
     gtk_widget_show(GTK_WIDGET(menuitem_quit));    
     g_signal_connect(GTK_OBJECT(menuitem_play), "activate",
@@ -341,10 +369,6 @@ GtkGui::createMenu()
                      G_CALLBACK(&menuitem_jump_backward_callback), this);
     g_signal_connect(GTK_OBJECT(menuitem_quit), "activate",
                      G_CALLBACK(&menuitem_quit_callback), this);
-    if (get_sound_handler()) {
-        g_signal_connect(GTK_OBJECT(menuitem_sound), "activate",
-                         G_CALLBACK(&menuitem_sound_callback), this);
-    }
 
     return true;
 }
_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to