GNOME Bugzilla – Bug 108497
Sometimes struts don't get noticed/workareas don't get invalidated
Last modified: 2004-12-22 21:47:04 UTC
Since the new constraints code, sometimes work areas aren't invalidated properly or struts are ignored somehow, so windows will maximize behind the panel. Very intermittent.
when metacity is started from a terminal using a --replace, the struts on all other workspaces (other than the one from which metacity was started) are ignored for some reason in the work area calculation. I can reproduce this fairly consistently now that I've actually figured out the pattern. Making a change that invalidates the work areas causes metacity to start computing the work areas properly again. Looking at this more closely, it's apparent that this is not a bug in the ensure_work_areas validated function; when it computes the work areas has_struts is set to zero on windows such as the panel. Somehow the work areas are being computed before the struts property is updated, and then not being recomputed later when the struts are updates on non-visible workspaces.
Apparently this bug also exists in 2.4.34. I had been assuming that the new constraints code introduced it, but I guess not after all. This should help in tracking it down if I ever get around to it.
OK I figured out why it's doing this. It's really pretty obvious in retrospect: in meta_window_new update_struts was being called after the workspaces were calculated, so of course window->on_all_workspaces is false when the workareas are invalidated. The fix conflicts with my latest partial_width patch, so I'm just going to roll this fix into that patch. Marking the bug dependancy for this bug, which we can close as soon as that patch goes in.
should now be fixed in CVS