diff --git a/widget.c b/widget.c index 3c782c4..598b092 100644 --- a/widget.c +++ b/widget.c @@ -161,6 +161,9 @@ widgetUpdateWidgetStatus (CompWindow *w) break; } + printf ("update widget status for %d, property %d, widget %d (was %d)\n", + w->id, ww->propertyState, isWidget, ww->isWidget); + retval = (!isWidget && ww->isWidget) || (isWidget && !ww->isWidget); ww->isWidget = isWidget; @@ -206,7 +209,14 @@ widgetUpdateWidgetMapState (CompWindow *w, if (map && ww->wasUnmapped) { - XMapWindow (w->screen->display->display, w->id); + printf ("mapping %d %x\n", w->id, w->state); + if (w->state & CompWindowStateHiddenMask) + { + w->hidden = FALSE; + showWindow (w); + } + else + XMapWindow (w->screen->display->display, w->id); raiseWindow (w); ww->wasUnmapped = FALSE; } @@ -217,7 +227,15 @@ widgetUpdateWidgetMapState (CompWindow *w, widget mode which aren't supposed to be unmapped */ if (w->attrib.map_state == IsViewable) { - XUnmapWindow (w->screen->display->display, w->id); + printf("%d %d\n", w->managed, w->mapNum); + if (w->managed && w->mapNum) + { + w->hidden = TRUE; + hideWindow (w); + } + else + XUnmapWindow (w->screen->display->display, w->id); + printf ("unmapping %d\n", w->id); ww->wasUnmapped = TRUE; } } @@ -331,6 +349,7 @@ widgetToggle (CompDisplay *d, { WIDGET_SCREEN (s); + printf ("toggling widget mode, old state %d\n", ws->state); switch (ws->state) { case StateOff: case StateFadeOut: @@ -349,6 +368,8 @@ widgetToggle (CompDisplay *d, if (!ws->grabIndex) ws->grabIndex = pushScreenGrab (s, ws->cursor, "widget"); + printf ("new state %d, fadetime %d, grabIndex %d\n", + ws->state, ws->fadeTime, ws->grabIndex); damageScreen (s); return TRUE; @@ -487,6 +508,8 @@ widgetUpdateStatus (void *closure) if (widgetUpdateWidgetPropertyState (w)) widgetUpdateWidgetMapState (w, (ws->state != StateOff)); + printf("window %d %s init, isWidget %d\n", w->id, w->resName, ww->isWidget); + if (w->attrib.override_redirect) clientLeader = getClientLeader (w); else