rendered paste bodydiff --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