Diff

Differences From Artifact [b3b84314bc]:

To Artifact [c73eb446d9]:


3221
3222
3223
3224
3225
3226
3227



























3228
3229
3230
3231
3232
3233
3234

void saved_session_freedata(GtkMenuItem *item, gpointer data)
{
    char *str = (char *)gtk_object_get_data(GTK_OBJECT(item), "user-data");

    sfree(str);
}




























void update_specials_menu(void *frontend)
{
    struct gui_data *inst = (struct gui_data *)frontend;

    const struct telnet_special *specials;








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261

void saved_session_freedata(GtkMenuItem *item, gpointer data)
{
    char *str = (char *)gtk_object_get_data(GTK_OBJECT(item), "user-data");

    sfree(str);
}

static void update_savedsess_menu(GtkMenuItem *menuitem, gpointer data)
{
    struct gui_data *inst = (struct gui_data *)data;
    struct sesslist sesslist;
    int i;

    gtk_container_foreach(GTK_CONTAINER(inst->sessionsmenu),
			  (GtkCallback)gtk_widget_destroy, NULL);

    get_sesslist(&sesslist, TRUE);
    for (i = 1; i < sesslist.nsessions; i++) {
	GtkWidget *menuitem =
	    gtk_menu_item_new_with_label(sesslist.sessions[i]);
	gtk_container_add(GTK_CONTAINER(inst->sessionsmenu), menuitem);
	gtk_widget_show(menuitem);
	gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
			    dupstr(sesslist.sessions[i]));
	gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
			   GTK_SIGNAL_FUNC(saved_session_menuitem),
			   inst);
	gtk_signal_connect(GTK_OBJECT(menuitem), "destroy",
			   GTK_SIGNAL_FUNC(saved_session_freedata),
			   inst);
    }
    get_sesslist(&sesslist, FALSE); /* free up */
}

void update_specials_menu(void *frontend)
{
    struct gui_data *inst = (struct gui_data *)frontend;

    const struct telnet_special *specials;

3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
	if (new_session)
	    MKMENUITEM("New Session", new_session_menuitem);
        MKMENUITEM("Restart Session", restart_session_menuitem);
	inst->restartitem = menuitem;
	gtk_widget_hide(inst->restartitem);
        MKMENUITEM("Duplicate Session", dup_session_menuitem);
	if (saved_sessions) {
	    struct sesslist sesslist;
	    int i;

	    inst->sessionsmenu = gtk_menu_new();

	    get_sesslist(&sesslist, TRUE);
	    for (i = 1; i < sesslist.nsessions; i++) {
		menuitem = gtk_menu_item_new_with_label(sesslist.sessions[i]);
		gtk_container_add(GTK_CONTAINER(inst->sessionsmenu), menuitem);
		gtk_widget_show(menuitem);
		gtk_object_set_data(GTK_OBJECT(menuitem), "user-data",
				    dupstr(sesslist.sessions[i]));
		gtk_signal_connect(GTK_OBJECT(menuitem), "activate",
				   GTK_SIGNAL_FUNC(saved_session_menuitem),
				   inst);
		gtk_signal_connect(GTK_OBJECT(menuitem), "destroy",
				   GTK_SIGNAL_FUNC(saved_session_freedata),
				   inst);
	    }
	    get_sesslist(&sesslist, FALSE);

	    MKMENUITEM("Saved Sessions", NULL);
	    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem),
				      inst->sessionsmenu);
	}
	MKMENUITEM(NULL, NULL);
        MKMENUITEM("Change Settings", change_settings_menuitem);
	MKMENUITEM(NULL, NULL);
	if (use_event_log)







<
<
<

|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
|







3528
3529
3530
3531
3532
3533
3534



3535
3536















3537
3538
3539
3540
3541
3542
3543
3544
3545
	if (new_session)
	    MKMENUITEM("New Session", new_session_menuitem);
        MKMENUITEM("Restart Session", restart_session_menuitem);
	inst->restartitem = menuitem;
	gtk_widget_hide(inst->restartitem);
        MKMENUITEM("Duplicate Session", dup_session_menuitem);
	if (saved_sessions) {



	    inst->sessionsmenu = gtk_menu_new();
	    /* sessionsmenu will be updated when it's invoked */















	    /* XXX is this the right way to do dynamic menus in Gtk? */
	    MKMENUITEM("Saved Sessions", update_savedsess_menu);
	    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem),
				      inst->sessionsmenu);
	}
	MKMENUITEM(NULL, NULL);
        MKMENUITEM("Change Settings", change_settings_menuitem);
	MKMENUITEM(NULL, NULL);
	if (use_event_log)