summaryrefslogtreecommitdiff
path: root/sc/source/ui
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2010-12-15 21:45:06 -0500
committerKohei Yoshida <kyoshida@novell.com>2010-12-15 21:45:06 -0500
commit162fe94b74c1827a0e878b50a149fc3f532e59e1 (patch)
tree5818f9a2bdd84afd2e5fe7ea478f3fe3ceb1b310 /sc/source/ui
parentb7e5a49fa33e83fc74ae578a6ee387017e839886 (diff)
Handle mouse wheel input on the row field control.
Only for vertical scrolling at the moment.
Diffstat (limited to 'sc/source/ui')
-rw-r--r--sc/source/ui/dbgui/fieldwnd.cxx24
-rw-r--r--sc/source/ui/inc/fieldwnd.hxx4
2 files changed, 28 insertions, 0 deletions
diff --git a/sc/source/ui/dbgui/fieldwnd.cxx b/sc/source/ui/dbgui/fieldwnd.cxx
index f014c221f690..cf2cbe9a9706 100644
--- a/sc/source/ui/dbgui/fieldwnd.cxx
+++ b/sc/source/ui/dbgui/fieldwnd.cxx
@@ -275,6 +275,20 @@ void ScDPFieldControlBase::DataChanged( const DataChangedEvent& rDCEvt )
Control::DataChanged( rDCEvt );
}
+void ScDPFieldControlBase::Command( const CommandEvent& rCEvt )
+{
+ if (rCEvt.GetCommand() == COMMAND_WHEEL)
+ {
+ const CommandWheelData* pData = rCEvt.GetWheelData();
+ if (pData->GetMode() == COMMAND_WHEEL_SCROLL && !pData->IsHorz())
+ {
+ // Handle vertical mouse wheel scrolls.
+ long nNotch = pData->GetNotchDelta(); // positive => up; negative => down
+ HandleWheelScroll(nNotch);
+ }
+ }
+}
+
void ScDPFieldControlBase::MouseButtonDown( const MouseEvent& rMEvt )
{
if( rMEvt.IsLeft() )
@@ -896,6 +910,11 @@ void ScDPHorFieldControl::ResetScrollBar()
}
}
+void ScDPHorFieldControl::HandleWheelScroll(long /*nNotch*/)
+{
+ // not handled for horizontal field controls.
+}
+
bool ScDPHorFieldControl::GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize)
{
if (nPos >= mnFieldBtnColCount*mnFieldBtnRowCount)
@@ -1159,6 +1178,11 @@ void ScDPRowFieldControl::ResetScrollBar()
}
}
+void ScDPRowFieldControl::HandleWheelScroll(long nNotch)
+{
+ maScroll.DoScroll(maScroll.GetThumbPos() - nNotch);
+}
+
bool ScDPRowFieldControl::GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize)
{
if (nPos >= mnColumnBtnCount)
diff --git a/sc/source/ui/inc/fieldwnd.hxx b/sc/source/ui/inc/fieldwnd.hxx
index f68102184ffe..a8128fc1563b 100644
--- a/sc/source/ui/inc/fieldwnd.hxx
+++ b/sc/source/ui/inc/fieldwnd.hxx
@@ -88,6 +88,7 @@ public:
virtual void ScrollToShowSelection() = 0;
virtual void ScrollToEnd() = 0;
virtual void ResetScrollBar() = 0;
+ virtual void HandleWheelScroll(long nNotch) = 0;
/** Reads the FixedText's text with mnemonic and hides the FixedText. */
void UseMnemonic();
@@ -145,6 +146,7 @@ public:
virtual void Paint( const Rectangle& rRect );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
+ virtual void Command( const CommandEvent& rCEvt );
virtual void MouseButtonDown( const MouseEvent& rMEvt );
virtual void MouseButtonUp( const MouseEvent& rMEvt );
virtual void MouseMove( const MouseEvent& rMEvt );
@@ -257,6 +259,7 @@ public:
virtual void ScrollToEnd();
virtual void ScrollToShowSelection();
virtual void ResetScrollBar();
+ virtual void HandleWheelScroll(long nNotch);
private:
bool GetFieldBtnPosSize(size_t nPos, Point& rPos, Size& rSize);
@@ -321,6 +324,7 @@ public:
virtual void ScrollToEnd();
virtual void ScrollToShowSelection();
virtual void ResetScrollBar();
+ virtual void HandleWheelScroll(long nNotch);
protected:
virtual size_t CalcNewFieldIndex( SCsCOL nDX, SCsROW nDY ) const;