summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2011-11-02 17:16:47 -0400
committerKohei Yoshida <kohei.yoshida@suse.com>2011-11-04 22:40:25 -0400
commit62aa66e9d801bf2aeb4cd955e96cc2b896ec67d1 (patch)
treefa7a9df931e16be055fbf34d12cd8a511ff078ab /sc
parent3fc888c2c518631d80d46e1d260378f810b3d7fe (diff)
Separate the code path and add new method for autofilter popup launch.
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/inc/gridwin.hxx4
-rw-r--r--sc/source/ui/view/gridwin.cxx27
-rw-r--r--sc/source/ui/view/gridwin2.cxx2
-rw-r--r--sc/source/ui/view/tabview.cxx5
4 files changed, 33 insertions, 5 deletions
diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx
index 08e47a332e55..0bb6b4de0a6b 100644
--- a/sc/source/ui/inc/gridwin.hxx
+++ b/sc/source/ui/inc/gridwin.hxx
@@ -144,6 +144,7 @@ private:
ScFilterListBox* pFilterBox;
FloatingWindow* pFilterFloat;
+ boost::scoped_ptr<ScCheckListMenuWindow> mpAutoFilterPopup;
boost::scoped_ptr<ScCheckListMenuWindow> mpDPFieldPopup;
boost::scoped_ptr<ScDPFieldButton> mpFilterButton;
@@ -338,9 +339,10 @@ public:
void UpdateFormulas();
- void DoAutoFilterMenue( SCCOL nCol, SCROW nRow, bool bDataSelect );
+ void LaunchDataSelectMenu( SCCOL nCol, SCROW nRow, bool bDataSelect );
void DoScenarioMenue( const ScRange& rScenRange );
+ void LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow);
void LaunchPageFieldMenu( SCCOL nCol, SCROW nRow );
void LaunchDPFieldMenu( SCCOL nCol, SCROW nRow );
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 195bc87032e5..558bd85ab7d0 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -426,6 +426,7 @@ ScGridWindow::ScGridWindow( Window* pParent, ScViewData* pData, ScSplitPos eWhic
pNoteMarker( NULL ),
pFilterBox( NULL ),
pFilterFloat( NULL ),
+ mpAutoFilterPopup(NULL),
mpDPFieldPopup(NULL),
mpFilterButton(NULL),
nCursorHideCount( 0 ),
@@ -584,6 +585,22 @@ void ScGridWindow::ExecPageFieldSelect( SCCOL nCol, SCROW nRow, sal_Bool bHasSel
}
}
+void ScGridWindow::LaunchAutoFilterMenu(SCCOL nCol, SCROW nRow)
+{
+ mpAutoFilterPopup.reset(new ScCheckListMenuWindow(this, pViewData->GetDocument()));
+ Point aPos = pViewData->GetScrPos(nCol, nRow, eWhich);
+ long nSizeX = 0;
+ long nSizeY = 0;
+ pViewData->GetMergeSizePixel(nCol, nRow, nSizeX, nSizeY);
+ Rectangle aCellRect(OutputToScreenPixel(aPos), Size(nSizeX, nSizeY));
+
+ // Populate the check box list.
+
+
+ mpAutoFilterPopup->SetPopupModeEndHdl( LINK(this, ScGridWindow, PopupModeEndHdl) );
+ mpAutoFilterPopup->StartPopupMode(aCellRect, (FLOATWIN_POPUPMODE_DOWN | FLOATWIN_POPUPMODE_GRABFOCUS));
+}
+
void ScGridWindow::LaunchPageFieldMenu( SCCOL nCol, SCROW nRow )
{
//! merge position/size handling with DoAutoFilterMenue
@@ -880,7 +897,13 @@ void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange )
CaptureMouse();
}
-void ScGridWindow::DoAutoFilterMenue( SCCOL nCol, SCROW nRow, bool bDataSelect )
+namespace {
+
+
+
+}
+
+void ScGridWindow::LaunchDataSelectMenu( SCCOL nCol, SCROW nRow, bool bDataSelect )
{
delete pFilterBox;
delete pFilterFloat;
@@ -1690,7 +1713,7 @@ void ScGridWindow::HandleMouseButtonDown( const MouseEvent& rMEvt )
Rectangle aButtonRect = GetListValButtonRect( aListValPos );
if ( aButtonRect.IsInside( aPos ) )
{
- DoAutoFilterMenue( aListValPos.Col(), aListValPos.Row(), sal_True );
+ LaunchDataSelectMenu( aListValPos.Col(), aListValPos.Row(), true );
nMouseStatus = SC_GM_FILTER; // not set in DoAutoFilterMenue for bDataSelect
CaptureMouse();
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index 8377fdf68c26..aa0ecc5d49ec 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -165,7 +165,7 @@ bool ScGridWindow::DoAutoFilterButton( SCCOL nCol, SCROW nRow, const MouseEvent&
HideCursor();
mpFilterButton->draw();
ShowCursor();
- DoAutoFilterMenue(nCol, nRow, false);
+ LaunchAutoFilterMenu(nCol, nRow);
return true;
}
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index b715c3d6f5bf..6e6863a78df1 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -2403,7 +2403,10 @@ void ScTabView::StartDataSelect()
aViewData.GetDocument()->GetAttr(
nCol, nRow, aViewData.GetTabNo(), ATTR_MERGE_FLAG));
- pWin->DoAutoFilterMenue(nCol, nRow, !pAttr->HasAutoFilter());
+ if (pAttr->HasAutoFilter())
+ pWin->LaunchAutoFilterMenu(nCol, nRow);
+ else
+ pWin->LaunchDataSelectMenu(nCol, nRow, true);
}
void ScTabView::EnableRefInput(bool bFlag)