X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/e436e0602b66c82acf0741ced8f9a19bd2060e70..219fc52343882cf5fe9170909bb6cc8b13716f00:/unix/gtkwin.c diff --git a/unix/gtkwin.c b/unix/gtkwin.c index 62981742..393d98f5 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -1275,7 +1275,7 @@ static gint idle_exit_func(gpointer data) term_provide_resize_fn(inst->term, NULL, NULL); update_specials_menu(inst); } - gtk_widget_show(inst->restartitem); + gtk_widget_set_sensitive(inst->restartitem, TRUE); } gtk_idle_remove(inst->term_exit_idle_id); @@ -1291,14 +1291,14 @@ void notify_remote_exit(void *frontend) static gint timer_trigger(gpointer data) { - long now = GPOINTER_TO_INT(data); + long now = GPOINTER_TO_SIZE(data); long next; long ticks; if (run_timers(now, &next)) { ticks = next - GETTICKCOUNT(); timer_id = gtk_timeout_add(ticks > 0 ? ticks : 1, timer_trigger, - GINT_TO_POINTER(next)); + GSIZE_TO_POINTER(next)); } /* @@ -1320,7 +1320,7 @@ void timer_change_notify(long next) ticks = 1; /* just in case */ timer_id = gtk_timeout_add(ticks, timer_trigger, - GINT_TO_POINTER(next)); + GSIZE_TO_POINTER(next)); } void fd_input_func(gpointer data, gint sourcefd, GdkInputCondition condition) @@ -3199,6 +3199,7 @@ static void update_savedsess_menu(GtkMenuItem *menuitem, gpointer data) (GtkCallback)gtk_widget_destroy, NULL); get_sesslist(&sesslist, TRUE); + /* skip sesslist.sessions[0] == Default Settings */ for (i = 1; i < sesslist.nsessions; i++) { GtkWidget *menuitem = gtk_menu_item_new_with_label(sesslist.sessions[i]); @@ -3213,6 +3214,13 @@ static void update_savedsess_menu(GtkMenuItem *menuitem, gpointer data) GTK_SIGNAL_FUNC(saved_session_freedata), inst); } + if (sesslist.nsessions <= 1) { + GtkWidget *menuitem = + gtk_menu_item_new_with_label("(No sessions)"); + gtk_widget_set_sensitive(menuitem, FALSE); + gtk_container_add(GTK_CONTAINER(inst->sessionsmenu), menuitem); + gtk_widget_show(menuitem); + } get_sesslist(&sesslist, FALSE); /* free up */ } @@ -3352,7 +3360,7 @@ static void start_backend(struct gui_data *inst) ldisc_create(&inst->cfg, inst->term, inst->back, inst->backhandle, inst); - gtk_widget_hide(inst->restartitem); + gtk_widget_set_sensitive(inst->restartitem, FALSE); } int pt_main(int argc, char **argv) @@ -3540,10 +3548,10 @@ int pt_main(int argc, char **argv) GTK_SIGNAL_FUNC(func), inst); \ } while (0) if (new_session) - MKMENUITEM("New Session", new_session_menuitem); + MKMENUITEM("New Session...", new_session_menuitem); MKMENUITEM("Restart Session", restart_session_menuitem); inst->restartitem = menuitem; - gtk_widget_hide(inst->restartitem); + gtk_widget_set_sensitive(inst->restartitem, FALSE); MKMENUITEM("Duplicate Session", dup_session_menuitem); if (saved_sessions) { inst->sessionsmenu = gtk_menu_new(); @@ -3554,7 +3562,7 @@ int pt_main(int argc, char **argv) inst->sessionsmenu); } MKMENUITEM(NULL, NULL); - MKMENUITEM("Change Settings", change_settings_menuitem); + MKMENUITEM("Change Settings...", change_settings_menuitem); MKMENUITEM(NULL, NULL); if (use_event_log) MKMENUITEM("Event Log", event_log_menuitem);