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