diff --git a/src/defaults.h b/src/defaults.h index a2b9f24b..2f82fd6c 100644 --- a/src/defaults.h +++ b/src/defaults.h @@ -54,4 +54,7 @@ char *get_icon_filename(WScreen *scr, char *winstance, char *wclass, char *comma int wDefaultGetStartWorkspace(WScreen *scr, char *instance, char *class); void wDefaultChangeIcon(WScreen *scr, char *instance, char* class, char *file); RImage *get_rimage_from_file(WScreen *scr, char *file_name, int max_size); + +void wDefaultPurgeInfo(WScreen *scr, char *instance, char *class); + #endif /* WMDEFAULTS_H_ */ diff --git a/src/wdefaults.c b/src/wdefaults.c index 0e7d6cdb..ce9af5f8 100644 --- a/src/wdefaults.c +++ b/src/wdefaults.c @@ -597,6 +597,37 @@ void wDefaultChangeIcon(WScreen * scr, char *instance, char *class, char *file) WMPLSetCaseSensitive(False); } +void wDefaultPurgeInfo(WScreen *scr, char *instance, char *class) +{ + WMPropList *value, *key, *dict; + char *buffer; + + if (!AIcon) { /* Unnecessary precaution */ + init_wdefaults(); + } + + WMPLSetCaseSensitive(True); + + buffer = wmalloc(strlen(class) + strlen(instance) + 2); + sprintf(buffer, "%s.%s", instance, class); + key = WMCreatePLString(buffer); + + dict = WMGetFromPLDictionary(WDWindowAttributes->dictionary, key); + + if (dict) { + value = WMGetFromPLDictionary(dict, AIcon); + if (value) { + WMRemoveFromPLDictionary(dict, AIcon); + } + WMRemoveFromPLDictionary(WDWindowAttributes->dictionary, key); + UpdateDomainFile(WDWindowAttributes); + } + + wfree(buffer); + WMReleasePropList(key); + WMPLSetCaseSensitive(False); +} + /* --------------------------- Local ----------------------- */ static int getBool(WMPropList * key, WMPropList * value)