From 7d45bea65b2fa534ecb2334350f339714c19308a Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Fri, 22 Mar 2013 15:17:27 +1300 Subject: [PATCH] Bug 852489. Part 1: Don't create nsDisplayButtonForegrounds for buttons that aren't focused. r=mats --HG-- extra : rebase_source : 93ad60be2d64345fee5bbdd4553b11b5d8341d18 --- layout/forms/nsButtonFrameRenderer.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/layout/forms/nsButtonFrameRenderer.cpp b/layout/forms/nsButtonFrameRenderer.cpp index c0e666884a11..17f124c73188 100644 --- a/layout/forms/nsButtonFrameRenderer.cpp +++ b/layout/forms/nsButtonFrameRenderer.cpp @@ -185,11 +185,18 @@ nsButtonFrameRenderer::DisplayButton(nsDisplayListBuilder* aBuilder, nsDisplayButtonBoxShadowOuter(aBuilder, this)); } + // Almost all buttons draw some kind of background so there's not much + // point in checking whether we should create this item. aBackground->AppendNewToTop(new (aBuilder) nsDisplayButtonBorderBackground(aBuilder, this)); - aForeground->AppendNewToTop(new (aBuilder) - nsDisplayButtonForeground(aBuilder, this)); + // Only display focus rings if we actually have them. Since at most one + // button would normally display a focus ring, most buttons won't have them. + if ((mOuterFocusStyle && mOuterFocusStyle->StyleBorder()->HasBorder()) || + (mInnerFocusStyle && mInnerFocusStyle->StyleBorder()->HasBorder())) { + aForeground->AppendNewToTop(new (aBuilder) + nsDisplayButtonForeground(aBuilder, this)); + } return NS_OK; }