If there are no saved sessions, put a grayed "(No sessions)" entry on the saved
authorjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Sun, 13 Sep 2009 23:29:11 +0000 (23:29 +0000)
committerjacob <jacob@cda61777-01e9-0310-a592-d414129be87e>
Sun, 13 Sep 2009 23:29:11 +0000 (23:29 +0000)
sessions submenu of the terminal window context menu (as Pageant does), rather
than an empty menu (which often renders poorly).

git-svn-id: svn://svn.tartarus.org/sgt/putty@8648 cda61777-01e9-0310-a592-d414129be87e

unix/gtkwin.c
windows/window.c

index 6298174..a87a0c0 100644 (file)
@@ -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 */
 }
 
index 670a1ac..3ff018b 100644 (file)
@@ -636,7 +636,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
     guess_height = extra_height + font_height * cfg.height;
     {
        RECT r;
-               get_fullscreen_rect(&r);
+       get_fullscreen_rect(&r);
        if (guess_width > r.right - r.left)
            guess_width = r.right - r.left;
        if (guess_height > r.bottom - r.top)
@@ -912,6 +912,8 @@ static void update_savedsess_menu(void)
        AppendMenu(savedsess_menu, MF_ENABLED,
                   IDM_SAVED_MIN + (i-1)*MENU_SAVED_STEP,
                   sesslist.sessions[i]);
+    if (sesslist.nsessions <= 1)
+       AppendMenu(savedsess_menu, MF_GRAYED, IDM_SAVED_MIN, "(No sessions)");
 }
 
 /*