aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2011-02-21 02:09:43 -0800
committerThomas White <taw@physics.org>2012-02-22 15:27:15 +0100
commitb6a0d7a568aa01ff79b7197f454d6438ceb32cf0 (patch)
treec056bdd72bd4ebee0a895535f19a615a1ea5aabc /src
parent758fc675ab242bbd92130d9f644b8b96f8b52216 (diff)
hdfsee: Make sure selected menu item agrees with what's actually shown
Diffstat (limited to 'src')
-rw-r--r--src/displaywindow.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/displaywindow.c b/src/displaywindow.c
index 36dc7e5b..b05c7251 100644
--- a/src/displaywindow.c
+++ b/src/displaywindow.c
@@ -885,7 +885,8 @@ static gint displaywindow_newhdf(GtkMenuItem *item, struct newhdf *nh)
static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
const char *group,
- DisplayWindow *dw, GSList **rgp)
+ DisplayWindow *dw, GSList **rgp,
+ const char *selectme)
{
char **names;
int *is_group;
@@ -912,7 +913,7 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
item = gtk_menu_item_new_with_label(names[i]);
sub = displaywindow_addhdfgroup(hdfile, names[i],
- dw, rgp);
+ dw, rgp, selectme);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), sub);
} else if ( is_image[i] ) {
@@ -922,7 +923,16 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
item = gtk_radio_menu_item_new_with_label(*rgp,
names[i]);
- if ( *rgp == NULL ) {
+ nh = malloc(sizeof(struct newhdf));
+ if ( nh != NULL ) {
+ strncpy(nh->name, names[i], 1023);
+ nh->dw = dw;
+ g_signal_connect(G_OBJECT(item), "activate",
+ G_CALLBACK(displaywindow_newhdf), nh);
+ }
+
+ STATUS("'%s' '%s'\n", names[i], selectme);
+ if ( strcmp(names[i], selectme) == 0 ) {
gtk_check_menu_item_set_active(
GTK_CHECK_MENU_ITEM(item), TRUE);
} else {
@@ -933,14 +943,6 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
*rgp = gtk_radio_menu_item_get_group(
GTK_RADIO_MENU_ITEM(item));
- nh = malloc(sizeof(struct newhdf));
- if ( nh != NULL ) {
- strncpy(nh->name, names[i], 1023);
- nh->dw = dw;
- g_signal_connect(G_OBJECT(item), "activate",
- G_CALLBACK(displaywindow_newhdf), nh);
- }
-
} else {
char *tmp;
@@ -980,20 +982,21 @@ static GtkWidget *displaywindow_addhdfgroup(struct hdfile *hdfile,
static GtkWidget *displaywindow_createhdfmenus(struct hdfile *hdfile,
- DisplayWindow *dw)
+ DisplayWindow *dw,
+ const char *selectme)
{
GSList *rg = NULL;
- return displaywindow_addhdfgroup(hdfile, "/", dw, &rg);
+ return displaywindow_addhdfgroup(hdfile, "/", dw, &rg, selectme);
}
-static void displaywindow_update_menus(DisplayWindow *dw)
+static void displaywindow_update_menus(DisplayWindow *dw, const char *selectme)
{
GtkWidget *ms;
GtkWidget *w;
- ms = displaywindow_createhdfmenus(dw->hdfile, dw);
+ ms = displaywindow_createhdfmenus(dw->hdfile, dw, selectme);
if ( ms == NULL ) {
@@ -1214,7 +1217,7 @@ DisplayWindow *displaywindow_open(const char *filename, const char *peaks,
g_signal_connect(GTK_OBJECT(dw->drawingarea), "button-release-event",
G_CALLBACK(displaywindow_release), dw);
- if ( dw->hdfile != NULL ) displaywindow_update_menus(dw);
+ if ( dw->hdfile != NULL ) displaywindow_update_menus(dw, element);
return dw;
}