rem: insertAttribute(dict, appDic, AIcon, value, &different, flags&~IS_BOOLEAN);
add: different |= insertAttribute(dict, appDic, AIcon, value, flags&~IS_BOOLEAN);
context: saveSettings(WMButton *button, InspectorPanel *panel){    WWindow *wwin = panel->inspected;    WDDomain *db = WDWindowAttributes;    proplist_t dict = db->dictionary;    proplist_t winDic, value, key;    char buffer[256], *icon_file;    int flags = 0;    int different = 0;    /* Save will apply the changes and save them */    applySettings(panel->applyBtn, panel);	    if (WMGetButtonSelected(panel->instRb) != 0)        key = PLMakeString(wwin->wm_instance);    else if (WMGetButtonSelected(panel->clsRb) != 0)        key = PLMakeString(wwin->wm_class);    else if (WMGetButtonSelected(panel->bothRb) != 0) {        strcat(strcat(strcpy(buffer, wwin->wm_instance), "."), wwin->wm_class);        key = PLMakeString(buffer);    }    else if (WMGetButtonSelected(panel->defaultRb) != 0) {        key = PLRetain(AnyWindow);        flags = UPDATE_DEFAULTS;    }    else        key = NULL;    if (!key)        return;    if (!dict) {        dict = PLMakeDictionaryFromEntries(NULL, NULL, NULL);        if (dict) {            db->dictionary = dict;            value = PLMakeString(db->path);            PLSetFilename(dict, value);            PLRelease(value);        }        else {            PLRelease(key);            return;        }    }    if (showIconFor(WMWidgetScreen(button), panel, NULL, NULL,		    USE_TEXT_FIELD) < 0)        return;    PLSetStringCmpHook(NULL);    winDic = PLMakeDictionaryFromEntries(NULL, NULL, NULL);    /* Update icon for window */    icon_file = WMGetTextFieldText(panel->fileText);    if (icon_file) {        if (icon_file[0] != 0) {            value = PLMakeString(icon_file);            insertAttribute(dict, winDic, AIcon, value, &different, flags);            PLRelease(value);        }        free(icon_file);    }    {	int i = WMGetPopUpButtonSelectedItem(panel->wsP);	i--;	if (i>=0 && i < panel->frame->screen_ptr->workspace_count) {	    value = PLMakeString(panel->frame->screen_ptr->workspaces[i]->name);	    insertAttribute(dict, winDic, AStartWorkspace, value, &different, flags);	    PLRelease(value);        }    }    flags |= IS_BOOLEAN;    value = (WMGetButtonSelected(panel->alwChk)!=0) ? Yes : No;    insertAttribute(dict, winDic, AAlwaysUserIcon,    value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[0])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoTitlebar,        value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[1])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoResizebar,       value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[2])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoCloseButton,       value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[3])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoMiniaturizeButton, value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[4])!=0) ? Yes : No;    insertAttribute(dict, winDic, AKeepOnTop,         value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[5])!=0) ? Yes : No;    insertAttribute(dict, winDic, AKeepOnBottom,         value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[6])!=0) ? Yes : No;    insertAttribute(dict, winDic, AOmnipresent,       value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[7])!=0) ? Yes : No;    insertAttribute(dict, winDic, AStartMiniaturized, value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[8])!=0) ? Yes : No;    insertAttribute(dict, winDic, AStartMaximized,    value, &different, flags);    value = (WMGetButtonSelected(panel->attrChk[9])!=0) ? Yes : No;    insertAttribute(dict, winDic, ASkipWindowList,    value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[0])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoHideOthers,      value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[1])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoKeyBindings,     value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[2])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoMouseBindings,   value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[3])!=0) ? Yes : No;    insertAttribute(dict, winDic, AKeepInsideScreen,  value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[4])!=0) ? Yes : No;    insertAttribute(dict, winDic, AUnfocusable, value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[5])!=0) ? Yes : No;    insertAttribute(dict, winDic, ADontSaveSession,   value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[6])!=0) ? Yes : No;    insertAttribute(dict, winDic, AEmulateAppIcon,   value, &different, flags);    value = (WMGetButtonSelected(panel->moreChk[7])!=0) ? Yes : No;    insertAttribute(dict, winDic, AFullMaximize,   value, &different, flags);#ifdef XKB_BUTTON_HINT    value = (WMGetButtonSelected(panel->moreChk[8])!=0) ? Yes : No;    insertAttribute(dict, winDic, ANoLanguageButton,  value, &different, flags);#endif    /* application wide settings for when */    /* the window is the leader, save the attribute with the others */    if (panel->inspected->main_window == panel->inspected->client_win) {		value = (WMGetButtonSelected(panel->appChk[0])!=0) ? Yes : No;	insertAttribute(dict, winDic, AStartHidden, value, &different, flags);	value = (WMGetButtonSelected(panel->appChk[1])!=0) ? Yes : No;	insertAttribute(dict, winDic, ANoAppIcon, value, &different, flags);    }     PLRemoveDictionaryEntry(dict, key);    if (different) {        PLInsertDictionaryEntry(dict, key, winDic);    }    PLRelease(key);     PLRelease(winDic);    different = 0;        /* application wide settings */    if (panel->inspected->main_window != panel->inspected->client_win	&& !(flags & UPDATE_DEFAULTS)) {	WApplication *wapp;	proplist_t appDic;	wapp = wApplicationOf(panel->inspected->main_window);	if (wapp) {	    char *iconFile;	    appDic = PLMakeDictionaryFromEntries(NULL, NULL, NULL);	    assert(wapp->main_window_desc->wm_instance!=NULL);	    assert(wapp->main_window_desc->wm_class!=NULL);	    strcat(strcpy(buffer, wapp->main_window_desc->wm_instance), ".");	    strcat(buffer, wwin->wm_class);	    key = PLMakeString(buffer);	    iconFile = wDefaultGetIconFile(wwin->screen_ptr, 					   wapp->main_window_desc->wm_instance,					   wapp->main_window_desc->wm_class,					   False);	    if (iconFile && iconFile[0]!=0) {		value = PLMakeString(iconFile);		insertAttribute(dict, appDic, AIcon, value, &different, 				flags&~IS_BOOLEAN);		PLRelease(value);	    }			    value = (WMGetButtonSelected(panel->appChk[0])!=0) ? Yes : No;	    insertAttribute(dict, appDic, AStartHidden,  value, &different, flags);	    value = (WMGetButtonSelected(panel->appChk[1])!=0) ? Yes : No;	    insertAttribute(dict, appDic, ANoAppIcon,  value, &different, flags);	    PLRemoveDictionaryEntry(dict, key);	    if (different) {		PLInsertDictionaryEntry(dict, key, appDic);	    }	    PLRelease(key);	    PLRelease(appDic);	}    }    PLSave(dict, YES);    /* clean up */    PLSetStringCmpHook(StringCompareHook);}