Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 82b188b3d8ce190858063c6282850d4e > files > 3

gnomeradio-1.8-15.fc16.src.rpm

From 7694c70f99731724dad64444484d070ff760db89 Mon Sep 17 00:00:00 2001
From: Jörgen Scheibengruber <mfcn@src.gnome.org>
Date: Sat, 13 Sep 2008 21:00:09 +0000
Subject: Don't update menus while main-view and tray-icon are not visible yet

	* src/gui.c (main):
	* src/prefs.c (add_button_clicked_cb), (del_button_clicked_cb),
	(name_cell_edited_cb):
	Don't update menus while main-view and tray-icon are not visible yet


svn path=/trunk/; revision=208
---
diff --git a/ChangeLog b/ChangeLog
index 973a754..814a52d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-09-13  Jörgen Scheibengruber  <mfcn@gmx.de>
 
+	* src/gui.c (main):
+	* src/prefs.c (add_button_clicked_cb), (del_button_clicked_cb),
+	(name_cell_edited_cb):
+	Don't update menus while main-view and tray-icon are not visible yet
+
+2008-09-13  Jörgen Scheibengruber  <mfcn@gmx.de>
+
 	* configure.in:
 	* src/Makefile.am:
 
diff --git a/src/gui.c b/src/gui.c
index faca2b7..6c2155f 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -54,6 +54,8 @@ GtkTooltips *tooltips;
 int mom_ps;
 gnomeradio_settings settings;
 
+gboolean main_visible;
+
 static GtkWidget *drawing_area;
 static GdkPixmap *digits, *signal_s, *stereo;
 static GtkWidget *freq_scale;
@@ -1110,6 +1112,7 @@ int main(int argc, char* argv[])
 					NULL);
 	gtk_window_set_default_icon_name("gnomeradio");
 	/* Main app */
+	main_visible = FALSE;
 	app = gnome_radio_gui();
 
 	/* Initizialize GStreamer */
@@ -1150,6 +1153,7 @@ int main(int argc, char* argv[])
 	preset_combo_set_item(mom_ps);
 
 	gtk_widget_show_all(app);
+	main_visible = TRUE;
 
 	/* Create an tray icon */
 	create_tray_icon(app);
diff --git a/src/prefs.c b/src/prefs.c
index 425d116..7b8ee20 100644
--- a/src/prefs.c
+++ b/src/prefs.c
@@ -30,6 +30,8 @@ extern GtkTooltips *tooltips;
 extern int mom_ps;
 extern gnomeradio_settings settings;
 
+extern gboolean main_visible;
+
 static GtkWidget *device_entry;
 static GtkWidget *mixer_combo;
 static GtkWidget *mute_on_exit_cb;
@@ -310,16 +312,18 @@ static void add_button_clicked_cb(GtkWidget *widget, gpointer data)
 	v_scb = gtk_tree_view_get_vadjustment(GTK_TREE_VIEW(list_view));
 	gtk_adjustment_set_value(v_scb, v_scb->upper);
 	
-	gtk_combo_box_append_text(GTK_COMBO_BOX(preset_combo), ps->title);
-	mom_ps = g_list_length(settings.presets) - 1;
-	preset_combo_set_item(mom_ps);
-
-	menuitems = GTK_MENU_SHELL(tray_menu)->children;
-	menuitem = gtk_menu_item_new_with_label(ps->title); 
-		
-	gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, mom_ps);		
-	g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, (gpointer)mom_ps);
-	gtk_widget_show(menuitem);
+	if (main_visible) {
+		gtk_combo_box_append_text(GTK_COMBO_BOX(preset_combo), ps->title);
+		mom_ps = g_list_length(settings.presets) - 1;
+		preset_combo_set_item(mom_ps);
+
+		menuitems = GTK_MENU_SHELL(tray_menu)->children;
+		menuitem = gtk_menu_item_new_with_label(ps->title); 
+			
+		gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, mom_ps);		
+		g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, (gpointer)mom_ps);
+		gtk_widget_show(menuitem);
+	}
 
 	buffer = g_strdup_printf("%d", g_list_length(settings.presets) - 1);
 	path = gtk_tree_path_new_from_string(buffer);
@@ -356,15 +360,17 @@ static void del_button_clicked_cb(GtkWidget *widget, gpointer data)
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path);
 	gtk_list_store_remove(list_store, &iter);
 
-	gtk_combo_box_remove_text(GTK_COMBO_BOX(preset_combo), *row + 1);
-	if (--mom_ps < 0) mom_ps = 0;
-	if (!g_list_length(settings.presets)) mom_ps = -1;
-	preset_combo_set_item(mom_ps);
+	if (main_visible) {
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(preset_combo), *row + 1);
+		if (--mom_ps < 0) mom_ps = 0;
+		if (!g_list_length(settings.presets)) mom_ps = -1;
+		preset_combo_set_item(mom_ps);
 
-	menuitems = GTK_MENU_SHELL(tray_menu)->children;
-	g_assert(*row < g_list_length(menuitems));
-	menuitem = g_list_nth_data(menuitems, *row);
-	gtk_widget_destroy(menuitem);
+		menuitems = GTK_MENU_SHELL(tray_menu)->children;
+		g_assert(*row < g_list_length(menuitems));
+		menuitem = g_list_nth_data(menuitems, *row);
+		gtk_widget_destroy(menuitem);
+	}
 	
 	gtk_tree_path_prev(path);
 	gtk_tree_view_set_cursor(GTK_TREE_VIEW(list_view), path, NULL, FALSE);
@@ -420,20 +426,22 @@ static void name_cell_edited_cb(GtkCellRendererText *cellrenderertext, gchar *pa
 	if (ps->title) g_free(ps->title);
 	ps->title = g_strdup(new_val);
 
-	gtk_combo_box_remove_text(GTK_COMBO_BOX(preset_combo), *row + 1);
-	gtk_combo_box_insert_text(GTK_COMBO_BOX(preset_combo), *row + 1, ps->title);
-	mom_ps = *row;
-	preset_combo_set_item(mom_ps);
-	
-	menuitems = GTK_MENU_SHELL(tray_menu)->children;
-	g_assert(mom_ps < g_list_length(menuitems));
-	menuitem = g_list_nth_data(menuitems, mom_ps);
-	gtk_widget_destroy(menuitem);
-	menuitem = gtk_menu_item_new_with_label(ps->title); 
-		
-	gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, *row);		
-	g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, (gpointer)mom_ps);
-	gtk_widget_show(menuitem);
+	if (main_visible) {
+		gtk_combo_box_remove_text(GTK_COMBO_BOX(preset_combo), *row + 1);
+		gtk_combo_box_insert_text(GTK_COMBO_BOX(preset_combo), *row + 1, ps->title);
+		mom_ps = *row;
+		preset_combo_set_item(mom_ps);
+
+		menuitems = GTK_MENU_SHELL(tray_menu)->children;
+		g_assert(mom_ps < g_list_length(menuitems));
+		menuitem = g_list_nth_data(menuitems, mom_ps);
+		gtk_widget_destroy(menuitem);
+		menuitem = gtk_menu_item_new_with_label(ps->title); 
+			
+		gtk_menu_shell_insert(GTK_MENU_SHELL(tray_menu), menuitem, *row);		
+		g_signal_connect(G_OBJECT(menuitem), "activate", (GCallback)preset_menuitem_activate_cb, (gpointer)mom_ps);
+		gtk_widget_show(menuitem);
+	}
 	
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(list_store), &iter, path);
 	gtk_list_store_set(GTK_LIST_STORE(list_store), &iter, 0, new_val, -1);
--
cgit v0.8.3.1