diff options
author | Kohei Yoshida <kohei@openoffice.org> | 2009-07-31 19:47:48 +0000 |
---|---|---|
committer | Kohei Yoshida <kohei@openoffice.org> | 2009-07-31 19:47:48 +0000 |
commit | ba3f18f4ab3a93264fd67ce956dfad96e74249f5 (patch) | |
tree | bdb3090ab2cbd36fda2f413bbbcbc43bebf8ebd7 /sc/source/ui/cctrl/dpcontrol.cxx | |
parent | 05b32c409e8984e3e24ee2a20d4bc21683f0b600 (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.cxx | 71 |
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 |