Closed
Bug 1358102
Opened 8 years ago
Closed 2 years ago
Certain CSS transitions are failing since v48(?)
Categories
(Core :: Layout, defect, P3)
Tracking
()
RESOLVED
WORKSFORME
Tracking | Status | |
---|---|---|
firefox-esr45 | --- | unaffected |
firefox-esr52 | --- | wontfix |
firefox-esr60 | --- | affected |
firefox53 | --- | wontfix |
firefox54 | --- | wontfix |
firefox55 | --- | wontfix |
firefox56 | --- | wontfix |
firefox57 | --- | wontfix |
firefox58 | --- | wontfix |
firefox59 | --- | wontfix |
firefox60 | --- | wontfix |
firefox61 | --- | wontfix |
firefox62 | --- | wontfix |
firefox63 | --- | wontfix |
firefox64 | --- | wontfix |
firefox66 | --- | wontfix |
firefox67 | --- | wontfix |
firefox68 | --- | fix-optional |
People
(Reporter: chuck, Unassigned)
References
(Regression)
Details
(Keywords: regression)
Attachments
(5 files, 1 obsolete file)
(deleted),
application/pdf
|
Details | |
(deleted),
text/html
|
Details | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review | |
(deleted),
patch
|
Details | Diff | Splinter Review |
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:53.0) Gecko/20100101 Firefox/53.0
Build ID: 20170413192749
Steps to reproduce:
Visit
http://www.arrowtheme.com/drthemes/?theme=illusion-drupal&frame=http://arrowtheme.com/illusiondemo/
Attempt to have tertiary menu items appear when hovering over secondary items with submenu items.
Actual results:
Tertiary flyouts do not appear properly (1 or 2 pixels wide) in versions > 47x
Expected results:
Tertiary submenu should appear normally when hovering over secondary menu item which has associated submenu.
Status: UNCONFIRMED → NEW
Has Regression Range: --- → no
Has STR: --- → yes
Component: Activity Streams: General → Layout
Ever confirmed: true
OS: Unspecified → All
Product: Firefox → Core
Updated•8 years ago
|
Keywords: regressionwindow-wanted
Comment 1•8 years ago
|
||
Comment 2•8 years ago
|
||
At least, there are two regression window.
#1 Regression window(1st menu and 2nd sub-menu would not open):
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=22360424ed1532c73c93aab85bfd9173899956f8&tochange=8084077bd124bc25f521fd31fe51a9d1c508c68a
Regressed by: ac7d0d74ced6 Thinker K.F. Li — Bug 1208673 - Do HitTest with skipping non-leaf preserve-3d transform items. r=roc
#2 Regression window (partial fix: 1st menu open, but 2nd sub-menu would not):
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=6c49bb716593014c07d3736ea2124f74bfe3bb06&tochange=691f2e687e46d1b166b88b0a3f9dbd480bff9afa
Regressed by: f950b7a04741 Thinker K.F. Li — Bug 1226904 - Fix boundary checking for leaves collecting. r=roc
Blocks: 1208673
Updated•8 years ago
|
status-firefox53:
--- → wontfix
status-firefox54:
--- → fix-optional
status-firefox55:
--- → affected
status-firefox-esr45:
--- → unaffected
status-firefox-esr52:
--- → affected
Keywords: regressionwindow-wanted → regression
Comment 3•8 years ago
|
||
It seems both regression window are from Thinker.
Thinker, could you have a look at this regression?
Flags: needinfo?(tlee)
Comment 5•7 years ago
|
||
The submenu are clipped by the visible region of the parent for some reason. I will look into it deeper.
Comment 6•7 years ago
|
||
NOTE:
One of problems is the display items of sub-menus are not built for their visual overflow is out of the dirty rect.
The dirty rect is bound by the menu item of the main menu, for it is with float property.
The parent of the frame of the main menu item calls |nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay|
against all children, including sub-menus, in |mFloats| setting a |OutOfFlowData| with |mDirtyRect| included.
The |mDirtyRect| would be used for building display list as the dirt rect.
The |NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO| flag bit can be used to fixed the problem.
The other problem is that even display items are created, the the content of items are not shown immediately.
It is another problem I will look into in following days.
Comment 7•7 years ago
|
||
NOTE:
For some reason, the frames of first level sub_menu do not |UpdateOverflow()|
when the frames of second level sub_menu are transformed.
I attached the process with gdb to force them |UpdateOverflow()|, then second level sub_menus
are shown correctly.
So, the question is how to make |UpdateOverflow()| being called correctly.
Comment 8•7 years ago
|
||
The frames, except establisers, participating preserve-3D rendering context was
skipped when propagate change of overflow along the frame tree to the root.
Leaves of 3D rendering context are also skipped to incorrect values returned by
|GetOverflowAreasRelativeToSelf()| and incorrect overflow computed by
|nsIFrame::ComputePreserve3DChildrenOverflow()|.
Comment 10•7 years ago
|
||
Alice, could you confirm if the patch fix the problem?
Flags: needinfo?(alice0775)
Comment 11•7 years ago
|
||
I built 32bit inbound from 4d3fe42a592d + attachment 8878647 [details] [diff] [review] in locally windows10 64bit.
Menu(1st and 2nd) seems to be expand correctly.
However, no menu labels are rendered --- this is regressed by Bug 1361970 :(
Flags: needinfo?(alice0775)
Updated•7 years ago
|
status-firefox56:
--- → affected
Comment 12•7 years ago
|
||
This patch make OverflowChangedTracker to stop skipping leaf frame of 3D rendering context.
Attachment #8878647 -
Attachment is obsolete: true
Attachment #8878745 -
Flags: review?(matt.woodrow)
Comment 13•7 years ago
|
||
Comment on attachment 8878745 [details] [diff] [review]
OverflowChangedTracker does not skip leaf frames of a 3D rendering context
Review of attachment 8878745 [details] [diff] [review]:
-----------------------------------------------------------------
::: layout/generic/nsFrame.cpp
@@ +9077,5 @@
> + bool combines3DTransformWithAncestors =
> + Combines3DTransformWithAncestors(disp);
> + if (MOZ_UNLIKELY(combines3DTransformWithAncestors &&
> + !Extend3DContext(disp, effectSet))) {
> + // Preserve-3d leaf frame!!
Intermediate preserve-3d frames can have non-empty pre-transform overflow areas too, since they can have children that don't participate in preserve-3d.
Do we need to handle those here too?
Comment 14•7 years ago
|
||
(In reply to Matt Woodrow (:mattwoodrow) from comment #13)
> Intermediate preserve-3d frames can have non-empty pre-transform overflow
> areas too, since they can have children that don't participate in
> preserve-3d.
>
> Do we need to handle those here too?
If a descendant of an intermediate frame does not participate in preserve-3d,
there must has a leaf frame in-between itself and the intermediate frame.
So, it can not happen that a frame is a direct child of an intermediate frame
and not participate preserve-3d. It at least should be a leaf frame.
Comment 15•7 years ago
|
||
Are you sure about that?
nsIFrame::Combines3DTransformWithAncestors returns false if the parent has preserve-3d (preserve-3d root or intermediate frame), but isn't transformed itself.
Those frames should contribute pre-transform overflow area to their parent, which is an intermediate (or the root) preserve-3d frame.
Comment 16•7 years ago
|
||
Err! I didn't notice that. |IsPreserve3DLeaf()| seems need to be changed by this confusing definition.
I think I need to take time to check existing code calling Combines3DTransformWithAncestors(), to see
if there is any of them depending on wrong assumption.
Comment 17•7 years ago
|
||
This patch comprises comments and opinions on Combines3DTransformWithAncestors().
I checked all functions calling to Combines3DTranformWithAncestors() to see if they are reasonable or what can be changed.
Flags: needinfo?(matt.woodrow)
Comment 18•7 years ago
|
||
I try to change Combines3DTransformWithAncestors(). It has pass all reftests.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=40ea0f631497cbe7df4e445ab7ae782a62ae3e15
I am studying what the side-effects are.
Comment 19•7 years ago
|
||
Thinker,it seems you are working on it.
Feel free to let know if you are not gonna work on this bug.
Assignee: nobody → thinker.li
Comment 20•7 years ago
|
||
What's the status of this bug Thinker?
status-firefox57:
--- → affected
Flags: needinfo?(thinker.li)
Updated•7 years ago
|
Priority: -- → P3
Comment 21•7 years ago
|
||
Still reproduces on trunk.
status-firefox58:
--- → wontfix
status-firefox59:
--- → fix-optional
status-firefox60:
--- → affected
Flags: needinfo?(thinker.li)
Flags: needinfo?(chuck)
Updated•6 years ago
|
Assignee: thinker.li → nobody
status-firefox61:
--- → wontfix
status-firefox62:
--- → fix-optional
status-firefox-esr60:
--- → affected
Comment 22•6 years ago
|
||
Still reproducible in 63.0b8 and Latest Nightly 64.0b1.
status-firefox63:
--- → affected
status-firefox64:
--- → affected
Too late to fix in 63. We could still take a patch for 65 and potentially for 64.
Comment 24•6 years ago
|
||
Reproducible on Windows 7 x32 using this testcase also "https://bug1358102.bmoattachments.org/attachment.cgi?id=8867531" on Firefox Nightly 68.0a1, Firefox 67.0b17 and Firefox 66.0.4
Updated•6 years ago
|
Updated•2 years ago
|
Severity: normal → S3
Comment 25•2 years ago
|
||
Fixed somewhere in this range.
You need to log in
before you can comment on or make changes to this bug.
Description
•