- if(p!=NULL){
- xwindow_set_text_property(hints->icon_window,
- ioncore_g.atom_dockapp_hack,
- (const char **)p, n);
- XFreeStringList(p);
+ if(!XGetWindowAttributes(ioncore_g.dpy, icon_win, &icon_attr)){
+ if(maprq)
+ warn(TR("Window %#x disappeared."), win);
+ XFree((void*)hints);
+ goto fail2;
+ }
+
+ if(!maprq){
+ if(attr.map_state==IsViewable){
+ /* The dockapp might be displaying its "main" window if no
+ * wm that understands dockapps has been managing it.
+ */
+ XUnmapWindow(ioncore_g.dpy, win);
+ param.dockapp=TRUE;
+ }else{
+ /* Main window is unmapped on initial scan, but icon window
+ * is mapped. Let's hope it's a dockapp left by e.g. us.
+ */
+ if(icon_attr.map_state==IsViewable)
+ param.dockapp=TRUE;
+ }