rem: if (needs_refresh & REFRESH_MENU_TEXTURES) foo |= MR_TEXT_BACK;
add: if (needs_refresh & REFRESH_MENU_TITLE_TEXTURE) foo |= WTextureSettings; if (needs_refresh & REFRESH_MENU_TITLE_FONT) foo |= WFontSettings; if (needs_refresh & REFRESH_MENU_TITLE_COLOR) foo |= WColorSettings; if (foo) WMPostNotificationName(WNMenuTitleAppearanceSettingsChanged, NULL, (void*)foo);  foo = 0; if (needs_refresh & REFRESH_MENU_TEXTURE) foo |= WTextureSettings;
context: wReadDefaults(WScreen *scr, proplist_t new_dict){    proplist_t plvalue, old_value;    WDefaultEntry *entry;    int i, must_update;    int needs_refresh;    void *tdata;    proplist_t old_dict = (WDWindowMaker->dictionary!=new_dict 			   ? WDWindowMaker->dictionary : NULL);        must_update = 0;        needs_refresh = 0;        for (i=0; i<sizeof(optionList)/sizeof(WDefaultEntry); i++) {	entry = &optionList[i];		if (new_dict)	    plvalue = PLGetDictionaryEntry(new_dict, entry->plkey);	else	    plvalue = NULL;	if (!old_dict)	    old_value = NULL;	else	    old_value = PLGetDictionaryEntry(old_dict, entry->plkey);		if (!plvalue && !old_value) {	    /* no default in  the DB. Use builtin default */	    plvalue = entry->plvalue;	    if (plvalue && new_dict) {		PLInsertDictionaryEntry(new_dict, entry->plkey, plvalue);		must_update = 1;	    }	} else if (!plvalue) {	    /* value was deleted from DB. Keep current value */	    continue;	} else if (!old_value) {	    /* set value for the 1st time */	} else if (!PLIsEqual(plvalue, old_value)) {	    	    /* value has changed */	} else {	    /* value was not changed since last time */	    continue;	}		if (plvalue) {#ifdef DEBUG	    printf("Updating %s to %s\n", entry->key, PLGetDescription(plvalue));#endif	    /* convert data */	    if ((*entry->convert)(scr, entry, plvalue, entry->addr, &tdata)) {		if (entry->update) {		    needs_refresh |= 			(*entry->update)(scr, entry, tdata, entry->extra_data);		}	    }	}    }    if (needs_refresh!=0) {	int foo;	foo = 0;	if (needs_refresh & REFRESH_MENU_TEXTURES)	    foo |= MR_TEXT_BACK;	if (needs_refresh & REFRESH_MENU_FONT)	    foo |= MR_RESIZED;	if (needs_refresh & REFRESH_MENU_TITLE_FONT)	    foo |= MR_TITLE_TEXT;        if (foo)            refreshMenus(scr, foo);        if (needs_refresh & (REFRESH_WINDOW_TEXTURES|REFRESH_WINDOW_FONT|                             REFRESH_ICON_TILE))            refreshWindows(scr, needs_refresh);        if (needs_refresh & REFRESH_ICON_TILE)            refreshAppIcons(scr, needs_refresh);#ifdef NEWSTUFF	if ((needs_refresh & REFRESH_BUTTON_IMAGES)	    && wPreferences.button_images) {	    int w, h;	    RImage *image = wPreferences.button_images;	    RImage *tmp;	    int theight;	    w = wPreferences.button_images->width / 2;	    h = wPreferences.button_images->height / PRED_BPIXMAPS;	    theight = scr->title_font->height + TITLEBAR_EXTRA_HEIGHT - 3;	    for (i = 0; i < PRED_BPIXMAPS; i++) {		tmp = RGetSubImage(image, 0, i * h, w, h);		if (scr->button_images[0][i])		    RDestroyImage(scr->button_images[0][i]);		scr->button_images[0][i] = RScaleImage(tmp, theight, theight);		RDestroyImage(tmp);		tmp = RGetSubImage(image, w, i * h, image->width - w, h);		if (scr->button_images[1][i])		    RDestroyImage(scr->button_images[1][i]);		scr->button_images[1][i] = RScaleImage(tmp, theight, theight);		RDestroyImage(tmp);	    }	}#endif /* NEWSTUFF */        wRefreshDesktop(scr);    }}