summaryrefslogtreecommitdiff
path: root/sc/source/ui/cctrl/dpcontrol.cxx
diff options
context:
space:
mode:
authorKohei Yoshida <kohei@openoffice.org>2009-07-31 19:47:48 +0000
committerKohei Yoshida <kohei@openoffice.org>2009-07-31 19:47:48 +0000
commitba3f18f4ab3a93264fd67ce956dfad96e74249f5 (patch)
treebdb3090ab2cbd36fda2f413bbbcbc43bebf8ebd7 /sc/source/ui/cctrl/dpcontrol.cxx
parent05b32c409e8984e3e24ee2a20d4bc21683f0b600 (diff)
Draw the autofilter arrow button the same way as the field popup button. This will temporarily break autofilter's push animation and mouse pointer hit analysis. Also made the popup button a little wider.
Diffstat (limited to 'sc/source/ui/cctrl/dpcontrol.cxx')
-rw-r--r--sc/source/ui/cctrl/dpcontrol.cxx71
1 files changed, 40 insertions, 31 deletions
diff --git a/sc/source/ui/cctrl/dpcontrol.cxx b/sc/source/ui/cctrl/dpcontrol.cxx
index 726c6dd660bd..db05af97b8df 100644
--- a/sc/source/ui/cctrl/dpcontrol.cxx
+++ b/sc/source/ui/cctrl/dpcontrol.cxx
@@ -52,6 +52,7 @@ using ::std::hash_map;
ScDPFieldButton::ScDPFieldButton(OutputDevice* pOutDev, const StyleSettings* pStyle) :
mpOutDev(pOutDev),
mpStyle(pStyle),
+ mbBaseButton(true),
mbPopupButton(false),
mbHasHiddenMember(false)
{
@@ -72,6 +73,11 @@ void ScDPFieldButton::setBoundingBox(const Point& rPos, const Size& rSize)
maSize = rSize;
}
+void ScDPFieldButton::setDrawBaseButton(bool b)
+{
+ mbBaseButton = b;
+}
+
void ScDPFieldButton::setDrawPopupButton(bool b)
{
mbPopupButton = b;
@@ -86,33 +92,36 @@ void ScDPFieldButton::draw()
{
const long nMargin = 2;
- // Background
- Rectangle aRect(maPos, maSize);
- mpOutDev->SetLineColor(mpStyle->GetFaceColor());
- mpOutDev->SetFillColor(mpStyle->GetFaceColor());
- mpOutDev->DrawRect(aRect);
-
- // Border lines
- mpOutDev->SetLineColor(mpStyle->GetLightColor());
- mpOutDev->DrawLine(Point(maPos), Point(maPos.X(), maPos.Y()+maSize.Height()-1));
- mpOutDev->DrawLine(Point(maPos), Point(maPos.X()+maSize.Width()-1, maPos.Y()));
-
- mpOutDev->SetLineColor(mpStyle->GetShadowColor());
- mpOutDev->DrawLine(Point(maPos.X(), maPos.Y()+maSize.Height()-1),
- Point(maPos.X()+maSize.Width()-1, maPos.Y()+maSize.Height()-1));
- mpOutDev->DrawLine(Point(maPos.X()+maSize.Width()-1, maPos.Y()),
- Point(maPos.X()+maSize.Width()-1, maPos.Y()+maSize.Height()-1));
-
- // Field name
- Font aTextFont( mpStyle->GetLabelFont() );
- aTextFont.SetHeight(12);
- mpOutDev->SetFont(aTextFont);
-
- Point aTextPos = maPos;
- long nTHeight = mpOutDev->GetTextHeight();
- aTextPos.setX(maPos.getX() + nMargin);
- aTextPos.setY(maPos.getY() + (maSize.Height()-nTHeight)/2);
- mpOutDev->DrawText(aTextPos, maText);
+ if (mbBaseButton)
+ {
+ // Background
+ Rectangle aRect(maPos, maSize);
+ mpOutDev->SetLineColor(mpStyle->GetFaceColor());
+ mpOutDev->SetFillColor(mpStyle->GetFaceColor());
+ mpOutDev->DrawRect(aRect);
+
+ // Border lines
+ mpOutDev->SetLineColor(mpStyle->GetLightColor());
+ mpOutDev->DrawLine(Point(maPos), Point(maPos.X(), maPos.Y()+maSize.Height()-1));
+ mpOutDev->DrawLine(Point(maPos), Point(maPos.X()+maSize.Width()-1, maPos.Y()));
+
+ mpOutDev->SetLineColor(mpStyle->GetShadowColor());
+ mpOutDev->DrawLine(Point(maPos.X(), maPos.Y()+maSize.Height()-1),
+ Point(maPos.X()+maSize.Width()-1, maPos.Y()+maSize.Height()-1));
+ mpOutDev->DrawLine(Point(maPos.X()+maSize.Width()-1, maPos.Y()),
+ Point(maPos.X()+maSize.Width()-1, maPos.Y()+maSize.Height()-1));
+
+ // Field name
+ Font aTextFont( mpStyle->GetLabelFont() );
+ aTextFont.SetHeight(12);
+ mpOutDev->SetFont(aTextFont);
+
+ Point aTextPos = maPos;
+ long nTHeight = mpOutDev->GetTextHeight();
+ aTextPos.setX(maPos.getX() + nMargin);
+ aTextPos.setY(maPos.getY() + (maSize.Height()-nTHeight)/2);
+ mpOutDev->DrawText(aTextPos, maText);
+ }
if (mbPopupButton)
drawPopupButton();
@@ -122,8 +131,8 @@ void ScDPFieldButton::getPopupBoundingBox(Point& rPos, Size& rSize) const
{
long nW = maSize.getWidth()*0.5;
long nH = maSize.getHeight();
- if (nW > 16)
- nW = 16;
+ if (nW > 18)
+ nW = 18;
if (nH > 18)
nH = 18;
@@ -144,9 +153,9 @@ void ScDPFieldButton::drawPopupButton()
Size aSize;
getPopupBoundingBox(aPos, aSize);
- // outer black border
+ // Background & outer black border
mpOutDev->SetLineColor(COL_BLACK);
- mpOutDev->SetFillColor();
+ mpOutDev->SetFillColor(mpStyle->GetFaceColor());
mpOutDev->DrawRect(Rectangle(aPos, aSize));
// border lines