gecko-dev/layout/xul/grid/nsGridRowLeafFrame.cpp
L. David Baron ff032066f9 Bug 1053986 - Rename nsIFrame::IsHorizontal to IsXULHorizontal, and related methods. r=dholbert
This is a manual subset of changes written with sed, over .h and .cpp
files in layout/.

This also renames a static method on nsSprocketLayout.

Note that nsFlexContainerFrame and nsRangeFrame also have IsHorizontal
methods that are not renamed here, but this can be found to be
relatively safe because none of the IsHorizontal methods are virtual.

MozReview-Commit-ID: Jsdy7I4Q7mX
2016-04-20 21:28:34 -07:00

94 lines
2.4 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
//
// Eric Vaughan
// Netscape Communications
//
// See documentation in associated header file
//
#include "nsGridRowLeafFrame.h"
#include "nsGridRowLeafLayout.h"
#include "nsGridRow.h"
#include "nsBoxLayoutState.h"
#include "nsGridLayout2.h"
already_AddRefed<nsBoxLayout> NS_NewGridRowLeafLayout();
nsIFrame*
NS_NewGridRowLeafFrame(nsIPresShell* aPresShell,
nsStyleContext* aContext)
{
nsCOMPtr<nsBoxLayout> layout = NS_NewGridRowLeafLayout();
return new (aPresShell) nsGridRowLeafFrame(aContext, false, layout);
}
NS_IMPL_FRAMEARENA_HELPERS(nsGridRowLeafFrame)
/*
* Our border and padding could be affected by our columns or rows.
* Let's go check it out.
*/
nsresult
nsGridRowLeafFrame::GetXULBorderAndPadding(nsMargin& aBorderAndPadding)
{
// if our columns have made our padding larger add it in.
nsresult rv = nsBoxFrame::GetXULBorderAndPadding(aBorderAndPadding);
nsIGridPart* part = nsGrid::GetPartFromBox(this);
if (!part)
return rv;
int32_t index = 0;
nsGrid* grid = part->GetGrid(this, &index);
if (!grid)
return rv;
bool isHorizontal = IsXULHorizontal();
int32_t firstIndex = 0;
int32_t lastIndex = 0;
nsGridRow* firstRow = nullptr;
nsGridRow* lastRow = nullptr;
grid->GetFirstAndLastRow(firstIndex, lastIndex, firstRow, lastRow, isHorizontal);
// only the first and last rows can be affected.
if (firstRow && firstRow->GetBox() == this) {
nscoord top = 0;
nscoord bottom = 0;
grid->GetRowOffsets(firstIndex, top, bottom, isHorizontal);
if (isHorizontal) {
if (top > aBorderAndPadding.top)
aBorderAndPadding.top = top;
} else {
if (top > aBorderAndPadding.left)
aBorderAndPadding.left = top;
}
}
if (lastRow && lastRow->GetBox() == this) {
nscoord top = 0;
nscoord bottom = 0;
grid->GetRowOffsets(lastIndex, top, bottom, isHorizontal);
if (isHorizontal) {
if (bottom > aBorderAndPadding.bottom)
aBorderAndPadding.bottom = bottom;
} else {
if (bottom > aBorderAndPadding.right)
aBorderAndPadding.right = bottom;
}
}
return rv;
}