Closed Bug 383257 Opened 16 years ago Closed 15 years ago

Clicking on a combobox does a full style reresolve on it

Categories

(Core :: Widget: Cocoa, defect)

PowerPC
macOS
defect
Not set
normal

Tracking

()

RESOLVED INVALID
mozilla1.9beta1

People

(Reporter: bzbarsky, Assigned: jaas)

References

Details

(Keywords: perf)

Attachments

(1 file)

Seems to be a regression from native widgets on OSX.  See bug 381775 comment 3.
Flags: blocking1.9?
Flags: blocking1.9? → blocking1.9+
What does "full style reresolve" mean and how do we know when this has been fixed?

Any chance this is fixed by bug 380116?
> What does "full style reresolve" mean

nsFrameManager::ReResolveStyleContext is called for that node/frame and gives it a different style context, which necessitates a reresolve of the styles on everything under it.

> how do we know when this has been fixed?

By setting breakpoints and seeing whether they're hit.  One simple way would be to override DidSetStyleContext() in the combobox frame and see whether that gets hit when you click.

> Any chance this is fixed by bug 380116?

No.
Maybe this was caused by 370282. Mac OS X is the only platform that requests the dropmarker not be drawn.
> Maybe this was caused by 370282

I don't think so.

You could breakpoint in PostRestyleEvent when clicking on the combobox and see what's calling it... That would give a starting point for debugging.
Target Milestone: --- → mozilla1.9beta2
Attached patch debug patch v1.0Splinter Review
I created this patch and with it I don't see that log message getting printed out when I click on a combobox.

Boris - if your reported problem existed I'd see that log message printed out whenever I clicked on the combobox, right?
Is the same true for the combobox display frame?  It's possible that the reresolve is only happening there...

More to the point, can you reproduce bug 381775 if you back out the patch for bug 380116?
I can reproduce bug 381775 if I back out the patch for bug 380116. What does that have to do with this?
"Is the same true for the combobox display frame?  It's possible that the
reresolve is only happening there..."

There is no call to DidSetStyleContext() in the control frame or the display frame when I click on a select combobox.

Perhaps this is only a problem when we have a non-native-themed combobox widget?
> What does that have to do with this?

The fact that that warning appears means a reresolve is happening.

Note that a reresolve that doesn't change the style context doesn't call DidSetStyleContext.  That's the most likely reason you don't see your printf.

> Perhaps this is only a problem when we have a non-native-themed combobox
> widget?

See bug 381775 comment 2.
Again, I think that comment 4 is the way to debug this.
Josh, looked into this, and this isn't actually happening.  What _is_ happening is that native theming forces a repaint of the combobox on any state change, and the restyle event processing code verifies the style tree (but doesn't force restyling on the <select>).
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.