All pastes #718386 Raw Edit

Someone

public text v1 · immutable
#718386 ·published 2007-09-28 11:42 UTC
rendered paste body
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