123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- /* -*- 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 "nsGridCell.h"
- #include "nsFrame.h"
- #include "nsBox.h"
- #include "nsGridLayout2.h"
- nsGridCell::nsGridCell():mBoxInColumn(nullptr),mBoxInRow(nullptr)
- {
- MOZ_COUNT_CTOR(nsGridCell);
- }
-
- nsGridCell::~nsGridCell()
- {
- MOZ_COUNT_DTOR(nsGridCell);
- }
- nsSize
- nsGridCell::GetXULPrefSize(nsBoxLayoutState& aState)
- {
- nsSize sum(0,0);
- // take our 2 children and add them up.
- // we are as wide as the widest child plus its left offset
- // we are tall as the tallest child plus its top offset
- if (mBoxInColumn) {
- nsSize pref = mBoxInColumn->GetXULPrefSize(aState);
- nsBox::AddMargin(mBoxInColumn, pref);
- nsGridLayout2::AddOffset(mBoxInColumn, pref);
- nsBoxLayout::AddLargestSize(sum, pref);
- }
- if (mBoxInRow) {
- nsSize pref = mBoxInRow->GetXULPrefSize(aState);
- nsBox::AddMargin(mBoxInRow, pref);
- nsGridLayout2::AddOffset(mBoxInRow, pref);
- nsBoxLayout::AddLargestSize(sum, pref);
- }
- return sum;
- }
- nsSize
- nsGridCell::GetXULMinSize(nsBoxLayoutState& aState)
- {
- nsSize sum(0, 0);
- // take our 2 children and add them up.
- // we are as wide as the widest child plus its left offset
- // we are tall as the tallest child plus its top offset
- if (mBoxInColumn) {
- nsSize min = mBoxInColumn->GetXULMinSize(aState);
- nsBox::AddMargin(mBoxInColumn, min);
- nsGridLayout2::AddOffset(mBoxInColumn, min);
- nsBoxLayout::AddLargestSize(sum, min);
- }
- if (mBoxInRow) {
- nsSize min = mBoxInRow->GetXULMinSize(aState);
- nsBox::AddMargin(mBoxInRow, min);
- nsGridLayout2::AddOffset(mBoxInRow, min);
- nsBoxLayout::AddLargestSize(sum, min);
- }
- return sum;
- }
- nsSize
- nsGridCell::GetXULMaxSize(nsBoxLayoutState& aState)
- {
- nsSize sum(NS_INTRINSICSIZE, NS_INTRINSICSIZE);
- // take our 2 children and add them up.
- // we are as wide as the smallest child plus its left offset
- // we are tall as the shortest child plus its top offset
- if (mBoxInColumn) {
- nsSize max = mBoxInColumn->GetXULMaxSize(aState);
-
- nsBox::AddMargin(mBoxInColumn, max);
- nsGridLayout2::AddOffset(mBoxInColumn, max);
- nsBoxLayout::AddSmallestSize(sum, max);
- }
- if (mBoxInRow) {
- nsSize max = mBoxInRow->GetXULMaxSize(aState);
- nsBox::AddMargin(mBoxInRow, max);
- nsGridLayout2::AddOffset(mBoxInRow, max);
- nsBoxLayout::AddSmallestSize(sum, max);
- }
- return sum;
- }
- bool
- nsGridCell::IsXULCollapsed()
- {
- return ((mBoxInColumn && mBoxInColumn->IsXULCollapsed()) ||
- (mBoxInRow && mBoxInRow->IsXULCollapsed()));
- }
|