Page MenuHome

Subpanels flicker when expanding panel that has moved
Confirmed, LowPublicBUG

Description

System Information
Operating system: Windows-10-10.0.20161-SP0 64 Bits
Graphics card: GeForce GTX 1070/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 445.87

Blender Version
Broken: version: 2.90.0 Alpha, branch: master, commit date: 2020-07-12 09:05, hash: rBf319eec88186
Worked: Persistent issue throughout 2.8x.

Short description of error
Certain combinations of minimizing and maximizing the physics properties panels (described below) will cause the element to flash near the bottom of the screen for a frame.

Exact steps for others to reproduce the error

  1. With any object selected, enable two (or more) physics properties for the object.
  2. Minimize the final panel, and then the first.
  3. Maximize the final panel.

Observations
The differences previously mentioned are simply due to a lack of subpanels or panel length.
A second jump appears to sometimes happen when maximizing the final panel after changing the panel type, though I cannot reproduce this reliably.

If the formatting of this video is as terrible as it seems, please let me know how to fix it.

Event Timeline

Braden Currah (TakingFire) renamed this task from Interface flicker when minimizing physics panels to Interface flicker when maximizing physics panels.Jul 17 2020, 7:22 AM
Germano Cavalcante (mano-wii) changed the task status from Needs Triage to Confirmed.Jul 17 2020, 3:13 PM

I can confirm.
I also saw the same behavior on the modifier panels.
I can't reproduce the problem in 2.80

Germano Cavalcante (mano-wii) changed the subtype of this task from "Report" to "Bug".Jul 17 2020, 3:13 PM

Interesting. Here is the offending frame of the animation:


The key information is that the locations of subpanels don't update while their parent panel is closed. So because the collision
panel is closed first, the subpanels are left at the bottom of the region. Then the first panel is closed, moving the collision panel
up, so when it opens again its subpanels are still at the bottom for a single frame.

I wonder why the subpanel locations don't update on the same redraw as the panel is drawn open.

I wonder why the subpanel locations don't update on the same redraw as the panel is drawn open.

Okay, this is because the panel header handler operates on the panel right before the next redraw, but the panel alignment code happens
in the layout step, which happens before drawing. The process looks like this:

LayoutDrawHandlers (close panel)Draw (Bad subpanel offset)Layout (corrects subpanel offsets)Drawetc..

I see two possible solutions:

  1. Refactor the panel alignment code so that it runs at the start of the drawing phase if necessary.
  2. Align subpanels whether they are visible or not.

The 2nd option is definitely quicker, but I'm not sure I like it as much. Figuring out whether to align or not is the worst part of the panel code
right now IMO, maybe it would be good to refactor that anyway. I'd be interest to hear @Julian Eisel (Severin)'s / @Campbell Barton (campbellbarton)'s opinion though.

Hans Goudey (HooglyBoogly) renamed this task from Interface flicker when maximizing physics panels to Subpanels flicker when expanding panel that has moved.Jul 17 2020, 6:24 PM
Julian Eisel (Severin) triaged this task as Low priority.Tue, Feb 2, 7:29 PM