summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Lippka <christian.lippka@sun.com>2010-03-23 13:56:35 +0100
committerChristian Lippka <christian.lippka@sun.com>2010-03-23 13:56:35 +0100
commite95181408ebf1a010c9286e0059cccfeb6425619 (patch)
tree103349b395737bb1941a0f638c1e4d924466788d
parentc10f069c3385a7c55a9042315f7fe3a83fc56fd3 (diff)
adjusted spacing of menu items
-rw-r--r--svtools/source/control/toolbarmenu.cxx95
-rw-r--r--svtools/source/control/toolbarmenuimp.hxx4
2 files changed, 36 insertions, 63 deletions
diff --git a/svtools/source/control/toolbarmenu.cxx b/svtools/source/control/toolbarmenu.cxx
index a16f60bc5822..47c95ecb0038 100644
--- a/svtools/source/control/toolbarmenu.cxx
+++ b/svtools/source/control/toolbarmenu.cxx
@@ -591,102 +591,73 @@ Size ToolbarMenu::implCalcSize()
Size aSz;
Size aMaxImgSz;
long nMaxTextWidth = 0;
- long nMinMenuItemHeight = nFontHeight;
+ long nMinMenuItemHeight = nFontHeight+2;
sal_Bool bCheckable = sal_False;
const int nEntryCount = mpImpl->maEntryVector.size();
int nEntry;
const StyleSettings& rSettings = GetSettings().GetStyleSettings();
- if ( rSettings.GetUseImagesInMenus() )
- {
- nMinMenuItemHeight = 16;
+ const bool bUseImages = rSettings.GetUseImagesInMenus();
+ // get maximum image size
+ if( bUseImages )
+ {
for( nEntry = 0; nEntry < nEntryCount; nEntry++ )
{
ToolbarMenuEntry* pEntry = mpImpl->maEntryVector[nEntry];
if( pEntry && pEntry->mbHasImage )
{
- Size aImgSz = pEntry->maImage.GetSizePixel();
- if ( aImgSz.Height() > aMaxImgSz.Height() )
- aMaxImgSz.Height() = aImgSz.Height();
- if ( aImgSz.Height() > nMinMenuItemHeight )
- nMinMenuItemHeight = aImgSz.Height();
- break;
- }
- }
- }
-
- for( nEntry = 0; nEntry < nEntryCount; nEntry++ )
- {
- ToolbarMenuEntry* pEntry = mpImpl->maEntryVector[nEntry];
-
- if( pEntry )
- {
- pEntry->maSize.Height() = 0;
- pEntry->maSize.Width() = 0;
-
-
- if ( ( pEntry->mnBits ) & ( MIB_RADIOCHECK | MIB_CHECKABLE ) )
- bCheckable = sal_True;
-
- // Image:
- if( pEntry->mbHasImage )
- {
- Size aImgSz = pEntry->maImage.GetSizePixel();
- if ( (aImgSz.Width() + 4) > aMaxImgSz.Width() )
- aMaxImgSz.Width() = aImgSz.Width() + 4;
- if ( (aImgSz.Height() + 4) > aMaxImgSz.Height() )
- aMaxImgSz.Height() = aImgSz.Height() + 4;
- if ( (aImgSz.Height() + 4) > pEntry->maSize.Height() )
- pEntry->maSize.Height() = aImgSz.Height() + 4;
+ Size aImgSz( pEntry->maImage.GetSizePixel() );
+ nMinMenuItemHeight = std::max( nMinMenuItemHeight, aImgSz.Height() + 6 );
+ aMaxImgSz.Width() = std::max( aMaxImgSz.Width(), aImgSz.Width() );
}
}
}
- int gfxExtra = Max( nExtra, 7L );
+ mpImpl->mnCheckPos = nExtra;
+ mpImpl->mnImagePos = nExtra;
+ mpImpl->mnTextPos = mpImpl->mnImagePos + aMaxImgSz.Width();
if ( aMaxImgSz.Width() )
- mpImpl->mnTextPos += gfxExtra;
+ mpImpl->mnTextPos += std::max( nExtra, 7L );
if ( bCheckable )
mpImpl->mnTextPos += 16;
- mpImpl->mnCheckPos = nExtra;
- mpImpl->mnImagePos = nExtra;
- mpImpl->mnTextPos = mpImpl->mnImagePos + aMaxImgSz.Width();
-
+ // set heights, calc maximum width
for( nEntry = 0; nEntry < nEntryCount; nEntry++ )
{
ToolbarMenuEntry* pEntry = mpImpl->maEntryVector[nEntry];
if( pEntry )
{
+ if ( ( pEntry->mnBits ) & ( MIB_RADIOCHECK | MIB_CHECKABLE ) )
+ bCheckable = sal_True;
+
// Text:
- if( pEntry->mbHasText )
+ if( pEntry->mbHasText || pEntry->mbHasImage )
{
- long nTextWidth = GetCtrlTextWidth( pEntry->maText ) + mpImpl->mnTextPos;
- nMaxTextWidth = Max( nTextWidth, nMaxTextWidth );
+ pEntry->maSize.Height() = nMinMenuItemHeight;
- pEntry->maSize.Height() = Max( Max( GetTextHeight(), pEntry->maSize.Height() ), nMinMenuItemHeight );
+ if( pEntry->mbHasText )
+ {
+ long nTextWidth = GetCtrlTextWidth( pEntry->maText ) + mpImpl->mnTextPos + nExtra;
+ nMaxTextWidth = std::max( nTextWidth, nMaxTextWidth );
+ }
}
// Control:
else if( pEntry->mpControl )
{
Size aControlSize( pEntry->mpControl->GetOutputSizePixel() );
- nMaxTextWidth = Max( aControlSize.Width(), nMaxTextWidth );
- pEntry->maSize.Height() = Max( aControlSize.Height(), pEntry->maSize.Height() ) + 1;
+ nMaxTextWidth = std::max( aControlSize.Width(), nMaxTextWidth );
+ pEntry->maSize.Height() = aControlSize.Height() + 1;
}
- aSz.Height() += pEntry->maSize.Height();
- }
- else
- {
- aSz.Height() += SEPARATOR_HEIGHT;
+
}
}
aSz.Width() = nMaxTextWidth + (BORDER_X<<1);
- aSz.Height() += BORDER_Y<<1;
// positionate controls
int nY = BORDER_Y;
@@ -696,12 +667,12 @@ Size ToolbarMenu::implCalcSize()
if( pEntry )
{
+ pEntry->maSize.Width() = nMaxTextWidth;
+
if( pEntry->mpControl )
{
Size aControlSize( pEntry->mpControl->GetOutputSizePixel() );
Point aControlPos( (aSz.Width() - aControlSize.Width())>>1, nY);
- if( pEntry->mbHasText )
- aControlPos.X() += GetCtrlTextWidth( pEntry->maText ) + 4*gfxExtra;
pEntry->mpControl->SetPosPixel( aControlPos );
@@ -720,6 +691,8 @@ Size ToolbarMenu::implCalcSize()
}
}
+ aSz.Height() += nY + BORDER_Y;
+
return aSz;
}
@@ -1415,10 +1388,10 @@ void ToolbarMenu::implPaint( ToolbarMenuEntry* pThisOnly, bool bHighlighted )
aTmpPos.Y() += (pEntry->maSize.Height()-pEntry->maImage.GetSizePixel().Height())/2;
Rectangle aSelRect( aTmpPos, pEntry->maImage.GetSizePixel() );
- aSelRect.nLeft -= 2;
- aSelRect.nTop -= 2;
- aSelRect.nRight += 2;
- aSelRect.nBottom += 2;
+ aSelRect.nLeft -= 1;
+ aSelRect.nTop -= 1;
+ aSelRect.nRight += 1;
+ aSelRect.nBottom += 1;
DrawSelectionBackground( aSelRect, false, true, TRUE, TRUE );
}
else
diff --git a/svtools/source/control/toolbarmenuimp.hxx b/svtools/source/control/toolbarmenuimp.hxx
index d1c574da4d33..9e30ac24666c 100644
--- a/svtools/source/control/toolbarmenuimp.hxx
+++ b/svtools/source/control/toolbarmenuimp.hxx
@@ -61,8 +61,8 @@ typedef std::vector< ToolbarMenuEntry * > ToolbarMenuEntryVector;
const int EXTRAITEMHEIGHT = 0; // 4;
const int SEPARATOR_HEIGHT = 4;
const int TITLE_ID = -1;
-const int BORDER_X = 0;
-const int BORDER_Y = 0;
+const int BORDER_X = 2;
+const int BORDER_Y = 2;
// --------------------
// - ToolbarMenuEntry -