*** add_window.c 1995/04/30 04:12:43 1.1 --- add_window.c 1995/04/30 04:41:07 1.2 *************** *** 176,181 **** --- 176,182 ---- int restoredFromPrevSession; Bool width_ever_changed_by_user; Bool height_ever_changed_by_user; + char *name; #ifdef DEBUG fprintf(stderr, "AddWindow: w = 0x%x\n", w); *************** *** 199,205 **** XGetWindowAttributes(dpy, tmp_win->w, &tmp_win->attr); ! XFetchName(dpy, tmp_win->w, &tmp_win->name); tmp_win->class = NoClass; XGetClassHint(dpy, tmp_win->w, &tmp_win->class); FetchWmProtocols (tmp_win); --- 200,206 ---- XGetWindowAttributes(dpy, tmp_win->w, &tmp_win->attr); ! XFetchName(dpy, tmp_win->w, &name); tmp_win->class = NoClass; XGetClassHint(dpy, tmp_win->w, &tmp_win->class); FetchWmProtocols (tmp_win); *************** *** 273,286 **** tmp_win->transient = Transient(tmp_win->w, &tmp_win->transientfor); tmp_win->nameChanged = 0; ! if (tmp_win->name == NULL) ! tmp_win->name = NoName; if (tmp_win->class.res_name == NULL) tmp_win->class.res_name = NoName; if (tmp_win->class.res_class == NULL) tmp_win->class.res_class = NoName; ! tmp_win->full_name = tmp_win->name; namelen = strlen (tmp_win->name); tmp_win->highlight = Scr->Highlight && --- 274,291 ---- tmp_win->transient = Transient(tmp_win->w, &tmp_win->transientfor); tmp_win->nameChanged = 0; ! if (name == NULL) ! tmp_win->name = strdup(NoName); ! else { ! tmp_win->name = strdup(name); ! XFree(name); ! } if (tmp_win->class.res_name == NULL) tmp_win->class.res_name = NoName; if (tmp_win->class.res_class == NULL) tmp_win->class.res_class = NoName; ! tmp_win->full_name = strdup(tmp_win->name); namelen = strlen (tmp_win->name); tmp_win->highlight = Scr->Highlight && *************** *** 724,734 **** if (XGetWindowProperty (dpy, tmp_win->w, XA_WM_ICON_NAME, 0L, 200L, False, XA_STRING, &actual_type, &actual_format, &nitems, ! &bytesafter,(unsigned char **)&tmp_win->icon_name)) ! tmp_win->icon_name = tmp_win->name; ! ! if (tmp_win->icon_name == NULL) ! tmp_win->icon_name = tmp_win->name; tmp_win->iconified = FALSE; tmp_win->icon = FALSE; --- 729,744 ---- if (XGetWindowProperty (dpy, tmp_win->w, XA_WM_ICON_NAME, 0L, 200L, False, XA_STRING, &actual_type, &actual_format, &nitems, ! &bytesafter,(unsigned char **)&name)) { ! tmp_win->icon_name = strdup(tmp_win->name); ! } else { ! if (name == NULL) { ! tmp_win->icon_name = strdup(tmp_win->name); ! } else { ! tmp_win->icon_name = strdup(name); ! XFree(name); ! } ! } tmp_win->iconified = FALSE; tmp_win->icon = FALSE; *** events.c 1995/04/30 04:12:34 1.1 --- events.c 1995/04/30 04:41:23 1.2 *************** *** 717,727 **** if (tmp->name == tmp->full_name) nukefull = False; if (tmp->icon_name == tmp->name) nukename = False; ! #define isokay(v) ((v) && (v) != NoName) ! if (nukefull && isokay(tmp->full_name)) XFree (tmp->full_name); ! if (nukename && isokay(tmp->name)) XFree (tmp->name); ! if (nukeicon && isokay(tmp->icon_name)) XFree (tmp->icon_name); ! #undef isokay return; } --- 717,725 ---- if (tmp->name == tmp->full_name) nukefull = False; if (tmp->icon_name == tmp->name) nukename = False; ! if (nukefull && tmp->full_name) free (tmp->full_name); ! if (nukename && tmp->name) free (tmp->name); ! if (nukeicon && tmp->icon_name) free (tmp->icon_name); return; } *************** *** 808,818 **** (unsigned char **) &prop) != Success || actual == None) return; - if (!prop) prop = NoName; free_window_names (Tmp_win, True, True, False); ! Tmp_win->full_name = prop; ! Tmp_win->name = prop; Tmp_win->nameChanged = 1; --- 806,817 ---- (unsigned char **) &prop) != Success || actual == None) return; free_window_names (Tmp_win, True, True, False); ! Tmp_win->full_name = strdup(prop ? prop : NoName); ! Tmp_win->name = strdup(prop ? prop : NoName); ! if (prop) ! XFree(prop); Tmp_win->nameChanged = 1; *************** *** 842,850 **** (unsigned char **) &prop) != Success || actual == None) return; - if (!prop) prop = NoName; free_window_names (Tmp_win, False, False, True); ! Tmp_win->icon_name = prop; RedoIconName(); break; --- 841,850 ---- (unsigned char **) &prop) != Success || actual == None) return; free_window_names (Tmp_win, False, False, True); ! Tmp_win->icon_name = strdup(prop ? prop : NoName); ! if (prop) ! XFree(prop); RedoIconName(); break;