[Libreoffice-commits] core.git: sfx2/source
Bjoern Michaelsen
bjoern.michaelsen at canonical.com
Tue Oct 27 18:24:29 PDT 2015
sfx2/source/sidebar/TabBar.cxx | 35 ++++++++++++++++++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
New commits:
commit 8c5e922d66d154405029380374f088cee6578056
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Oct 28 01:58:43 2015 +0100
handle scrollwheel events in TabBar of Sidebar
- using the scrollwheel in the TabBar used to scroll the document:
- even though the deck next to it handles scroll event on its own
- thus there are two areas that arent even touching (separated by the
deck) scrolling the same area
- instead, now we capture mousewheel scrolls and switch through the
decks of the sidebar. This should also severely simplify navigating
them.
Change-Id: Ie2136f4ec67dedf72ff6b56d16356f6a12de74ea
diff --git a/sfx2/source/sidebar/TabBar.cxx b/sfx2/source/sidebar/TabBar.cxx
index f7fd362..a4100ce 100644
--- a/sfx2/source/sidebar/TabBar.cxx
+++ b/sfx2/source/sidebar/TabBar.cxx
@@ -253,8 +253,41 @@ void TabBar::DataChanged (const DataChangedEvent& rDataChangedEvent)
Window::DataChanged(rDataChangedEvent);
}
-bool TabBar::Notify (NotifyEvent&)
+bool TabBar::Notify (NotifyEvent& rEvent)
{
+ if(rEvent.GetType() == MouseNotifyEvent::COMMAND)
+ {
+ const CommandEvent& rCommandEvent = *rEvent.GetCommandEvent();
+ if(rCommandEvent.GetCommand() == CommandEventId::Wheel)
+ {
+ const CommandWheelData* pData = rCommandEvent.GetWheelData();
+ if(!pData->GetModifier() && (pData->GetMode() == CommandWheelMode::SCROLL))
+ {
+ auto pItem = std::find_if(maItems.begin(), maItems.end(),
+ [] (Item const& rItem) { return rItem.mpButton->IsChecked(); });
+ if(pItem == maItems.end())
+ return true;
+ if(pData->GetNotchDelta()<0)
+ {
+ if(pItem+1 == maItems.end())
+ return true;
+ ++pItem;
+ }
+ else
+ {
+ if(pItem == maItems.begin())
+ return true;
+ --pItem;
+ }
+ try
+ {
+ pItem->maDeckActivationFunctor(pItem->msDeckId);
+ }
+ catch(const css::uno::Exception&) {};
+ return true;
+ }
+ }
+ }
return false;
}
More information about the Libreoffice-commits
mailing list