summaryrefslogtreecommitdiff
path: root/sc/source/ui/view
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-11-18 15:26:58 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2011-11-18 15:26:58 -0500
commitab5c5c9d808a5f32d1646de9e1b5cab251b62269 (patch)
tree7f3c2dcd6977374070e6af9907e8f7d463abc8b3 /sc/source/ui/view
parentde171082fc55fd52e35a0d0528d47c1ff89191f9 (diff)
Fix painting of autofilter buttons.
Diffstat (limited to 'sc/source/ui/view')
-rw-r--r--sc/source/ui/view/gridwin.cxx54
1 files changed, 28 insertions, 26 deletions
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 29d9bd304345..4a0d0c9bbd9c 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -607,13 +607,25 @@ class AutoFilterOKAction : public ScMenuFloatingWindow::Action
ScGridWindow* mpWindow;
public:
AutoFilterOKAction(ScGridWindow* p) : mpWindow(p) {}
-
virtual void execute()
{
mpWindow->UpdateAutoFilterFromMenu();
}
};
+class AutoFilterPopupEndAction : public ScMenuFloatingWindow::Action
+{
+ ScGridWindow* mpWindow;
+ ScAddress maPos;
+public:
+ AutoFilterPopupEndAction(ScGridWindow* p, const ScAddress& rPos) :
+ mpWindow(p), maPos(rPos) {}
+ virtual void execute()
+ {
+ mpWindow->RefreshAutoFilterButton(maPos);
+ }
+};
+
class AddItemToEntry : public std::unary_function<rtl::OUString, void>
{
ScQueryEntry::QueryItemsType& mrItems;
@@ -651,6 +663,8 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
mpAutoFilterPopup.reset(new ScCheckListMenuWindow(this, pDoc));
mpAutoFilterPopup->setOKAction(new AutoFilterOKAction(this));
+ mpAutoFilterPopup->setPopupEndAction(
+ new AutoFilterPopupEndAction(this, ScAddress(nCol, nRow, nTab)));
std::auto_ptr<AutoFilterData> pData(new AutoFilterData);
pData->maPos = ScAddress(nCol, nRow, nTab);
@@ -708,6 +722,19 @@ void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
mpAutoFilterPopup->launch(aCellRect);
}
+void ScGridWindow::RefreshAutoFilterButton(const ScAddress& rPos)
+{
+ if (mpFilterButton)
+ {
+ bool bFilterActive = IsAutoFilterActive(rPos.Col(), rPos.Row(), rPos.Tab());
+ mpFilterButton->setHasHiddenMember(bFilterActive);
+ mpFilterButton->setPopupPressed(false);
+ HideCursor();
+ mpFilterButton->draw();
+ ShowCursor();
+ }
+}
+
void ScGridWindow::UpdateAutoFilterFromMenu()
{
const AutoFilterData* pData =
@@ -1980,20 +2007,6 @@ void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
if (nMouseStatus == SC_GM_FILTER)
{
- if ( pFilterBox && pFilterBox->GetMode() == SC_FILTERBOX_FILTER )
- {
- if (mpFilterButton)
- {
- bool bFilterActive = IsAutoFilterActive(
- pFilterBox->GetCol(), pFilterBox->GetRow(), pViewData->GetTabNo() );
-
- mpFilterButton->setHasHiddenMember(bFilterActive);
- mpFilterButton->setPopupPressed(false);
- HideCursor();
- mpFilterButton->draw();
- ShowCursor();
- }
- }
nMouseStatus = SC_GM_NONE;
ReleaseMouse();
return; // da muss nix mehr passieren
@@ -2433,17 +2446,6 @@ void ScGridWindow::MouseMove( const MouseEvent& rMEvt )
{
nButtonDown = 0;
nMouseStatus = SC_GM_NONE;
- if ( pFilterBox->GetMode() == SC_FILTERBOX_FILTER )
- {
- if (mpFilterButton)
- {
- mpFilterButton->setHasHiddenMember(false);
- mpFilterButton->setPopupPressed(false);
- HideCursor();
- mpFilterButton->draw();
- ShowCursor();
- }
- }
ReleaseMouse();
pFilterBox->MouseButtonDown( MouseEvent( aRelPos, 1, MOUSE_SIMPLECLICK, MOUSE_LEFT ) );
return;