diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-02 17:16:47 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2011-11-04 22:40:25 -0400 |
commit | 62aa66e9d801bf2aeb4cd955e96cc2b896ec67d1 (patch) | |
tree | fa7a9df931e16be055fbf34d12cd8a511ff078ab /sc | |
parent | 3fc888c2c518631d80d46e1d260378f810b3d7fe (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.hxx | 4 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin.cxx | 27 | ||||
-rw-r--r-- | sc/source/ui/view/gridwin2.cxx | 2 | ||||
-rw-r--r-- | sc/source/ui/view/tabview.cxx | 5 |
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) |