Bug 1416620 - Part1. Fix webrender commands in nsDisplayButtonBorder. r=kats draft
authorEthan Lin <ethlin@mozilla.com>
Mon, 13 Nov 2017 13:54:11 +0800
changeset 696967 091f97dda0b4f8a672e59cf2db6fb31eda0ccb1c
parent 696928 1f91961bb79ad06fd4caef9e5dfd546afd5bf42c
child 696968 924153b7af820dbad5e676def4d2a3988684df12
child 696999 536ed733e68c292c88db74ade83611ca43c2fb2c
push id88842
push userbmo:ethlin@mozilla.com
push dateMon, 13 Nov 2017 05:58:50 +0000
reviewerskats
bugs1416620
milestone58.0a1
Bug 1416620 - Part1. Fix webrender commands in nsDisplayButtonBorder. r=kats MozReview-Commit-ID: 418FZgwFR2i
layout/forms/nsButtonFrameRenderer.cpp
--- a/layout/forms/nsButtonFrameRenderer.cpp
+++ b/layout/forms/nsButtonFrameRenderer.cpp
@@ -288,16 +288,27 @@ nsDisplayButtonBorder::BuildLayer(nsDisp
 
 bool
 nsDisplayButtonBorder::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
                                                mozilla::wr::IpcResourceUpdateQueue& aResources,
                                                const StackingContextHelper& aSc,
                                                mozilla::layers::WebRenderLayerManager* aManager,
                                                nsDisplayListBuilder* aDisplayListBuilder)
 {
+  // This is really a combination of paint box shadow inner +
+  // paint border.
+  nsRect buttonRect = nsRect(ToReferenceFrame(), mFrame->GetSize());
+  bool snap;
+  nsRegion visible = GetBounds(aDisplayListBuilder, &snap);
+  nsDisplayBoxShadowInner::CreateInsetBoxShadowWebRenderCommands(aBuilder,
+                                                                 aSc,
+                                                                 visible,
+                                                                 mFrame,
+                                                                 buttonRect);
+
   bool borderIsEmpty = false;
   Maybe<nsCSSBorderRenderer> br =
   nsCSSRendering::CreateBorderRenderer(mFrame->PresContext(),
                                        nullptr,
                                        mFrame,
                                        nsRect(),
                                        nsRect(ToReferenceFrame(), mFrame->GetSize()),
                                        mFrame->StyleContext(),
@@ -308,27 +319,16 @@ nsDisplayButtonBorder::CreateWebRenderCo
       return true;
     }
     return false;
   }
   if (!br->CanCreateWebRenderCommands()) {
     return false;
   }
 
-  // This is really a combination of paint box shadow inner +
-  // paint border.
-  nsRect buttonRect = nsRect(ToReferenceFrame(), mFrame->GetSize());
-  bool snap;
-  nsRegion visible = GetBounds(aDisplayListBuilder, &snap);
-  nsDisplayBoxShadowInner::CreateInsetBoxShadowWebRenderCommands(aBuilder,
-                                                                 aSc,
-                                                                 visible,
-                                                                 mFrame,
-                                                                 buttonRect);
-
   br->CreateWebRenderCommands(this, aBuilder, aResources, aSc);
 
   return true;
 }
 
 void
 nsDisplayButtonBorder::ComputeInvalidationRegion(nsDisplayListBuilder* aBuilder,
                                                  const nsDisplayItemGeometry* aGeometry,