Author: af
Date: Tue Apr 9 12:52:25 2013
New Revision: 1466002
URL: http://svn.apache.org/r1466002
Log:
i121420: Fixed sizing and positioning of decks.
Modified:
openoffice/branches/sidebar/main/sfx2/source/sidebar/Deck.cxx
openoffice/branches/sidebar/main/sfx2/source/sidebar/DeckLayouter.cxx
Modified: openoffice/branches/sidebar/main/sfx2/source/sidebar/Deck.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sfx2/source/sidebar/Deck.cxx?rev=1466002&r1=1466001&r2=1466002&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sfx2/source/sidebar/Deck.cxx (original)
+++ openoffice/branches/sidebar/main/sfx2/source/sidebar/Deck.cxx Tue Apr 9
12:52:25 2013
@@ -78,7 +78,6 @@ Deck::Deck (
mpVerticalScrollBar->SetScrollHdl(LINK(this, Deck,
HandleVerticalScrollBarChange));
#ifdef DEBUG
- OSL_TRACE("creating Deck at %x", this);
SetText(A2S("Deck"));
mpScrollClipWindow->SetText(A2S("ScrollClipWindow"));
mpFiller->SetText(A2S("Filler"));
@@ -91,7 +90,6 @@ Deck::Deck (
Deck::~Deck (void)
{
- OSL_TRACE("destroying Deck at %x", this);
Dispose();
// We have to explicitly trigger the destruction of panels.
@@ -117,7 +115,6 @@ void Deck::Dispose (void)
{
(*iPanel)->Dispose();
OSL_ASSERT(iPanel->unique());
- OSL_TRACE("panel has %d references", iPanel->use_count());
iPanel->reset();
}
}
@@ -243,7 +240,7 @@ const SharedPanelContainer& Deck::GetPan
void Deck::RequestLayout (void)
{
- PrintWindowTree();
+ // PrintWindowTree();
DeckLayouter::LayoutDeck(
GetContentArea(),
Modified: openoffice/branches/sidebar/main/sfx2/source/sidebar/DeckLayouter.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/sidebar/main/sfx2/source/sidebar/DeckLayouter.cxx?rev=1466002&r1=1466001&r2=1466002&view=diff
==============================================================================
--- openoffice/branches/sidebar/main/sfx2/source/sidebar/DeckLayouter.cxx
(original)
+++ openoffice/branches/sidebar/main/sfx2/source/sidebar/DeckLayouter.cxx Tue
Apr 9 12:52:25 2013
@@ -176,16 +176,22 @@ Rectangle DeckLayouter::LayoutPanels (
eMode==Preferred
? nTotalPreferredHeight + nTotalDecorationHeight
: aBox.GetHeight());
+ sal_Int32 nY = rVerticalScrollBar.GetThumbPos();
+ if (nContentHeight-nY < aBox.GetHeight())
+ nY = nContentHeight-aBox.GetHeight();
+ if (nY < 0)
+ nY = 0;
rScrollContainer.SetPosSizePixel(
0,
- 0,
+ -nY,
nWidth,
nContentHeight);
if (bShowVerticalScrollBar)
SetupVerticalScrollBar(rVerticalScrollBar, nContentHeight,
aBox.GetHeight());
- aBox.Top() += PlacePanels(rLayoutItems, nWidth, eMode, rScrollContainer);
+ const sal_Int32 nUsedHeight (PlacePanels(rLayoutItems, nWidth, eMode,
rScrollContainer));
+ aBox.Top() += nUsedHeight;
return aBox;
}
@@ -255,7 +261,6 @@ sal_Int32 DeckLayouter::PlacePanels (
}
// Place the panel.
- OSL_TRACE("panel %d: placing @%d +%d", iItem->mnPanelIndex, nY,
nPanelHeight);
rPanel.SetPosSizePixel(0, nY, nWidth, nPanelHeight);
nY += nPanelHeight;
@@ -314,7 +319,7 @@ void DeckLayouter::GetRequestedSizes (
// Show the title bar and a separator above and below
// the title bar.
rAvailableHeight -= nPanelTitleBarHeight;
- rAvailableHeight -= 2*nDeckSeparatorHeight;
+ rAvailableHeight -= nDeckSeparatorHeight;
}
if (iItem->mpPanel->IsExpanded())
@@ -365,9 +370,6 @@ void DeckLayouter::DistributeHeights (
iItem->mnWeight = nContainerHeight - nBaseHeight;
nTotalWeight += iItem->mnWeight;
}
- OSL_TRACE("panel %d: base height is %d, weight is %d, min/max/pref are
%d/%d/%d",
- nIndex, nBaseHeight, iItem->mnWeight,
- iItem->maLayoutSize.Minimum, iItem->maLayoutSize.Maximum,
iItem->maLayoutSize.Preferred);
}
if (nTotalWeight == 0)
@@ -388,7 +390,6 @@ void DeckLayouter::DistributeHeights (
nDistributedHeight =
::std::max<sal_Int32>(0,iItem->maLayoutSize.Maximum - nBaseHeight);
}
iItem->mnDistributedHeight = nDistributedHeight;
- OSL_TRACE("panel %d: distributed height is %d", nIndex,
nDistributedHeight);
nRemainingHeightToDistribute -= nDistributedHeight;
}
@@ -415,9 +416,6 @@ void DeckLayouter::DistributeHeights (
if (iItem->maLayoutSize.Maximum < 0)
{
iItem->mnDistributedHeight += nAdditionalHeightPerPanel +
nAdditionalHeightForFirstPanel;
- OSL_TRACE("panel %d: additionl height is %d",
- iItem->mnPanelIndex,
- nAdditionalHeightPerPanel + nAdditionalHeightForFirstPanel);
nRemainingHeightToDistribute -= nAdditionalHeightPerPanel +
nAdditionalHeightForFirstPanel;
}
}