void nsMathMLmoFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, const nsRect& aDirtyRect, const nsDisplayListSet& aLists) { bool useMathMLChar = UseMathMLChar(); if (!useMathMLChar) { // let the base class do everything nsMathMLTokenFrame::BuildDisplayList(aBuilder, aDirtyRect, aLists); } else { DisplayBorderBackgroundOutline(aBuilder, aLists); // make our char selected if our inner child text frame is selected bool isSelected = false; nsRect selectedRect; nsIFrame* firstChild = mFrames.FirstChild(); if (IsFrameInSelection(firstChild)) { mMathMLChar.GetRect(selectedRect); // add a one pixel border (it renders better for operators like minus) selectedRect.Inflate(nsPresContext::CSSPixelsToAppUnits(1)); isSelected = true; } mMathMLChar.Display(aBuilder, this, aLists, 0, isSelected ? &selectedRect : nullptr); #if defined(DEBUG) && defined(SHOW_BOUNDING_BOX) // for visual debug DisplayBoundingMetrics(aBuilder, this, mReference, mBoundingMetrics, aLists); #endif } }
NS_IMETHODIMP nsMathMLmoFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder, const nsRect& aDirtyRect, const nsDisplayListSet& aLists) { nsresult rv = NS_OK; PRBool useMathMLChar = UseMathMLChar(); if (!useMathMLChar) { // let the base class do everything rv = nsMathMLTokenFrame::BuildDisplayList(aBuilder, aDirtyRect, aLists); NS_ENSURE_SUCCESS(rv, rv); } else { rv = DisplayBorderBackgroundOutline(aBuilder, aLists); NS_ENSURE_SUCCESS(rv, rv); // make our char selected if our inner child text frame is selected PRBool isSelected = PR_FALSE; nsRect selectedRect; nsIFrame* firstChild = mFrames.FirstChild(); if (IsFrameInSelection(firstChild)) { selectedRect = firstChild->GetRect(); isSelected = PR_TRUE; } rv = mMathMLChar.Display(aBuilder, this, aLists, isSelected ? &selectedRect : nsnull); NS_ENSURE_SUCCESS(rv, rv); #if defined(NS_DEBUG) && defined(SHOW_BOUNDING_BOX) // for visual debug rv = DisplayBoundingMetrics(aBuilder, this, mReference, mBoundingMetrics, aLists); #endif } return rv; }