oldcfg.vtmode != cfg2.vtmode) {
oldcfg.vtmode != cfg2.vtmode || oldcfg.shadowbold != cfg2.shadowbold) {
void change_settings_menuitem(GtkMenuItem *item, gpointer data){    /* This maps colour indices in inst->cfg to those used in inst->cols. */    static const int ww[] = {        6, 7, 8, 9, 10, 11, 12, 13,        14, 15, 16, 17, 18, 19, 20, 21,        0, 1, 2, 3, 4, 5    };    struct gui_data *inst = (struct gui_data *)data;    char *title = dupcat(appname, " Reconfiguration", NULL);    Config cfg2, oldcfg;    int i, need_size;    cfg2 = inst->cfg;                  /* structure copy */    if (do_config_box(title, &cfg2, 1)) {        oldcfg = inst->cfg;            /* structure copy */        inst->cfg = cfg2;              /* structure copy */        /* Pass new config data to the logging module */        log_reconfig(inst->logctx, &cfg2);        /*         * Flush the line discipline's edit buffer in the case         * where local editing has just been disabled.         */        ldisc_send(inst->ldisc, NULL, 0, 0);        /* Pass new config data to the terminal */        term_reconfig(inst->term, &cfg2);        /* Pass new config data to the back end */        inst->back->reconfig(inst->backhandle, &cfg2);        /*         * Just setting inst->cfg is sufficient to cause colour         * setting changes to appear on the next ESC]R palette         * reset. But we should also check whether any colour         * settings have been changed, and revert the ones that         * have to the new default, on the assumption that the user         * is most likely to want an immediate update.         */        for (i = 0; i < NCOLOURS; i++) {            if (oldcfg.colours[ww[i]][0] != cfg2.colours[ww[i]][0] ||                oldcfg.colours[ww[i]][1] != cfg2.colours[ww[i]][1] ||                oldcfg.colours[ww[i]][2] != cfg2.colours[ww[i]][2]) {                real_palette_set(inst, i, cfg2.colours[ww[i]][0],                                 cfg2.colours[ww[i]][1],                                 cfg2.colours[ww[i]][2]);		/*		 * If the default background has changed, we must		 * repaint the space in between the window border		 * and the text area.		 */		if (i == 18) {		    set_window_background(inst);		    draw_backing_rect(inst);		}	    }        }        /*         * If the scrollbar needs to be shown, hidden, or moved         * from one end to the other of the window, do so now.         */        if (oldcfg.scrollbar != cfg2.scrollbar) {            if (cfg2.scrollbar)                gtk_widget_show(inst->sbar);            else                gtk_widget_hide(inst->sbar);        }        if (oldcfg.scrollbar_on_left != cfg2.scrollbar_on_left) {            gtk_box_reorder_child(inst->hbox, inst->sbar,                                  cfg2.scrollbar_on_left ? 0 : 1);        }        /*         * Change the window title, if required.         */        if (strcmp(oldcfg.wintitle, cfg2.wintitle))            set_title(inst, cfg2.wintitle);	set_window_titles(inst);        /*         * Redo the whole tangled fonts and Unicode mess if         * necessary.         */        if (strcmp(oldcfg.font.name, cfg2.font.name) ||            strcmp(oldcfg.boldfont.name, cfg2.boldfont.name) ||            strcmp(oldcfg.widefont.name, cfg2.widefont.name) ||            strcmp(oldcfg.wideboldfont.name, cfg2.wideboldfont.name) ||            strcmp(oldcfg.line_codepage, cfg2.line_codepage) ||	    oldcfg.vtmode != cfg2.vtmode) {            setup_fonts_ucs(inst);            need_size = 1;        } else            need_size = 0;        /*         * Resize the window.         */        if (oldcfg.width != cfg2.width || oldcfg.height != cfg2.height ||            oldcfg.window_border != cfg2.window_border || need_size) {            set_geom_hints(inst);            request_resize(inst, cfg2.width, cfg2.height);        } else {	    /*	     * The above will have caused a call to term_size() for	     * us if it happened. If the user has fiddled with only	     * the scrollback size, the above will not have	     * happened and we will need an explicit term_size()	     * here.	     */	    if (oldcfg.savelines != cfg2.savelines)		term_size(inst->term, inst->term->rows, inst->term->cols,			  cfg2.savelines);	}        term_invalidate(inst->term);	/*	 * We do an explicit full redraw here to ensure the window	 * border has been redrawn as well as the text area.	 */	gtk_widget_queue_draw(inst->area);    }    sfree(title);}