This is an automated email from the ASF dual-hosted git repository.
mseidel pushed a commit to branch AOO42X
in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/AOO42X by this push:
new 5b60b74392 Cleanup
5b60b74392 is described below
commit 5b60b7439275c53cf879aca6d386e7ebb51475da
Author: mseidel <[email protected]>
AuthorDate: Thu Mar 5 17:46:25 2026 +0100
Cleanup
(cherry picked from commit ce63937a359e5652bda33aeb846f05848781df56)
---
main/cui/source/dialogs/cuitbxform.cxx | 9 +-
.../controller/SlsSelectionFunction.cxx | 2528 +++++++++-----------
2 files changed, 1125 insertions(+), 1412 deletions(-)
diff --git a/main/cui/source/dialogs/cuitbxform.cxx
b/main/cui/source/dialogs/cuitbxform.cxx
index 3294d42762..608adcaf3d 100644
--- a/main/cui/source/dialogs/cuitbxform.cxx
+++ b/main/cui/source/dialogs/cuitbxform.cxx
@@ -19,8 +19,6 @@
*
*************************************************************/
-
-
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_cui.hxx"
@@ -33,7 +31,6 @@
#include <sfx2/dispatch.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/fixed.hxx>
-#include <vcl/sound.hxx>
#include <dialmgr.hxx>
#include <cuires.hrc>
#include "cuitbxform.hxx"
@@ -52,10 +49,12 @@ FmInputRecordNoDialog::FmInputRecordNoDialog(Window *
pParent)
,m_aOk(this, CUI_RES(1))
,m_aCancel(this, CUI_RES(1))
{
- m_aRecordNo.SetMin(1);
- m_aRecordNo.SetMax(0x7FFFFFFF);
+ m_aRecordNo.SetMin(1);
+ m_aRecordNo.SetMax(0x7FFFFFFF);
m_aRecordNo.SetStrictFormat(sal_True);
m_aRecordNo.SetDecimalDigits(0);
FreeResource();
}
+
+/* vim: set noet sw=4 ts=4: */
diff --git a/main/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
b/main/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index e4388ade2b..fabaf336f9 100644
--- a/main/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/main/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -19,8 +19,6 @@
*
*************************************************************/
-
-
#include "precompiled_sd.hxx"
#include "controller/SlsSelectionFunction.hxx"
@@ -62,7 +60,6 @@
#include "app.hrc"
#include "sdresid.hxx"
#include "strings.hrc"
-#include <vcl/sound.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/dispatch.hxx>
#include <svx/svdpagv.hxx>
@@ -72,44 +69,42 @@
#include <boost/optional.hpp>
namespace {
-static const sal_uInt32 SINGLE_CLICK (0x00000001);
-static const sal_uInt32 DOUBLE_CLICK (0x00000002);
-static const sal_uInt32 LEFT_BUTTON (0x00000010);
-static const sal_uInt32 RIGHT_BUTTON (0x00000020);
-static const sal_uInt32 MIDDLE_BUTTON (0x00000040);
-static const sal_uInt32 BUTTON_DOWN (0x00000100);
-static const sal_uInt32 BUTTON_UP (0x00000200);
-static const sal_uInt32 MOUSE_MOTION (0x00000400);
-static const sal_uInt32 MOUSE_DRAG (0x00000800);
+static const sal_uInt32 SINGLE_CLICK (0x00000001);
+static const sal_uInt32 DOUBLE_CLICK (0x00000002);
+static const sal_uInt32 LEFT_BUTTON (0x00000010);
+static const sal_uInt32 RIGHT_BUTTON (0x00000020);
+static const sal_uInt32 MIDDLE_BUTTON (0x00000040);
+static const sal_uInt32 BUTTON_DOWN (0x00000100);
+static const sal_uInt32 BUTTON_UP (0x00000200);
+static const sal_uInt32 MOUSE_MOTION (0x00000400);
+static const sal_uInt32 MOUSE_DRAG (0x00000800);
// The rest leaves the lower 16 bit untouched so that it can be used with
// key codes.
-static const sal_uInt32 OVER_SELECTED_PAGE (0x00010000);
-static const sal_uInt32 OVER_UNSELECTED_PAGE (0x00020000);
-static const sal_uInt32 OVER_FADE_INDICATOR (0x00040000);
-static const sal_uInt32 OVER_BUTTON_AREA (0x00080000);
-static const sal_uInt32 OVER_BUTTON (0x00100000);
-static const sal_uInt32 SHIFT_MODIFIER (0x00200000);
-static const sal_uInt32 CONTROL_MODIFIER (0x00400000);
+static const sal_uInt32 OVER_SELECTED_PAGE (0x00010000);
+static const sal_uInt32 OVER_UNSELECTED_PAGE (0x00020000);
+static const sal_uInt32 OVER_FADE_INDICATOR (0x00040000);
+static const sal_uInt32 OVER_BUTTON_AREA (0x00080000);
+static const sal_uInt32 OVER_BUTTON (0x00100000);
+static const sal_uInt32 SHIFT_MODIFIER (0x00200000);
+static const sal_uInt32 CONTROL_MODIFIER (0x00400000);
-static const sal_uInt32 KEY_EVENT (0x10000000);
+static const sal_uInt32 KEY_EVENT (0x10000000);
// Some absent events are defined so they can be expressed explicitly.
-static const sal_uInt32 NO_MODIFIER (0x00000000);
-static const sal_uInt32 NOT_OVER_PAGE (0x00000000);
+static const sal_uInt32 NO_MODIFIER (0x00000000);
+static const sal_uInt32 NOT_OVER_PAGE (0x00000000);
// Masks
-static const sal_uInt32 MODIFIER_MASK (SHIFT_MODIFIER |
CONTROL_MODIFIER);
-static const sal_uInt32 BUTTON_MASK (LEFT_BUTTON | RIGHT_BUTTON |
MIDDLE_BUTTON);
+static const sal_uInt32 MODIFIER_MASK (SHIFT_MODIFIER |
CONTROL_MODIFIER);
+static const sal_uInt32 BUTTON_MASK (LEFT_BUTTON |
RIGHT_BUTTON | MIDDLE_BUTTON);
} // end of anonymous namespace
-
-
// Define some macros to make the following switch statement more readable.
-#define ANY_MODIFIER(code) \
- code|NO_MODIFIER: \
- case code|SHIFT_MODIFIER: \
- case code|CONTROL_MODIFIER
+#define ANY_MODIFIER(code) \
+ code|NO_MODIFIER: \
+ case code|SHIFT_MODIFIER: \
+ case code|CONTROL_MODIFIER
namespace sd { namespace slidesorter { namespace controller {
@@ -118,1904 +113,1623 @@ namespace sd { namespace slidesorter { namespace
controller {
class SelectionFunction::EventDescriptor
{
public:
- Point maMousePosition;
- Point maMouseModelPosition;
- model::SharedPageDescriptor mpHitDescriptor;
- SdrPage* mpHitPage;
- sal_uInt32 mnEventCode;
- bool mbIsOverButton;
- InsertionIndicatorHandler::Mode meDragMode;
- bool mbMakeSelectionVisible;
- bool mbIsLeaving;
-
- EventDescriptor (
- sal_uInt32 nEventType,
- const MouseEvent& rEvent,
- SlideSorter& rSlideSorter);
- EventDescriptor (
- sal_uInt32 nEventType,
- const AcceptDropEvent& rEvent,
- const sal_Int8 nDragAction,
- SlideSorter& rSlideSorter);
- EventDescriptor (
- const KeyEvent& rEvent,
- SlideSorter& rSlideSorter);
-
- void SetDragMode (const InsertionIndicatorHandler::Mode eMode);
+ Point maMousePosition;
+ Point maMouseModelPosition;
+ model::SharedPageDescriptor mpHitDescriptor;
+ SdrPage* mpHitPage;
+ sal_uInt32 mnEventCode;
+ bool mbIsOverButton;
+ InsertionIndicatorHandler::Mode meDragMode;
+ bool mbMakeSelectionVisible;
+ bool mbIsLeaving;
+
+ EventDescriptor (
+ sal_uInt32 nEventType,
+ const MouseEvent& rEvent,
+ SlideSorter& rSlideSorter);
+ EventDescriptor (
+ sal_uInt32 nEventType,
+ const AcceptDropEvent& rEvent,
+ const sal_Int8 nDragAction,
+ SlideSorter& rSlideSorter);
+ EventDescriptor (
+ const KeyEvent& rEvent,
+ SlideSorter& rSlideSorter);
+
+ void SetDragMode (const InsertionIndicatorHandler::Mode eMode);
private:
- /** Compute a numerical code that describes a mouse event and that can
- be used for fast look up of the appropriate reaction.
- */
- sal_uInt32 EncodeMouseEvent (const MouseEvent& rEvent) const;
-
- /** Compute a numerical code that describes a key event and that can
- be used for fast look up of the appropriate reaction.
- */
- sal_uInt32 EncodeKeyEvent (const KeyEvent& rEvent) const;
-
- /** Compute a numerical code that describes the current state like
- whether the selection rectangle is visible or whether the page under
- the mouse or the one that has the focus is selected.
- */
- sal_uInt32 EncodeState (void) const;
+ /** Compute a numerical code that describes a mouse event and that can
+ be used for fast look up of the appropriate reaction.
+ */
+ sal_uInt32 EncodeMouseEvent (const MouseEvent& rEvent) const;
+
+ /** Compute a numerical code that describes a key event and that can
+ be used for fast look up of the appropriate reaction.
+ */
+ sal_uInt32 EncodeKeyEvent (const KeyEvent& rEvent) const;
+
+ /** Compute a numerical code that describes the current state like
+ whether the selection rectangle is visible or whether the page
under
+ the mouse or the one that has the focus is selected.
+ */
+ sal_uInt32 EncodeState (void) const;
};
-
-
-
//===== SelectionFunction::ModeHandler ========================================
class SelectionFunction::ModeHandler
{
public:
- ModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const bool bIsMouseOverIndicatorAllowed);
- virtual ~ModeHandler (void);
+ ModeHandler (
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const bool bIsMouseOverIndicatorAllowed);
+ virtual ~ModeHandler (void);
- virtual Mode GetMode (void) const = 0;
- virtual void Abort (void) = 0;
- virtual void ProcessEvent (EventDescriptor& rDescriptor);
+ virtual Mode GetMode (void) const = 0;
+ virtual void Abort (void) = 0;
+ virtual void ProcessEvent (EventDescriptor& rDescriptor);
- /** Set the selection to exactly the specified page and also set it as
- the current page.
- */
- void SetCurrentPage (const model::SharedPageDescriptor& rpDescriptor);
+ /** Set the selection to exactly the specified page and also set it as
+ the current page.
+ */
+ void SetCurrentPage (const model::SharedPageDescriptor& rpDescriptor);
- /// Deselect all pages.
- void DeselectAllPages (void);
- void SelectOnePage (const model::SharedPageDescriptor& rpDescriptor);
+ /// Deselect all pages.
+ void DeselectAllPages (void);
+ void SelectOnePage (const model::SharedPageDescriptor& rpDescriptor);
- /** When the view on which this selection function is working is the
- main view then the view is switched to the regular editing view.
- */
- void SwitchView (const model::SharedPageDescriptor& rpDescriptor);
+ /** When the view on which this selection function is working
is the
+ main view then the view is switched to the regular editing view.
+ */
+ void SwitchView (const model::SharedPageDescriptor& rpDescriptor);
- void StartDrag (
- const Point& rMousePosition,
- const InsertionIndicatorHandler::Mode eMode);
+ void StartDrag (
+ const Point& rMousePosition,
+ const InsertionIndicatorHandler::Mode eMode);
- bool IsMouseOverIndicatorAllowed (void) const;
+ bool IsMouseOverIndicatorAllowed (void) const;
protected:
- SlideSorter& mrSlideSorter;
- SelectionFunction& mrSelectionFunction;
+ SlideSorter& mrSlideSorter;
+ SelectionFunction& mrSelectionFunction;
- virtual bool ProcessButtonDownEvent (EventDescriptor& rDescriptor);
- virtual bool ProcessButtonUpEvent (EventDescriptor& rDescriptor);
- virtual bool ProcessMotionEvent (EventDescriptor& rDescriptor);
- virtual bool ProcessDragEvent (EventDescriptor& rDescriptor);
- virtual bool HandleUnprocessedEvent (EventDescriptor& rDescriptor);
+ virtual bool ProcessButtonDownEvent (EventDescriptor& rDescriptor);
+ virtual bool ProcessButtonUpEvent (EventDescriptor& rDescriptor);
+ virtual bool ProcessMotionEvent (EventDescriptor& rDescriptor);
+ virtual bool ProcessDragEvent (EventDescriptor& rDescriptor);
+ virtual bool HandleUnprocessedEvent (EventDescriptor& rDescriptor);
- void ReprocessEvent (EventDescriptor& rDescriptor);
+ void ReprocessEvent (EventDescriptor& rDescriptor);
private:
- const bool mbIsMouseOverIndicatorAllowed;
+ const bool mbIsMouseOverIndicatorAllowed;
};
-
-/** This is the default handler for processing events. It activates the
- multi selection or drag-and-drop when the right conditions are met.
+/** This is the default handler for processing events. It activates the
+ multi selection or drag-and-drop when the right conditions are met.
*/
class NormalModeHandler : public SelectionFunction::ModeHandler
{
public:
- NormalModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction);
- virtual ~NormalModeHandler (void);
+ NormalModeHandler (
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction);
+ virtual ~NormalModeHandler (void);
- virtual SelectionFunction::Mode GetMode (void) const;
- virtual void Abort (void);
+ virtual SelectionFunction::Mode GetMode (void) const;
+ virtual void Abort (void);
- void ResetButtonDownLocation (void);
+ void ResetButtonDownLocation (void);
protected:
- virtual bool ProcessButtonDownEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessDragEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessButtonDownEvent
(SelectionFunction::EventDescriptor& rDescriptor);
+ virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessDragEvent (SelectionFunction::EventDescriptor&
rDescriptor);
private:
- ::boost::optional<Point> maButtonDownLocation;
+ ::boost::optional<Point> maButtonDownLocation;
- /** Select all pages between and including the selection anchor and the
- specified page.
- */
- void RangeSelect (const model::SharedPageDescriptor& rpDescriptor);
+ /** Select all pages between and including the selection anchor and the
+ specified page.
+ */
+ void RangeSelect (const model::SharedPageDescriptor& rpDescriptor);
};
-
/** Handle events during a multi selection, which typically is started by
- pressing the left mouse button when not over a page.
+ pressing the left mouse button when not over a page.
*/
class MultiSelectionModeHandler : public SelectionFunction::ModeHandler
{
public:
- /** Start a rectangle selection at the given position.
- */
- MultiSelectionModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const Point& rMouseModelPosition,
- const sal_uInt32 nEventCode);
- virtual ~MultiSelectionModeHandler (void);
+ /** Start a rectangle selection at the given position.
+ */
+ MultiSelectionModeHandler (
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const Point& rMouseModelPosition,
+ const sal_uInt32 nEventCode);
+ virtual ~MultiSelectionModeHandler (void);
- virtual SelectionFunction::Mode GetMode (void) const;
- virtual void Abort (void);
- virtual void ProcessEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual SelectionFunction::Mode GetMode (void) const;
+ virtual void Abort (void);
+ virtual void ProcessEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- enum SelectionMode { SM_Normal, SM_Add, SM_Toggle };
+ enum SelectionMode { SM_Normal, SM_Add, SM_Toggle };
- void SetSelectionMode (const SelectionMode eSelectionMode);
- void SetSelectionModeFromModifier (const sal_uInt32 nEventCode);
+ void SetSelectionMode (const SelectionMode eSelectionMode);
+ void SetSelectionModeFromModifier (const sal_uInt32 nEventCode);
protected:
- virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool HandleUnprocessedEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool HandleUnprocessedEvent
(SelectionFunction::EventDescriptor& rDescriptor);
private:
- SelectionMode meSelectionMode;
- Point maSecondCorner;
- Pointer maSavedPointer;
- sal_Int32 mnAnchorIndex;
- sal_Int32 mnSecondIndex;
- view::ButtonBar::Lock maButtonBarLock;
-
- virtual void UpdateModelPosition (const Point& rMouseModelPosition);
- virtual void UpdateSelection (void);
-
- /** Update the rectangle selection so that the given position becomes
- the new second point of the selection rectangle.
- */
- void UpdatePosition (
- const Point& rMousePosition,
- const bool bAllowAutoScroll);
-
- void UpdateSelectionState (
- const model::SharedPageDescriptor& rpDescriptor,
- const bool bIsInSelection) const;
+ SelectionMode meSelectionMode;
+ Point maSecondCorner;
+ Pointer maSavedPointer;
+ sal_Int32 mnAnchorIndex;
+ sal_Int32 mnSecondIndex;
+ view::ButtonBar::Lock maButtonBarLock;
+
+ virtual void UpdateModelPosition (const Point& rMouseModelPosition);
+ virtual void UpdateSelection (void);
+
+ /** Update the rectangle selection so that the given position becomes
+ the new second point of the selection rectangle.
+ */
+ void UpdatePosition (
+ const Point& rMousePosition,
+ const bool bAllowAutoScroll);
+
+ void UpdateSelectionState (
+ const model::SharedPageDescriptor& rpDescriptor,
+ const bool bIsInSelection) const;
};
-
/** Handle events during drag-and-drop.
*/
class DragAndDropModeHandler : public SelectionFunction::ModeHandler
{
public:
- DragAndDropModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const Point& rMousePosition,
- ::Window* pWindow);
- virtual ~DragAndDropModeHandler (void);
+ DragAndDropModeHandler (
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const Point& rMousePosition,
+ ::Window* pWindow);
+ virtual ~DragAndDropModeHandler (void);
- virtual SelectionFunction::Mode GetMode (void) const;
- virtual void Abort (void);
+ virtual SelectionFunction::Mode GetMode (void) const;
+ virtual void Abort (void);
protected:
- virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessDragEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessDragEvent (SelectionFunction::EventDescriptor&
rDescriptor);
private:
- ::boost::scoped_ptr<DragAndDropContext> mpDragAndDropContext;
+ ::boost::scoped_ptr<DragAndDropContext> mpDragAndDropContext;
};
-
/** Handle events while the left mouse button is pressed over the button
- bar.
+ bar.
*/
class ButtonModeHandler : public SelectionFunction::ModeHandler
{
public:
- ButtonModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction);
- virtual ~ButtonModeHandler (void);
- virtual void Abort (void);
+ ButtonModeHandler (
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction);
+ virtual ~ButtonModeHandler (void);
+ virtual void Abort (void);
- virtual SelectionFunction::Mode GetMode (void) const;
+ virtual SelectionFunction::Mode GetMode (void) const;
protected:
- virtual bool ProcessButtonDownEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
- virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessButtonDownEvent
(SelectionFunction::EventDescriptor& rDescriptor);
+ virtual bool ProcessButtonUpEvent (SelectionFunction::EventDescriptor&
rDescriptor);
+ virtual bool ProcessMotionEvent (SelectionFunction::EventDescriptor&
rDescriptor);
};
-
-
-
//===== SelectionFunction =====================================================
TYPEINIT1(SelectionFunction, FuPoor);
-
SelectionFunction::SelectionFunction (
- SlideSorter& rSlideSorter,
- SfxRequest& rRequest)
- : FuPoor (
- rSlideSorter.GetViewShell(),
- rSlideSorter.GetContentWindow().get(),
- &rSlideSorter.GetView(),
- rSlideSorter.GetModel().GetDocument(),
- rRequest),
- mrSlideSorter(rSlideSorter),
- mrController(mrSlideSorter.GetController()),
- mbDragSelection(false),
- maInsertionMarkerBox(),
- mbProcessingMouseButtonDown(false),
- mnShiftKeySelectionAnchor(-1),
- mpModeHandler(new NormalModeHandler(rSlideSorter, *this))
+ SlideSorter& rSlideSorter,
+ SfxRequest& rRequest)
+ : FuPoor (
+ rSlideSorter.GetViewShell(),
+ rSlideSorter.GetContentWindow().get(),
+ &rSlideSorter.GetView(),
+ rSlideSorter.GetModel().GetDocument(),
+ rRequest),
+ mrSlideSorter(rSlideSorter),
+ mrController(mrSlideSorter.GetController()),
+ mbDragSelection(false),
+ maInsertionMarkerBox(),
+ mbProcessingMouseButtonDown(false),
+ mnShiftKeySelectionAnchor(-1),
+ mpModeHandler(new NormalModeHandler(rSlideSorter, *this))
{
}
-
-
-
SelectionFunction::~SelectionFunction (void)
{
- mpModeHandler.reset();
+ mpModeHandler.reset();
}
-
-
-
FunctionReference SelectionFunction::Create(
- SlideSorter& rSlideSorter,
- SfxRequest& rRequest)
+ SlideSorter& rSlideSorter,
+ SfxRequest& rRequest)
{
FunctionReference xFunc( new SelectionFunction( rSlideSorter, rRequest
) );
return xFunc;
}
-
-
-
sal_Bool SelectionFunction::MouseButtonDown (const MouseEvent& rEvent)
{
// #95491# remember button state for creation of own MouseEvents
SetMouseButtonCode (rEvent.GetButtons());
- aMDPos = rEvent.GetPosPixel();
- mbProcessingMouseButtonDown = true;
+ aMDPos = rEvent.GetPosPixel();
+ mbProcessingMouseButtonDown = true;
- // mpWindow->CaptureMouse();
+ // mpWindow->CaptureMouse();
- ProcessMouseEvent(BUTTON_DOWN, rEvent);
+ ProcessMouseEvent(BUTTON_DOWN, rEvent);
return sal_True;
}
-
-
-
sal_Bool SelectionFunction::MouseMove (const MouseEvent& rEvent)
{
- ProcessMouseEvent(MOUSE_MOTION, rEvent);
+ ProcessMouseEvent(MOUSE_MOTION, rEvent);
return sal_True;
}
-
-
-
sal_Bool SelectionFunction::MouseButtonUp (const MouseEvent& rEvent)
{
- mrController.GetScrollBarManager().StopAutoScroll ();
+ mrController.GetScrollBarManager().StopAutoScroll ();
- ProcessMouseEvent(BUTTON_UP, rEvent);
+ ProcessMouseEvent(BUTTON_UP, rEvent);
- mbProcessingMouseButtonDown = false;
-// mpWindow->ReleaseMouse();
+ mbProcessingMouseButtonDown = false;
+// mpWindow->ReleaseMouse();
return sal_True;
}
-
-
-
void SelectionFunction::NotifyDragFinished (void)
{
- SwitchToNormalMode();
+ SwitchToNormalMode();
}
-
-
-
sal_Bool SelectionFunction::KeyInput (const KeyEvent& rEvent)
{
- view::SlideSorterView::DrawLock aDrawLock (mrSlideSorter);
- PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
- PageSelector::UpdateLock aLock (mrSlideSorter);
- FocusManager& rFocusManager (mrController.GetFocusManager());
+ view::SlideSorterView::DrawLock aDrawLock (mrSlideSorter);
+ PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
+ PageSelector::UpdateLock aLock (mrSlideSorter);
+ FocusManager& rFocusManager (mrController.GetFocusManager());
sal_Bool bResult = sal_False;
- const KeyCode& rCode (rEvent.GetKeyCode());
+ const KeyCode& rCode (rEvent.GetKeyCode());
switch (rCode.GetCode())
{
- case KEY_RETURN:
- {
- model::SharedPageDescriptor pDescriptor
(rFocusManager.GetFocusedPageDescriptor());
- ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (rFocusManager.HasFocus() && pDescriptor && pViewShell!=NULL)
- {
- // The Return key triggers different functions depending on
- // whether the slide sorter is the main view or displayed in
- // the right pane.
- if (pViewShell->IsMainViewShell())
- {
- mpModeHandler->SetCurrentPage(pDescriptor);
- mpModeHandler->SwitchView(pDescriptor);
- }
- else
- {
- pViewShell->GetDispatcher()->Execute(
- SID_INSERTPAGE,
- SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD);
- }
- bResult = sal_True;
- }
- break;
- }
-
- case KEY_TAB:
- if ( ! rFocusManager.IsFocusShowing())
- {
- rFocusManager.ShowFocus();
- bResult = sal_True;
- }
- break;
+ case KEY_RETURN:
+ {
+ model::SharedPageDescriptor pDescriptor
(rFocusManager.GetFocusedPageDescriptor());
+ ViewShell* pViewShell = mrSlideSorter.GetViewShell();
+ if (rFocusManager.HasFocus() && pDescriptor &&
pViewShell!=NULL)
+ {
+ // The Return key triggers different functions
depending on
+ // whether the slide sorter is the main view or
displayed in
+ // the right pane.
+ if (pViewShell->IsMainViewShell())
+ {
+
mpModeHandler->SetCurrentPage(pDescriptor);
+ mpModeHandler->SwitchView(pDescriptor);
+ }
+ else
+ {
+ pViewShell->GetDispatcher()->Execute(
+ SID_INSERTPAGE,
+ SFX_CALLMODE_ASYNCHRON |
SFX_CALLMODE_RECORD);
+ }
+ bResult = sal_True;
+ }
+ break;
+ }
+
+ case KEY_TAB:
+ if ( ! rFocusManager.IsFocusShowing())
+ {
+ rFocusManager.ShowFocus();
+ bResult = sal_True;
+ }
+ break;
case KEY_ESCAPE:
- // When there is an active multiselection or drag-and-drop
- // operation then stop that.
- mpModeHandler->Abort();
- SwitchToNormalMode();
- bResult = sal_True;
- break;
-
- case KEY_SPACE:
- {
- // Toggle the selection state.
- model::SharedPageDescriptor pDescriptor
(rFocusManager.GetFocusedPageDescriptor());
- if (pDescriptor && rCode.IsMod1())
- {
- if (pDescriptor->HasState(model::PageDescriptor::ST_Selected))
- mrController.GetPageSelector().DeselectPage(pDescriptor,
false);
- else
- mrController.GetPageSelector().SelectPage(pDescriptor);
- }
- bResult = sal_True;
- }
- break;
-
-
- // Move the focus indicator left.
+ // When there is an active multiselection or
drag-and-drop
+ // operation then stop that.
+ mpModeHandler->Abort();
+ SwitchToNormalMode();
+ bResult = sal_True;
+ break;
+
+ case KEY_SPACE:
+ {
+ // Toggle the selection state.
+ model::SharedPageDescriptor pDescriptor
(rFocusManager.GetFocusedPageDescriptor());
+ if (pDescriptor && rCode.IsMod1())
+ {
+ if
(pDescriptor->HasState(model::PageDescriptor::ST_Selected))
+
mrController.GetPageSelector().DeselectPage(pDescriptor, false);
+ else
+
mrController.GetPageSelector().SelectPage(pDescriptor);
+ }
+ bResult = sal_True;
+ }
+ break;
+
+ // Move the focus indicator left.
case KEY_LEFT:
- MoveFocus(FocusManager::FMD_LEFT, rCode.IsShift(), rCode.IsMod1());
- bResult = sal_True;
- break;
+ MoveFocus(FocusManager::FMD_LEFT, rCode.IsShift(),
rCode.IsMod1());
+ bResult = sal_True;
+ break;
- // Move the focus indicator right.
+ // Move the focus indicator right.
case KEY_RIGHT:
- MoveFocus(FocusManager::FMD_RIGHT, rCode.IsShift(),
rCode.IsMod1());
- bResult = sal_True;
- break;
+ MoveFocus(FocusManager::FMD_RIGHT, rCode.IsShift(),
rCode.IsMod1());
+ bResult = sal_True;
+ break;
- // Move the focus indicator up.
+ // Move the focus indicator up.
case KEY_UP:
- MoveFocus(FocusManager::FMD_UP, rCode.IsShift(), rCode.IsMod1());
- bResult = sal_True;
- break;
+ MoveFocus(FocusManager::FMD_UP, rCode.IsShift(),
rCode.IsMod1());
+ bResult = sal_True;
+ break;
- // Move the focus indicator down.
+ // Move the focus indicator down.
case KEY_DOWN:
- MoveFocus(FocusManager::FMD_DOWN, rCode.IsShift(), rCode.IsMod1());
- bResult = sal_True;
- break;
+ MoveFocus(FocusManager::FMD_DOWN, rCode.IsShift(),
rCode.IsMod1());
+ bResult = sal_True;
+ break;
- // Go to previous page. No wrap around.
+ // Go to previous page. No wrap around.
case KEY_PAGEUP:
- GotoNextPage(-1);
- bResult = sal_True;
- break;
+ GotoNextPage(-1);
+ bResult = sal_True;
+ break;
- // Go to next page. No wrap around..
+ // Go to next page. No wrap around..
case KEY_PAGEDOWN:
- GotoNextPage(+1);
- bResult = sal_True;
- break;
-
- case KEY_HOME:
- GotoPage(0);
- bResult = sal_True;
- break;
-
- case KEY_END:
- GotoPage(mrSlideSorter.GetModel().GetPageCount()-1);
- bResult = sal_True;
- break;
-
- case KEY_DELETE:
- case KEY_BACKSPACE:
- {
- if (mrSlideSorter.GetProperties()->IsUIReadOnly())
- break;
-
-
mrController.GetSelectionManager()->DeleteSelectedPages(rCode.GetCode()==KEY_DELETE);
-
- mnShiftKeySelectionAnchor = -1;
- bResult = sal_True;
- }
- break;
-
- case KEY_F10:
- if (rCode.IsShift())
- {
- mpModeHandler->SelectOnePage(
-
mrSlideSorter.GetController().GetFocusManager().GetFocusedPageDescriptor());
- }
- break;
-
- default:
- break;
+ GotoNextPage(+1);
+ bResult = sal_True;
+ break;
+
+ case KEY_HOME:
+ GotoPage(0);
+ bResult = sal_True;
+ break;
+
+ case KEY_END:
+ GotoPage(mrSlideSorter.GetModel().GetPageCount()-1);
+ bResult = sal_True;
+ break;
+
+ case KEY_DELETE:
+ case KEY_BACKSPACE:
+ {
+ if (mrSlideSorter.GetProperties()->IsUIReadOnly())
+ break;
+
+
mrController.GetSelectionManager()->DeleteSelectedPages(rCode.GetCode()==KEY_DELETE);
+
+ mnShiftKeySelectionAnchor = -1;
+ bResult = sal_True;
+ }
+ break;
+
+ case KEY_F10:
+ if (rCode.IsShift())
+ {
+ mpModeHandler->SelectOnePage(
+
mrSlideSorter.GetController().GetFocusManager().GetFocusedPageDescriptor());
+ }
+ break;
+
+ default:
+ break;
}
- if ( ! bResult)
- bResult = FuPoor::KeyInput(rEvent);
+ if ( ! bResult)
+ bResult = FuPoor::KeyInput(rEvent);
return bResult;
}
-
-
-
void SelectionFunction::MoveFocus (
- const FocusManager::FocusMoveDirection eDirection,
- const bool bIsShiftDown,
- const bool bIsControlDown)
-{
- // Remember the anchor of shift key multi selection.
- if (bIsShiftDown)
- {
- if (mnShiftKeySelectionAnchor<0)
- {
- model::SharedPageDescriptor pFocusedDescriptor (
- mrController.GetFocusManager().GetFocusedPageDescriptor());
- mnShiftKeySelectionAnchor = pFocusedDescriptor->GetPageIndex();
- }
- }
- else if ( ! bIsControlDown)
- ResetShiftKeySelectionAnchor();
-
- mrController.GetFocusManager().MoveFocus(eDirection);
-
- PageSelector& rSelector (mrController.GetPageSelector());
- model::SharedPageDescriptor pFocusedDescriptor (
- mrController.GetFocusManager().GetFocusedPageDescriptor());
- if (bIsShiftDown)
- {
- // When shift is pressed then select all pages in the range between
- // the currently and the previously focused pages, including them.
- if (pFocusedDescriptor)
- {
- sal_Int32 nPageRangeEnd (pFocusedDescriptor->GetPageIndex());
- model::PageEnumeration aPages (
- model::PageEnumerationProvider::CreateAllPagesEnumeration(
- mrSlideSorter.GetModel()));
- while (aPages.HasMoreElements())
- {
- model::SharedPageDescriptor pDescriptor
(aPages.GetNextElement());
- if (pDescriptor)
- {
- const sal_Int32 nPageIndex(pDescriptor->GetPageIndex());
- if ((nPageIndex>=mnShiftKeySelectionAnchor &&
nPageIndex<=nPageRangeEnd)
- || (nPageIndex<=mnShiftKeySelectionAnchor &&
nPageIndex>=nPageRangeEnd))
- {
- rSelector.SelectPage(pDescriptor);
- }
- else
- {
- rSelector.DeselectPage(pDescriptor);
- }
- }
- }
- }
- }
- else if (bIsControlDown)
- {
- // When control is pressed then do not alter the selection or the
- // current page, just move the focus.
- }
- else
- {
- // Without shift just select the focused page.
- mpModeHandler->SelectOnePage(pFocusedDescriptor);
- }
-}
-
+ const FocusManager::FocusMoveDirection eDirection,
+ const bool bIsShiftDown,
+ const bool bIsControlDown)
+{
+ // Remember the anchor of shift key multi selection.
+ if (bIsShiftDown)
+ {
+ if (mnShiftKeySelectionAnchor<0)
+ {
+ model::SharedPageDescriptor pFocusedDescriptor (
+
mrController.GetFocusManager().GetFocusedPageDescriptor());
+ mnShiftKeySelectionAnchor =
pFocusedDescriptor->GetPageIndex();
+ }
+ }
+ else if ( ! bIsControlDown)
+ ResetShiftKeySelectionAnchor();
+ mrController.GetFocusManager().MoveFocus(eDirection);
+ PageSelector& rSelector (mrController.GetPageSelector());
+ model::SharedPageDescriptor pFocusedDescriptor (
+ mrController.GetFocusManager().GetFocusedPageDescriptor());
+ if (bIsShiftDown)
+ {
+ // When shift is pressed then select all pages in the range
between
+ // the currently and the previously focused pages, including
them.
+ if (pFocusedDescriptor)
+ {
+ sal_Int32 nPageRangeEnd
(pFocusedDescriptor->GetPageIndex());
+ model::PageEnumeration aPages (
+
model::PageEnumerationProvider::CreateAllPagesEnumeration(
+ mrSlideSorter.GetModel()));
+ while (aPages.HasMoreElements())
+ {
+ model::SharedPageDescriptor pDescriptor
(aPages.GetNextElement());
+ if (pDescriptor)
+ {
+ const sal_Int32
nPageIndex(pDescriptor->GetPageIndex());
+ if
((nPageIndex>=mnShiftKeySelectionAnchor && nPageIndex<=nPageRangeEnd)
+ ||
(nPageIndex<=mnShiftKeySelectionAnchor && nPageIndex>=nPageRangeEnd))
+ {
+
rSelector.SelectPage(pDescriptor);
+ }
+ else
+ {
+
rSelector.DeselectPage(pDescriptor);
+ }
+ }
+ }
+ }
+ }
+ else if (bIsControlDown)
+ {
+ // When control is pressed then do not alter the selection or
the
+ // current page, just move the focus.
+ }
+ else
+ {
+ // Without shift just select the focused page.
+ mpModeHandler->SelectOnePage(pFocusedDescriptor);
+ }
+}
void SelectionFunction::Activate()
{
FuPoor::Activate();
}
-
-
-
void SelectionFunction::Deactivate()
{
FuPoor::Deactivate();
}
-
-
void SelectionFunction::ScrollStart (void)
{
}
-
-
-
void SelectionFunction::ScrollEnd (void)
{
}
-
-
-
void SelectionFunction::DoCut (void)
{
- if ( ! mrSlideSorter.GetProperties()->IsUIReadOnly())
- {
- mrController.GetClipboard().DoCut();
- }
+ if ( ! mrSlideSorter.GetProperties()->IsUIReadOnly())
+ {
+ mrController.GetClipboard().DoCut();
+ }
}
-
-
-
void SelectionFunction::DoCopy (void)
{
- mrController.GetClipboard().DoCopy();
+ mrController.GetClipboard().DoCopy();
}
-
-
-
void SelectionFunction::DoPaste (void)
{
- if ( ! mrSlideSorter.GetProperties()->IsUIReadOnly())
- {
- mrController.GetClipboard().DoPaste();
- }
+ if ( ! mrSlideSorter.GetProperties()->IsUIReadOnly())
+ {
+ mrController.GetClipboard().DoPaste();
+ }
}
-
-
-
bool SelectionFunction::cancel (void)
{
- mrController.GetFocusManager().ToggleFocus();
- return true;
+ mrController.GetFocusManager().ToggleFocus();
+ return true;
}
-
-
-
void SelectionFunction::GotoNextPage (int nOffset)
{
- model::SharedPageDescriptor pDescriptor
- = mrController.GetCurrentSlideManager()->GetCurrentSlide();
- if (pDescriptor.get() != NULL)
- {
- SdPage* pPage = pDescriptor->GetPage();
- OSL_ASSERT(pPage!=NULL);
- sal_Int32 nIndex = (pPage->GetPageNum()-1) / 2;
- GotoPage(nIndex + nOffset);
- }
- ResetShiftKeySelectionAnchor();
+ model::SharedPageDescriptor pDescriptor
+ = mrController.GetCurrentSlideManager()->GetCurrentSlide();
+ if (pDescriptor.get() != NULL)
+ {
+ SdPage* pPage = pDescriptor->GetPage();
+ OSL_ASSERT(pPage!=NULL);
+ sal_Int32 nIndex = (pPage->GetPageNum()-1) / 2;
+ GotoPage(nIndex + nOffset);
+ }
+ ResetShiftKeySelectionAnchor();
}
-
-
-
void SelectionFunction::GotoPage (int nIndex)
{
- sal_uInt16 nPageCount =
(sal_uInt16)mrSlideSorter.GetModel().GetPageCount();
+ sal_uInt16 nPageCount =
(sal_uInt16)mrSlideSorter.GetModel().GetPageCount();
- if (nIndex >= nPageCount)
- nIndex = nPageCount - 1;
- if (nIndex < 0)
- nIndex = 0;
+ if (nIndex >= nPageCount)
+ nIndex = nPageCount - 1;
+ if (nIndex < 0)
+ nIndex = 0;
- mrController.GetFocusManager().SetFocusedPage(nIndex);
- model::SharedPageDescriptor pNextPageDescriptor (
- mrSlideSorter.GetModel().GetPageDescriptor (nIndex));
- if (pNextPageDescriptor.get() != NULL)
- mpModeHandler->SetCurrentPage(pNextPageDescriptor);
- else
- {
- OSL_ASSERT(pNextPageDescriptor.get() != NULL);
- }
- ResetShiftKeySelectionAnchor();
+ mrController.GetFocusManager().SetFocusedPage(nIndex);
+ model::SharedPageDescriptor pNextPageDescriptor (
+ mrSlideSorter.GetModel().GetPageDescriptor (nIndex));
+ if (pNextPageDescriptor.get() != NULL)
+ mpModeHandler->SetCurrentPage(pNextPageDescriptor);
+ else
+ {
+ OSL_ASSERT(pNextPageDescriptor.get() != NULL);
+ }
+ ResetShiftKeySelectionAnchor();
}
-
-
-
void SelectionFunction::ProcessMouseEvent (sal_uInt32 nEventType, const
MouseEvent& rEvent)
{
// #95491# remember button state for creation of own MouseEvents
SetMouseButtonCode (rEvent.GetButtons());
- EventDescriptor aEventDescriptor (nEventType, rEvent, mrSlideSorter);
- ProcessEvent(aEventDescriptor);
+ EventDescriptor aEventDescriptor (nEventType, rEvent, mrSlideSorter);
+ ProcessEvent(aEventDescriptor);
}
-
-
-
void SelectionFunction::MouseDragged (
- const AcceptDropEvent& rEvent,
- const sal_Int8 nDragAction)
+ const AcceptDropEvent& rEvent,
+ const sal_Int8 nDragAction)
{
- EventDescriptor aEventDescriptor (MOUSE_DRAG, rEvent, nDragAction,
mrSlideSorter);
- ProcessEvent(aEventDescriptor);
+ EventDescriptor aEventDescriptor (MOUSE_DRAG, rEvent, nDragAction,
mrSlideSorter);
+ ProcessEvent(aEventDescriptor);
}
-
-
-
void SelectionFunction::ProcessKeyEvent (const KeyEvent& rEvent)
{
- EventDescriptor aEventDescriptor (rEvent, mrSlideSorter);
- ProcessEvent(aEventDescriptor);
+ EventDescriptor aEventDescriptor (rEvent, mrSlideSorter);
+ ProcessEvent(aEventDescriptor);
}
-
-
-
void SelectionFunction::ProcessEvent (EventDescriptor& rDescriptor)
{
- // The call to ProcessEvent may switch to another mode handler.
- // Prevent the untimely destruction of the called handler by acquiring a
- // temporary reference here.
- ::boost::shared_ptr<ModeHandler> pModeHandler (mpModeHandler);
- pModeHandler->ProcessEvent(rDescriptor);
+ // The call to ProcessEvent may switch to another mode handler.
+ // Prevent the untimely destruction of the called handler by acquiring a
+ // temporary reference here.
+ ::boost::shared_ptr<ModeHandler> pModeHandler (mpModeHandler);
+ pModeHandler->ProcessEvent(rDescriptor);
}
-
-
-
bool Match (
- const sal_uInt32 nEventCode,
- const sal_uInt32 nPositivePattern)
+ const sal_uInt32 nEventCode,
+ const sal_uInt32 nPositivePattern)
{
- return (nEventCode & nPositivePattern)==nPositivePattern;
+ return (nEventCode & nPositivePattern)==nPositivePattern;
}
-
-
-
void SelectionFunction::SwitchToNormalMode (void)
{
- if (mpModeHandler->GetMode() != NormalMode)
- SwitchMode(::boost::shared_ptr<ModeHandler>(
- new NormalModeHandler(mrSlideSorter, *this)));
+ if (mpModeHandler->GetMode() != NormalMode)
+ SwitchMode(::boost::shared_ptr<ModeHandler>(
+ new NormalModeHandler(mrSlideSorter, *this)));
}
-
-
-
void SelectionFunction::SwitchToDragAndDropMode (const Point aMousePosition)
{
- if (mpModeHandler->GetMode() != DragAndDropMode)
- {
- SwitchMode(::boost::shared_ptr<ModeHandler>(
- new DragAndDropModeHandler(mrSlideSorter, *this, aMousePosition,
mpWindow)));
- }
+ if (mpModeHandler->GetMode() != DragAndDropMode)
+ {
+ SwitchMode(::boost::shared_ptr<ModeHandler>(
+ new DragAndDropModeHandler(mrSlideSorter, *this,
aMousePosition, mpWindow)));
+ }
}
-
-
-
void SelectionFunction::SwitchToMultiSelectionMode (
- const Point aMousePosition,
- const sal_uInt32 nEventCode)
+ const Point aMousePosition,
+ const sal_uInt32 nEventCode)
{
- if (mpModeHandler->GetMode() != MultiSelectionMode)
- SwitchMode(::boost::shared_ptr<ModeHandler>(
- new MultiSelectionModeHandler(mrSlideSorter, *this,
aMousePosition, nEventCode)));
+ if (mpModeHandler->GetMode() != MultiSelectionMode)
+ SwitchMode(::boost::shared_ptr<ModeHandler>(
+ new MultiSelectionModeHandler(mrSlideSorter, *this,
aMousePosition, nEventCode)));
}
-
-
-
bool SelectionFunction::SwitchToButtonMode (void)
{
- // Do not show the buttons for draw pages.
- ::boost::shared_ptr<ViewShell> pMainViewShell
(mrSlideSorter.GetViewShellBase()->GetMainViewShell());
- if (pMainViewShell
- && pMainViewShell->GetShellType()!=ViewShell::ST_DRAW
- && mpModeHandler->GetMode() != ButtonMode)
- {
- SwitchMode(::boost::shared_ptr<ModeHandler>(new
ButtonModeHandler(mrSlideSorter, *this)));
- return true;
- }
- else
- return false;
+ // Do not show the buttons for draw pages.
+ ::boost::shared_ptr<ViewShell> pMainViewShell
(mrSlideSorter.GetViewShellBase()->GetMainViewShell());
+ if (pMainViewShell
+ && pMainViewShell->GetShellType()!=ViewShell::ST_DRAW
+ && mpModeHandler->GetMode() != ButtonMode)
+ {
+ SwitchMode(::boost::shared_ptr<ModeHandler>(new
ButtonModeHandler(mrSlideSorter, *this)));
+ return true;
+ }
+ else
+ return false;
}
-
-
-
void SelectionFunction::SwitchMode (const ::boost::shared_ptr<ModeHandler>&
rpHandler)
{
- // Not all modes allow mouse over indicator.
- if (mpModeHandler->IsMouseOverIndicatorAllowed() !=
rpHandler->IsMouseOverIndicatorAllowed())
- {
- if ( ! rpHandler->IsMouseOverIndicatorAllowed())
- {
-
mrSlideSorter.GetView().SetPageUnderMouse(model::SharedPageDescriptor());
- mrSlideSorter.GetView().GetButtonBar().ResetPage();
- }
- else
- mrSlideSorter.GetView().UpdatePageUnderMouse(false);
- }
+ // Not all modes allow mouse over indicator.
+ if (mpModeHandler->IsMouseOverIndicatorAllowed() !=
rpHandler->IsMouseOverIndicatorAllowed())
+ {
+ if ( ! rpHandler->IsMouseOverIndicatorAllowed())
+ {
+
mrSlideSorter.GetView().SetPageUnderMouse(model::SharedPageDescriptor());
+ mrSlideSorter.GetView().GetButtonBar().ResetPage();
+ }
+ else
+ mrSlideSorter.GetView().UpdatePageUnderMouse(false);
+ }
- mpModeHandler = rpHandler;
+ mpModeHandler = rpHandler;
}
-
-
-
void SelectionFunction::ResetShiftKeySelectionAnchor (void)
{
- mnShiftKeySelectionAnchor = -1;
+ mnShiftKeySelectionAnchor = -1;
}
-
-
-
void SelectionFunction::ResetMouseAnchor (void)
{
- if (mpModeHandler && mpModeHandler->GetMode() == NormalMode)
- {
- ::boost::shared_ptr<NormalModeHandler> pHandler (
- ::boost::dynamic_pointer_cast<NormalModeHandler>(mpModeHandler));
- if (pHandler)
- pHandler->ResetButtonDownLocation();
- }
+ if (mpModeHandler && mpModeHandler->GetMode() == NormalMode)
+ {
+ ::boost::shared_ptr<NormalModeHandler> pHandler (
+
::boost::dynamic_pointer_cast<NormalModeHandler>(mpModeHandler));
+ if (pHandler)
+ pHandler->ResetButtonDownLocation();
+ }
}
-
-
-
//===== EventDescriptor =======================================================
SelectionFunction::EventDescriptor::EventDescriptor (
- const sal_uInt32 nEventType,
- const MouseEvent& rEvent,
- SlideSorter& rSlideSorter)
- : maMousePosition(rEvent.GetPosPixel()),
- maMouseModelPosition(),
- mpHitDescriptor(),
- mpHitPage(),
- mnEventCode(nEventType),
-
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
- meDragMode(InsertionIndicatorHandler::MoveMode),
- mbMakeSelectionVisible(true),
- mbIsLeaving(false)
-{
- maMouseModelPosition =
rSlideSorter.GetContentWindow()->PixelToLogic(maMousePosition);
- mpHitDescriptor = rSlideSorter.GetController().GetPageAt(maMousePosition);
- if (mpHitDescriptor)
- {
- mpHitPage = mpHitDescriptor->GetPage();
- }
+ const sal_uInt32 nEventType,
+ const MouseEvent& rEvent,
+ SlideSorter& rSlideSorter)
+ : maMousePosition(rEvent.GetPosPixel()),
+ maMouseModelPosition(),
+ mpHitDescriptor(),
+ mpHitPage(),
+ mnEventCode(nEventType),
+
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
+ meDragMode(InsertionIndicatorHandler::MoveMode),
+ mbMakeSelectionVisible(true),
+ mbIsLeaving(false)
+{
+ maMouseModelPosition =
rSlideSorter.GetContentWindow()->PixelToLogic(maMousePosition);
+ mpHitDescriptor =
rSlideSorter.GetController().GetPageAt(maMousePosition);
+ if (mpHitDescriptor)
+ {
+ mpHitPage = mpHitDescriptor->GetPage();
+ }
- mnEventCode |= EncodeMouseEvent(rEvent);
- mnEventCode |= EncodeState();
+ mnEventCode |= EncodeMouseEvent(rEvent);
+ mnEventCode |= EncodeState();
- // Detect the mouse leaving the window. When not button is pressed then
- // we can call IsLeaveWindow at the event. Otherwise we have to make an
- // explicit test.
- mbIsLeaving = rEvent.IsLeaveWindow()
- || ! Rectangle(Point(0,0),
-
rSlideSorter.GetContentWindow()->GetOutputSizePixel()).IsInside(maMousePosition);
+ // Detect the mouse leaving the window. When not button is pressed then
+ // we can call IsLeaveWindow at the event. Otherwise we have to make an
+ // explicit test.
+ mbIsLeaving = rEvent.IsLeaveWindow()
+ || ! Rectangle(Point(0,0),
+
rSlideSorter.GetContentWindow()->GetOutputSizePixel()).IsInside(maMousePosition);
}
-
-
-
SelectionFunction::EventDescriptor::EventDescriptor (
- const sal_uInt32 nEventType,
- const AcceptDropEvent& rEvent,
- const sal_Int8 nDragAction,
- SlideSorter& rSlideSorter)
- : maMousePosition(rEvent.maPosPixel),
- maMouseModelPosition(),
- mpHitDescriptor(),
- mpHitPage(),
- mnEventCode(nEventType),
-
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
- meDragMode(InsertionIndicatorHandler::GetModeFromDndAction(nDragAction)),
- mbMakeSelectionVisible(true),
- mbIsLeaving(false)
-{
- maMouseModelPosition =
rSlideSorter.GetContentWindow()->PixelToLogic(maMousePosition);
- mpHitDescriptor = rSlideSorter.GetController().GetPageAt(maMousePosition);
- if (mpHitDescriptor)
- {
- mpHitPage = mpHitDescriptor->GetPage();
- }
+ const sal_uInt32 nEventType,
+ const AcceptDropEvent& rEvent,
+ const sal_Int8 nDragAction,
+ SlideSorter& rSlideSorter)
+ : maMousePosition(rEvent.maPosPixel),
+ maMouseModelPosition(),
+ mpHitDescriptor(),
+ mpHitPage(),
+ mnEventCode(nEventType),
+
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
+
meDragMode(InsertionIndicatorHandler::GetModeFromDndAction(nDragAction)),
+ mbMakeSelectionVisible(true),
+ mbIsLeaving(false)
+{
+ maMouseModelPosition =
rSlideSorter.GetContentWindow()->PixelToLogic(maMousePosition);
+ mpHitDescriptor =
rSlideSorter.GetController().GetPageAt(maMousePosition);
+ if (mpHitDescriptor)
+ {
+ mpHitPage = mpHitDescriptor->GetPage();
+ }
- mnEventCode |= EncodeState();
+ mnEventCode |= EncodeState();
- // Detect the mouse leaving the window. When not button is pressed then
- // we can call IsLeaveWindow at the event. Otherwise we have to make an
- // explicit test.
- mbIsLeaving = rEvent.mbLeaving
- || ! Rectangle(Point(0,0),
-
rSlideSorter.GetContentWindow()->GetOutputSizePixel()).IsInside(maMousePosition);
+ // Detect the mouse leaving the window. When not button is pressed then
+ // we can call IsLeaveWindow at the event. Otherwise we have to make an
+ // explicit test.
+ mbIsLeaving = rEvent.mbLeaving
+ || ! Rectangle(Point(0,0),
+
rSlideSorter.GetContentWindow()->GetOutputSizePixel()).IsInside(maMousePosition);
}
-
-
-
SelectionFunction::EventDescriptor::EventDescriptor (
- const KeyEvent& rEvent,
- SlideSorter& rSlideSorter)
- : maMousePosition(),
- maMouseModelPosition(),
- mpHitDescriptor(),
- mpHitPage(),
- mnEventCode(KEY_EVENT),
-
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
- meDragMode(InsertionIndicatorHandler::MoveMode),
- mbMakeSelectionVisible(true),
- mbIsLeaving(false)
-{
- model::SharedPageDescriptor pHitDescriptor (
-
rSlideSorter.GetController().GetFocusManager().GetFocusedPageDescriptor());
- if (pHitDescriptor.get() != NULL)
- {
- mpHitPage = pHitDescriptor->GetPage();
- mpHitDescriptor = pHitDescriptor;
- }
+ const KeyEvent& rEvent,
+ SlideSorter& rSlideSorter)
+ : maMousePosition(),
+ maMouseModelPosition(),
+ mpHitDescriptor(),
+ mpHitPage(),
+ mnEventCode(KEY_EVENT),
+
mbIsOverButton(rSlideSorter.GetView().GetButtonBar().IsMouseOverButton()),
+ meDragMode(InsertionIndicatorHandler::MoveMode),
+ mbMakeSelectionVisible(true),
+ mbIsLeaving(false)
+{
+ model::SharedPageDescriptor pHitDescriptor (
+
rSlideSorter.GetController().GetFocusManager().GetFocusedPageDescriptor());
+ if (pHitDescriptor.get() != NULL)
+ {
+ mpHitPage = pHitDescriptor->GetPage();
+ mpHitDescriptor = pHitDescriptor;
+ }
- mnEventCode |= EncodeKeyEvent(rEvent) | EncodeState();
+ mnEventCode |= EncodeKeyEvent(rEvent) | EncodeState();
}
-
-
-
void SelectionFunction::EventDescriptor::SetDragMode (const
InsertionIndicatorHandler::Mode eMode)
{
- meDragMode = eMode;
+ meDragMode = eMode;
}
-
-
-
sal_uInt32 SelectionFunction::EventDescriptor::EncodeMouseEvent (
- const MouseEvent& rEvent) const
+ const MouseEvent& rEvent) const
{
- // Initialize with the type of mouse event.
- sal_uInt32 nEventCode (mnEventCode & (BUTTON_DOWN | BUTTON_UP |
MOUSE_MOTION));
+ // Initialize with the type of mouse event.
+ sal_uInt32 nEventCode (mnEventCode & (BUTTON_DOWN | BUTTON_UP |
MOUSE_MOTION));
- // Detect the affected button.
+ // Detect the affected button.
switch (rEvent.GetButtons())
- {
- case MOUSE_LEFT: nEventCode |= LEFT_BUTTON; break;
- case MOUSE_RIGHT: nEventCode |= RIGHT_BUTTON; break;
- case MOUSE_MIDDLE: nEventCode |= MIDDLE_BUTTON; break;
- }
+ {
+ case MOUSE_LEFT: nEventCode |= LEFT_BUTTON; break;
+ case MOUSE_RIGHT: nEventCode |= RIGHT_BUTTON; break;
+ case MOUSE_MIDDLE: nEventCode |= MIDDLE_BUTTON; break;
+ }
- // Detect the number of clicks.
- switch (rEvent.GetClicks())
- {
- case 1: nEventCode |= SINGLE_CLICK; break;
- case 2: nEventCode |= DOUBLE_CLICK; break;
- }
+ // Detect the number of clicks.
+ switch (rEvent.GetClicks())
+ {
+ case 1: nEventCode |= SINGLE_CLICK; break;
+ case 2: nEventCode |= DOUBLE_CLICK; break;
+ }
- // Detect pressed modifier keys.
- if (rEvent.IsShift())
- nEventCode |= SHIFT_MODIFIER;
- if (rEvent.IsMod1())
- nEventCode |= CONTROL_MODIFIER;
+ // Detect pressed modifier keys.
+ if (rEvent.IsShift())
+ nEventCode |= SHIFT_MODIFIER;
+ if (rEvent.IsMod1())
+ nEventCode |= CONTROL_MODIFIER;
- // Detect whether the mouse is over one of the active elements inside a
- // page object.
- if (mbIsOverButton)
- nEventCode |= OVER_BUTTON;
+ // Detect whether the mouse is over one of the active elements inside a
+ // page object.
+ if (mbIsOverButton)
+ nEventCode |= OVER_BUTTON;
- return nEventCode;
+ return nEventCode;
}
-
-
-
sal_uInt32 SelectionFunction::EventDescriptor::EncodeKeyEvent (const KeyEvent&
rEvent) const
{
- // The key code in the lower 16 bit.
- sal_uInt32 nEventCode (rEvent.GetKeyCode().GetCode());
+ // The key code in the lower 16 bit.
+ sal_uInt32 nEventCode (rEvent.GetKeyCode().GetCode());
- // Detect pressed modifier keys.
- if (rEvent.GetKeyCode().IsShift())
- nEventCode |= SHIFT_MODIFIER;
- if (rEvent.GetKeyCode().IsMod1())
- nEventCode |= CONTROL_MODIFIER;
+ // Detect pressed modifier keys.
+ if (rEvent.GetKeyCode().IsShift())
+ nEventCode |= SHIFT_MODIFIER;
+ if (rEvent.GetKeyCode().IsMod1())
+ nEventCode |= CONTROL_MODIFIER;
- return nEventCode;
+ return nEventCode;
}
-
-
-
sal_uInt32 SelectionFunction::EventDescriptor::EncodeState (void) const
{
- sal_uInt32 nEventCode (0);
-
- // Detect whether the event has happened over a page object.
- if (mpHitPage!=NULL && mpHitDescriptor)
- {
- if (mpHitDescriptor->HasState(model::PageDescriptor::ST_Selected))
- nEventCode |= OVER_SELECTED_PAGE;
- else
- nEventCode |= OVER_UNSELECTED_PAGE;
+ sal_uInt32 nEventCode (0);
- // Detect whether the mouse is over one of the active elements
- // inside a page object.
- if (mbIsOverButton)
- nEventCode |= OVER_BUTTON;
- }
+ // Detect whether the event has happened over a page object.
+ if (mpHitPage!=NULL && mpHitDescriptor)
+ {
+ if
(mpHitDescriptor->HasState(model::PageDescriptor::ST_Selected))
+ nEventCode |= OVER_SELECTED_PAGE;
+ else
+ nEventCode |= OVER_UNSELECTED_PAGE;
+
+ // Detect whether the mouse is over one of the active elements
+ // inside a page object.
+ if (mbIsOverButton)
+ nEventCode |= OVER_BUTTON;
+ }
- return nEventCode;
+ return nEventCode;
}
-
-
-
//===== SelectionFunction::ModeHandler ========================================
SelectionFunction::ModeHandler::ModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const bool bIsMouseOverIndicatorAllowed)
- : mrSlideSorter(rSlideSorter),
- mrSelectionFunction(rSelectionFunction),
- mbIsMouseOverIndicatorAllowed(bIsMouseOverIndicatorAllowed)
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const bool bIsMouseOverIndicatorAllowed)
+ : mrSlideSorter(rSlideSorter),
+ mrSelectionFunction(rSelectionFunction),
+ mbIsMouseOverIndicatorAllowed(bIsMouseOverIndicatorAllowed)
{
}
-
-
-
SelectionFunction::ModeHandler::~ModeHandler (void)
{
}
-
-
-
void SelectionFunction::ModeHandler::ReprocessEvent (EventDescriptor&
rDescriptor)
{
- mrSelectionFunction.ProcessEvent(rDescriptor);
+ mrSelectionFunction.ProcessEvent(rDescriptor);
}
-
-
-
void SelectionFunction::ModeHandler::ProcessEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
- PageSelector::UpdateLock aUpdateLock (mrSlideSorter);
+ PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
+ PageSelector::UpdateLock aUpdateLock (mrSlideSorter);
- bool bIsProcessed (false);
- switch (rDescriptor.mnEventCode & (BUTTON_DOWN | BUTTON_UP | MOUSE_MOTION
| MOUSE_DRAG))
- {
- case BUTTON_DOWN:
- bIsProcessed = ProcessButtonDownEvent(rDescriptor);
- break;
+ bool bIsProcessed (false);
+ switch (rDescriptor.mnEventCode & (BUTTON_DOWN | BUTTON_UP |
MOUSE_MOTION | MOUSE_DRAG))
+ {
+ case BUTTON_DOWN:
+ bIsProcessed = ProcessButtonDownEvent(rDescriptor);
+ break;
- case BUTTON_UP:
- bIsProcessed = ProcessButtonUpEvent(rDescriptor);
- break;
+ case BUTTON_UP:
+ bIsProcessed = ProcessButtonUpEvent(rDescriptor);
+ break;
- case MOUSE_MOTION:
- bIsProcessed = ProcessMotionEvent(rDescriptor);
- break;
+ case MOUSE_MOTION:
+ bIsProcessed = ProcessMotionEvent(rDescriptor);
+ break;
- case MOUSE_DRAG:
- bIsProcessed = ProcessDragEvent(rDescriptor);
- break;
- }
+ case MOUSE_DRAG:
+ bIsProcessed = ProcessDragEvent(rDescriptor);
+ break;
+ }
- if ( ! bIsProcessed)
- HandleUnprocessedEvent(rDescriptor);
+ if ( ! bIsProcessed)
+ HandleUnprocessedEvent(rDescriptor);
}
-
-
-
bool SelectionFunction::ModeHandler::ProcessButtonDownEvent (EventDescriptor&)
{
- return false;
+ return false;
}
-
-
-
bool SelectionFunction::ModeHandler::ProcessButtonUpEvent (EventDescriptor&)
{
- mrSelectionFunction.SwitchToNormalMode();
- return false;
+ mrSelectionFunction.SwitchToNormalMode();
+ return false;
}
-
-
-
bool SelectionFunction::ModeHandler::ProcessMotionEvent (EventDescriptor&
rDescriptor)
{
- if (mbIsMouseOverIndicatorAllowed)
- mrSlideSorter.GetView().UpdatePageUnderMouse(
- rDescriptor.maMousePosition,
- (rDescriptor.mnEventCode & LEFT_BUTTON) != 0,
- true);
+ if (mbIsMouseOverIndicatorAllowed)
+ mrSlideSorter.GetView().UpdatePageUnderMouse(
+ rDescriptor.maMousePosition,
+ (rDescriptor.mnEventCode & LEFT_BUTTON) != 0,
+ true);
- if (rDescriptor.mbIsLeaving)
- {
- mrSelectionFunction.SwitchToNormalMode();
-
mrSlideSorter.GetView().SetPageUnderMouse(model::SharedPageDescriptor());
+ if (rDescriptor.mbIsLeaving)
+ {
+ mrSelectionFunction.SwitchToNormalMode();
+
mrSlideSorter.GetView().SetPageUnderMouse(model::SharedPageDescriptor());
- return true;
- }
- else
- return false;
+ return true;
+ }
+ else
+ return false;
}
-
-
-
bool SelectionFunction::ModeHandler::ProcessDragEvent (EventDescriptor&)
{
- return false;
+ return false;
}
-
-
-
bool SelectionFunction::ModeHandler::HandleUnprocessedEvent (EventDescriptor&)
{
- return false;
+ return false;
}
-
-
-
void SelectionFunction::ModeHandler::SetCurrentPage (
- const model::SharedPageDescriptor& rpDescriptor)
+ const model::SharedPageDescriptor& rpDescriptor)
{
- SelectOnePage(rpDescriptor);
-
mrSlideSorter.GetController().GetCurrentSlideManager()->SwitchCurrentSlide(rpDescriptor);
+ SelectOnePage(rpDescriptor);
+
mrSlideSorter.GetController().GetCurrentSlideManager()->SwitchCurrentSlide(rpDescriptor);
}
-
-
-
void SelectionFunction::ModeHandler::DeselectAllPages (void)
{
- mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
- mrSelectionFunction.ResetShiftKeySelectionAnchor();
+ mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
+ mrSelectionFunction.ResetShiftKeySelectionAnchor();
}
-
-
-
void SelectionFunction::ModeHandler::SelectOnePage (
- const model::SharedPageDescriptor& rpDescriptor)
+ const model::SharedPageDescriptor& rpDescriptor)
{
- DeselectAllPages();
- mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
+ DeselectAllPages();
+
mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
}
-
-
-
void SelectionFunction::ModeHandler::SwitchView (const
model::SharedPageDescriptor& rpDescriptor)
{
- // Switch to the draw view. This is done only when the current
- // view is the main view.
- ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (pViewShell!=NULL && pViewShell->IsMainViewShell())
- {
- if (rpDescriptor.get()!=NULL && rpDescriptor->GetPage()!=NULL)
- {
-
mrSlideSorter.GetModel().GetDocument()->SetSelected(rpDescriptor->GetPage(),
sal_True);
- pViewShell->GetFrameView()->SetSelectedPage(
- (rpDescriptor->GetPage()->GetPageNum()-1)/2);
- }
- if (mrSlideSorter.GetViewShellBase() != NULL)
-
framework::FrameworkHelper::Instance(*mrSlideSorter.GetViewShellBase())->RequestView(
- framework::FrameworkHelper::msImpressViewURL,
- framework::FrameworkHelper::msCenterPaneURL);
- }
+ // Switch to the draw view. This is done only when the current
+ // view is the main view.
+ ViewShell* pViewShell = mrSlideSorter.GetViewShell();
+ if (pViewShell!=NULL && pViewShell->IsMainViewShell())
+ {
+ if (rpDescriptor.get()!=NULL && rpDescriptor->GetPage()!=NULL)
+ {
+
mrSlideSorter.GetModel().GetDocument()->SetSelected(rpDescriptor->GetPage(),
sal_True);
+ pViewShell->GetFrameView()->SetSelectedPage(
+ (rpDescriptor->GetPage()->GetPageNum()-1)/2);
+ }
+ if (mrSlideSorter.GetViewShellBase() != NULL)
+
framework::FrameworkHelper::Instance(*mrSlideSorter.GetViewShellBase())->RequestView(
+ framework::FrameworkHelper::msImpressViewURL,
+ framework::FrameworkHelper::msCenterPaneURL);
+ }
}
-
-
-
void SelectionFunction::ModeHandler::StartDrag (
- const Point& rMousePosition,
- const InsertionIndicatorHandler::Mode eMode)
-{
- (void)eMode;
- // Do not start a drag-and-drop operation when one is already active.
- // (when dragging pages from one document into another, pressing a
- // modifier key can trigger a MouseMotion event in the originating
- // window (focus still in there). Together with the mouse button pressed
- // (drag-and-drop is active) this triggers the start of drag-and-drop.)
- if (SD_MOD()->pTransferDrag != NULL)
- return;
+ const Point& rMousePosition,
+ const InsertionIndicatorHandler::Mode eMode)
+{
+ (void)eMode;
+ // Do not start a drag-and-drop operation when one is already active.
+ // (when dragging pages from one document into another, pressing a
+ // modifier key can trigger a MouseMotion event in the originating
+ // window (focus still in there). Together with the mouse button pressed
+ // (drag-and-drop is active) this triggers the start of drag-and-drop.)
+ if (SD_MOD()->pTransferDrag != NULL)
+ return;
if ( ! mrSlideSorter.GetProperties()->IsUIReadOnly())
{
- mrSelectionFunction.SwitchToDragAndDropMode(rMousePosition);
+ mrSelectionFunction.SwitchToDragAndDropMode(rMousePosition);
}
}
-
-
-
bool SelectionFunction::ModeHandler::IsMouseOverIndicatorAllowed (void) const
{
- return mbIsMouseOverIndicatorAllowed;
+ return mbIsMouseOverIndicatorAllowed;
}
-
-
-
//===== NormalModeHandler =====================================================
NormalModeHandler::NormalModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction)
- : ModeHandler(rSlideSorter, rSelectionFunction, true),
- maButtonDownLocation()
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction)
+ : ModeHandler(rSlideSorter, rSelectionFunction, true),
+ maButtonDownLocation()
{
}
-
-
-
NormalModeHandler::~NormalModeHandler (void)
{
}
-
-
-
SelectionFunction::Mode NormalModeHandler::GetMode (void) const
{
- return SelectionFunction::NormalMode;
+ return SelectionFunction::NormalMode;
}
-
-
-
void NormalModeHandler::Abort (void)
{
}
-
-
-
bool NormalModeHandler::ProcessButtonDownEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
-{
- // Remember the location where the left button is pressed. With
- // that we can filter away motion events that are caused by key
- // presses. We also can tune the minimal motion distance that
- // triggers a drag-and-drop operation.
- if ((rDescriptor.mnEventCode & BUTTON_DOWN) != 0)
- maButtonDownLocation = rDescriptor.maMousePosition;
-
- switch (rDescriptor.mnEventCode)
- {
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE:
- SetCurrentPage(rDescriptor.mpHitDescriptor);
- break;
-
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE:
- break;
-
- case BUTTON_DOWN | LEFT_BUTTON | DOUBLE_CLICK | OVER_SELECTED_PAGE:
- case BUTTON_DOWN | LEFT_BUTTON | DOUBLE_CLICK | OVER_UNSELECTED_PAGE:
- // A double click always shows the selected slide in the center
- // pane in an edit view.
- SetCurrentPage(rDescriptor.mpHitDescriptor);
- SwitchView(rDescriptor.mpHitDescriptor);
- break;
-
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE |
SHIFT_MODIFIER:
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE |
SHIFT_MODIFIER:
- // Range selection with the shift modifier.
- RangeSelect(rDescriptor.mpHitDescriptor);
- break;
-
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE |
OVER_BUTTON:
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE |
OVER_BUTTON:
-
OSL_ASSERT(mrSlideSorter.GetView().GetButtonBar().IsMouseOverButton());
-
- // Switch to button mode only when the buttons are visible
- // (or being faded in.)
- if
(mrSlideSorter.GetView().GetButtonBar().IsVisible(rDescriptor.mpHitDescriptor))
- {
- if (mrSelectionFunction.SwitchToButtonMode())
- ReprocessEvent(rDescriptor);
- }
- else
- {
- // When the buttons are not (yet) visible then behave like
- // the left button had been clicked over any other part of
- // the slide.
- SetCurrentPage(rDescriptor.mpHitDescriptor);
- }
- break;
-
- // Right button for context menu.
- case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE:
- // Single right click and shift+F10 select as preparation to
- // show the context menu. Change the selection only when the
- // page under the mouse is not selected. In this case the
- // selection is set to this single page. Otherwise the
- // selection is not modified.
- SetCurrentPage(rDescriptor.mpHitDescriptor);
- rDescriptor.mbMakeSelectionVisible = false;
- break;
-
- case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE:
- // Do not change the selection. Just adjust the insertion
indicator.
- rDescriptor.mbMakeSelectionVisible = false;
- break;
-
- case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK | NOT_OVER_PAGE:
- // Remember the current selection so that when a multi selection
- // is started, we can restore the previous selection.
- mrSlideSorter.GetModel().SaveCurrentSelection();
- DeselectAllPages();
- break;
-
- case ANY_MODIFIER(BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
NOT_OVER_PAGE):
- // Remember the current selection so that when a multi selection
- // is started, we can restore the previous selection.
- mrSlideSorter.GetModel().SaveCurrentSelection();
- DeselectAllPages();
- break;
-
- default:
- return false;
- }
- return true;
-}
-
-
+ SelectionFunction::EventDescriptor& rDescriptor)
+{
+ // Remember the location where the left button is pressed. With
+ // that we can filter away motion events that are caused by key
+ // presses. We also can tune the minimal motion distance that
+ // triggers a drag-and-drop operation.
+ if ((rDescriptor.mnEventCode & BUTTON_DOWN) != 0)
+ maButtonDownLocation = rDescriptor.maMousePosition;
+ switch (rDescriptor.mnEventCode)
+ {
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE:
+ SetCurrentPage(rDescriptor.mpHitDescriptor);
+ break;
+
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE:
+ break;
+
+ case BUTTON_DOWN | LEFT_BUTTON | DOUBLE_CLICK |
OVER_SELECTED_PAGE:
+ case BUTTON_DOWN | LEFT_BUTTON | DOUBLE_CLICK |
OVER_UNSELECTED_PAGE:
+ // A double click always shows the selected slide in
the center
+ // pane in an edit view.
+ SetCurrentPage(rDescriptor.mpHitDescriptor);
+ SwitchView(rDescriptor.mpHitDescriptor);
+ break;
+
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE | SHIFT_MODIFIER:
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE | SHIFT_MODIFIER:
+ // Range selection with the shift modifier.
+ RangeSelect(rDescriptor.mpHitDescriptor);
+ break;
+
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE | OVER_BUTTON:
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE | OVER_BUTTON:
+
OSL_ASSERT(mrSlideSorter.GetView().GetButtonBar().IsMouseOverButton());
+
+ // Switch to button mode only when the buttons are
visible
+ // (or being faded in.)
+ if
(mrSlideSorter.GetView().GetButtonBar().IsVisible(rDescriptor.mpHitDescriptor))
+ {
+ if (mrSelectionFunction.SwitchToButtonMode())
+ ReprocessEvent(rDescriptor);
+ }
+ else
+ {
+ // When the buttons are not (yet) visible then
behave like
+ // the left button had been clicked over any
other part of
+ // the slide.
+ SetCurrentPage(rDescriptor.mpHitDescriptor);
+ }
+ break;
+
+ // Right button for context menu.
+ case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE:
+ // Single right click and shift+F10 select as
preparation to
+ // show the context menu. Change the selection only
when the
+ // page under the mouse is not selected. In this case
the
+ // selection is set to this single page. Otherwise the
+ // selection is not modified.
+ SetCurrentPage(rDescriptor.mpHitDescriptor);
+ rDescriptor.mbMakeSelectionVisible = false;
+ break;
+
+ case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE:
+ // Do not change the selection. Just adjust the
insertion indicator.
+ rDescriptor.mbMakeSelectionVisible = false;
+ break;
+
+ case BUTTON_DOWN | RIGHT_BUTTON | SINGLE_CLICK | NOT_OVER_PAGE:
+ // Remember the current selection so that when a multi
selection
+ // is started, we can restore the previous selection.
+ mrSlideSorter.GetModel().SaveCurrentSelection();
+ DeselectAllPages();
+ break;
+
+ case ANY_MODIFIER(BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
NOT_OVER_PAGE):
+ // Remember the current selection so that when a multi
selection
+ // is started, we can restore the previous selection.
+ mrSlideSorter.GetModel().SaveCurrentSelection();
+ DeselectAllPages();
+ break;
+
+ default:
+ return false;
+ }
+ return true;
+}
bool NormalModeHandler::ProcessButtonUpEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- bool bIsProcessed (true);
- switch (rDescriptor.mnEventCode)
- {
- case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE:
- SetCurrentPage(rDescriptor.mpHitDescriptor);
- break;
-
- // Multi selection with the control modifier.
- case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE |
CONTROL_MODIFIER:
- mrSlideSorter.GetController().GetPageSelector().DeselectPage(
- rDescriptor.mpHitDescriptor);
- break;
-
- case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE |
CONTROL_MODIFIER:
- mrSlideSorter.GetController().GetPageSelector().SelectPage(
- rDescriptor.mpHitDescriptor);
- mrSlideSorter.GetView().UpdatePageUnderMouse(
- rDescriptor.mpHitDescriptor,
- rDescriptor.maMousePosition,
- false);
- break;
- case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK | NOT_OVER_PAGE:
- break;
-
- default:
- bIsProcessed = false;
- break;
- }
- mrSelectionFunction.SwitchToNormalMode();
- return bIsProcessed;
+ bool bIsProcessed (true);
+ switch (rDescriptor.mnEventCode)
+ {
+ case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE:
+ SetCurrentPage(rDescriptor.mpHitDescriptor);
+ break;
+
+ // Multi selection with the control modifier.
+ case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE | CONTROL_MODIFIER:
+
mrSlideSorter.GetController().GetPageSelector().DeselectPage(
+ rDescriptor.mpHitDescriptor);
+ break;
+
+ case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE | CONTROL_MODIFIER:
+
mrSlideSorter.GetController().GetPageSelector().SelectPage(
+ rDescriptor.mpHitDescriptor);
+ mrSlideSorter.GetView().UpdatePageUnderMouse(
+ rDescriptor.mpHitDescriptor,
+ rDescriptor.maMousePosition,
+ false);
+ break;
+ case BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK | NOT_OVER_PAGE:
+ break;
+
+ default:
+ bIsProcessed = false;
+ break;
+ }
+ mrSelectionFunction.SwitchToNormalMode();
+ return bIsProcessed;
}
-
-
-
-
bool NormalModeHandler::ProcessMotionEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
-{
- if (ModeHandler::ProcessMotionEvent(rDescriptor))
- return true;
-
- bool bIsProcessed (true);
- switch (rDescriptor.mnEventCode)
- {
- case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE):
- // SetCurrentPage(rDescriptor.mpHitDescriptor);
- // Fallthrough
-
- // A mouse motion without visible substitution starts that.
- case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE):
- {
- if (maButtonDownLocation)
- {
- const sal_Int32 nDistance (maButtonDownLocation
- ? ::std::max (
- abs(maButtonDownLocation->X() -
rDescriptor.maMousePosition.X()),
- abs(maButtonDownLocation->Y() -
rDescriptor.maMousePosition.Y()))
- : 0);
- if (nDistance > 3)
- StartDrag(
- rDescriptor.maMousePosition,
- (rDescriptor.mnEventCode & CONTROL_MODIFIER) != 0
- ? InsertionIndicatorHandler::CopyMode
- : InsertionIndicatorHandler::MoveMode);
- }
- }
- break;
-
- // A mouse motion not over a page starts a rectangle selection.
- case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
NOT_OVER_PAGE):
- mrSelectionFunction.SwitchToMultiSelectionMode(
- rDescriptor.maMouseModelPosition,
- rDescriptor.mnEventCode);
- break;
-
- default:
- bIsProcessed = false;
- break;
- }
- return bIsProcessed;
-}
-
-
+ SelectionFunction::EventDescriptor& rDescriptor)
+{
+ if (ModeHandler::ProcessMotionEvent(rDescriptor))
+ return true;
+ bool bIsProcessed (true);
+ switch (rDescriptor.mnEventCode)
+ {
+ case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE):
+// SetCurrentPage(rDescriptor.mpHitDescriptor);
+ // Fallthrough
+
+ // A mouse motion without visible substitution starts that.
+ case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE):
+ {
+ if (maButtonDownLocation)
+ {
+ const sal_Int32 nDistance (maButtonDownLocation
+ ? ::std::max (
+ abs(maButtonDownLocation->X() -
rDescriptor.maMousePosition.X()),
+ abs(maButtonDownLocation->Y() -
rDescriptor.maMousePosition.Y()))
+ : 0);
+ if (nDistance > 3)
+ StartDrag(
+ rDescriptor.maMousePosition,
+ (rDescriptor.mnEventCode &
CONTROL_MODIFIER) != 0
+ ?
InsertionIndicatorHandler::CopyMode
+ :
InsertionIndicatorHandler::MoveMode);
+ }
+ }
+ break;
+
+ // A mouse motion not over a page starts a rectangle
selection.
+ case ANY_MODIFIER(MOUSE_MOTION | LEFT_BUTTON | SINGLE_CLICK |
NOT_OVER_PAGE):
+ mrSelectionFunction.SwitchToMultiSelectionMode(
+ rDescriptor.maMouseModelPosition,
+ rDescriptor.mnEventCode);
+ break;
+
+ default:
+ bIsProcessed = false;
+ break;
+ }
+ return bIsProcessed;
+}
bool NormalModeHandler::ProcessDragEvent (SelectionFunction::EventDescriptor&
rDescriptor)
{
- mrSelectionFunction.SwitchToDragAndDropMode(rDescriptor.maMousePosition);
- ReprocessEvent(rDescriptor);
- return true;
+
mrSelectionFunction.SwitchToDragAndDropMode(rDescriptor.maMousePosition);
+ ReprocessEvent(rDescriptor);
+ return true;
}
-
-
-
void NormalModeHandler::RangeSelect (const model::SharedPageDescriptor&
rpDescriptor)
{
- PageSelector::UpdateLock aLock (mrSlideSorter);
- PageSelector& rSelector (mrSlideSorter.GetController().GetPageSelector());
-
- model::SharedPageDescriptor pAnchor (rSelector.GetSelectionAnchor());
- DeselectAllPages();
+ PageSelector::UpdateLock aLock (mrSlideSorter);
+ PageSelector& rSelector
(mrSlideSorter.GetController().GetPageSelector());
- if (pAnchor.get() != NULL)
- {
- // Select all pages between the anchor and the given one, including
- // the two.
- const sal_uInt16 nAnchorIndex ((pAnchor->GetPage()->GetPageNum()-1) /
2);
- const sal_uInt16 nOtherIndex
((rpDescriptor->GetPage()->GetPageNum()-1) / 2);
+ model::SharedPageDescriptor pAnchor (rSelector.GetSelectionAnchor());
+ DeselectAllPages();
- // Iterate over all pages in the range. Start with the anchor
- // page. This way the PageSelector will recognize it again as
- // anchor (the first selected page after a DeselectAllPages()
- // becomes the anchor.)
- const sal_uInt16 nStep ((nAnchorIndex < nOtherIndex) ? +1 : -1);
- sal_uInt16 nIndex (nAnchorIndex);
- while (true)
- {
- rSelector.SelectPage(nIndex);
- if (nIndex == nOtherIndex)
- break;
- nIndex = nIndex + nStep;
- }
- }
+ if (pAnchor.get() != NULL)
+ {
+ // Select all pages between the anchor and the given one,
including
+ // the two.
+ const sal_uInt16 nAnchorIndex
((pAnchor->GetPage()->GetPageNum()-1) / 2);
+ const sal_uInt16 nOtherIndex
((rpDescriptor->GetPage()->GetPageNum()-1) / 2);
+
+ // Iterate over all pages in the range. Start with the anchor
+ // page. This way the PageSelector will recognize it again as
+ // anchor (the first selected page after a DeselectAllPages()
+ // becomes the anchor.)
+ const sal_uInt16 nStep ((nAnchorIndex < nOtherIndex) ? +1 : -1);
+ sal_uInt16 nIndex (nAnchorIndex);
+ while (true)
+ {
+ rSelector.SelectPage(nIndex);
+ if (nIndex == nOtherIndex)
+ break;
+ nIndex = nIndex + nStep;
+ }
+ }
}
-
-
-
void NormalModeHandler::ResetButtonDownLocation (void)
{
- maButtonDownLocation = ::boost::optional<Point>();
+ maButtonDownLocation = ::boost::optional<Point>();
}
-
-
-
//===== MultiSelectionModeHandler =============================================
MultiSelectionModeHandler::MultiSelectionModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const Point& rMouseModelPosition,
- const sal_uInt32 nEventCode)
- : ModeHandler(rSlideSorter, rSelectionFunction, false),
- meSelectionMode(SM_Normal),
- maSecondCorner(rMouseModelPosition),
- maSavedPointer(mrSlideSorter.GetContentWindow()->GetPointer()),
- mnAnchorIndex(-1),
- mnSecondIndex(-1),
- maButtonBarLock(rSlideSorter)
-{
- const Pointer aSelectionPointer (POINTER_TEXT);
- mrSlideSorter.GetContentWindow()->SetPointer(aSelectionPointer);
- SetSelectionModeFromModifier(nEventCode);
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const Point& rMouseModelPosition,
+ const sal_uInt32 nEventCode)
+ : ModeHandler(rSlideSorter, rSelectionFunction, false),
+ meSelectionMode(SM_Normal),
+ maSecondCorner(rMouseModelPosition),
+ maSavedPointer(mrSlideSorter.GetContentWindow()->GetPointer()),
+ mnAnchorIndex(-1),
+ mnSecondIndex(-1),
+ maButtonBarLock(rSlideSorter)
+{
+ const Pointer aSelectionPointer (POINTER_TEXT);
+ mrSlideSorter.GetContentWindow()->SetPointer(aSelectionPointer);
+ SetSelectionModeFromModifier(nEventCode);
}
-
-
-
-
MultiSelectionModeHandler::~MultiSelectionModeHandler (void)
{
- mrSlideSorter.GetContentWindow()->SetPointer(maSavedPointer);
+ mrSlideSorter.GetContentWindow()->SetPointer(maSavedPointer);
}
-
-
-
SelectionFunction::Mode MultiSelectionModeHandler::GetMode (void) const
{
- return SelectionFunction::MultiSelectionMode;
+ return SelectionFunction::MultiSelectionMode;
}
-
-
-
void MultiSelectionModeHandler::Abort (void)
{
-
mrSlideSorter.GetView().RequestRepaint(mrSlideSorter.GetModel().RestoreSelection());
+
mrSlideSorter.GetView().RequestRepaint(mrSlideSorter.GetModel().RestoreSelection());
}
-
-
-
void MultiSelectionModeHandler::ProcessEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- // During a multi selection we do not want sudden jumps of the
- // visible area caused by moving newly selected pages into view.
- // Therefore disable that temporarily. The disabler object is
- // released at the end of the event processing, after the focus and
- // current slide have been updated.
- VisibleAreaManager::TemporaryDisabler aDisabler (mrSlideSorter);
+ // During a multi selection we do not want sudden jumps of the
+ // visible area caused by moving newly selected pages into view.
+ // Therefore disable that temporarily. The disabler object is
+ // released at the end of the event processing, after the focus and
+ // current slide have been updated.
+ VisibleAreaManager::TemporaryDisabler aDisabler (mrSlideSorter);
- ModeHandler::ProcessEvent(rDescriptor);
+ ModeHandler::ProcessEvent(rDescriptor);
}
-
-
-
bool MultiSelectionModeHandler::ProcessButtonUpEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON | SINGLE_CLICK))
- {
- mrSelectionFunction.SwitchToNormalMode();
- return true;
- }
- else
- return false;
+ if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON |
SINGLE_CLICK))
+ {
+ mrSelectionFunction.SwitchToNormalMode();
+ return true;
+ }
+ else
+ return false;
}
-
-
-
bool MultiSelectionModeHandler::ProcessMotionEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- // The selection rectangle is visible. Handle events accordingly.
- if (Match(rDescriptor.mnEventCode, MOUSE_MOTION | LEFT_BUTTON |
SINGLE_CLICK))
- {
- SetSelectionModeFromModifier(rDescriptor.mnEventCode);
- UpdatePosition(rDescriptor.maMousePosition, true);
- rDescriptor.mbMakeSelectionVisible = false;
- return true;
- }
- else
- return false;
+ // The selection rectangle is visible. Handle events accordingly.
+ if (Match(rDescriptor.mnEventCode, MOUSE_MOTION | LEFT_BUTTON |
SINGLE_CLICK))
+ {
+ SetSelectionModeFromModifier(rDescriptor.mnEventCode);
+ UpdatePosition(rDescriptor.maMousePosition, true);
+ rDescriptor.mbMakeSelectionVisible = false;
+ return true;
+ }
+ else
+ return false;
}
-
-
bool MultiSelectionModeHandler::HandleUnprocessedEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- if ( ! ModeHandler::HandleUnprocessedEvent(rDescriptor))
- {
- // If the event has not been processed then stop multi selection.
- mrSelectionFunction.SwitchToNormalMode();
- ReprocessEvent(rDescriptor);
- }
- return true;
+ if ( ! ModeHandler::HandleUnprocessedEvent(rDescriptor))
+ {
+ // If the event has not been processed then stop multi
selection.
+ mrSelectionFunction.SwitchToNormalMode();
+ ReprocessEvent(rDescriptor);
+ }
+ return true;
}
-
-
-
void MultiSelectionModeHandler::UpdatePosition (
- const Point& rMousePosition,
- const bool bAllowAutoScroll)
-{
- VisibleAreaManager::TemporaryDisabler aDisabler (mrSlideSorter);
-
- // Convert window coordinates into model coordinates (we need the
- // window coordinates for auto-scrolling because that remains
- // constant while scrolling.)
- SharedSdWindow pWindow (mrSlideSorter.GetContentWindow());
- const Point aMouseModelPosition (pWindow->PixelToLogic(rMousePosition));
-
- if ( ! (bAllowAutoScroll &&
mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
- rMousePosition,
- ::boost::bind(
- &MultiSelectionModeHandler::UpdatePosition,
- this,
- rMousePosition,
- false))))
- {
- UpdateModelPosition(aMouseModelPosition);
- }
+ const Point& rMousePosition,
+ const bool bAllowAutoScroll)
+{
+ VisibleAreaManager::TemporaryDisabler aDisabler (mrSlideSorter);
+
+ // Convert window coordinates into model coordinates (we need the
+ // window coordinates for auto-scrolling because that remains
+ // constant while scrolling.)
+ SharedSdWindow pWindow (mrSlideSorter.GetContentWindow());
+ const Point aMouseModelPosition (pWindow->PixelToLogic(rMousePosition));
+
+ if ( ! (bAllowAutoScroll &&
mrSlideSorter.GetController().GetScrollBarManager().AutoScroll(
+ rMousePosition,
+ ::boost::bind(
+ &MultiSelectionModeHandler::UpdatePosition,
+ this,
+ rMousePosition,
+ false))))
+ {
+ UpdateModelPosition(aMouseModelPosition);
+ }
}
-
-
-
void MultiSelectionModeHandler::SetSelectionModeFromModifier (
- const sal_uInt32 nEventCode)
+ const sal_uInt32 nEventCode)
{
- switch (nEventCode & MODIFIER_MASK)
- {
- case NO_MODIFIER:
- SetSelectionMode(SM_Normal);
- break;
+ switch (nEventCode & MODIFIER_MASK)
+ {
+ case NO_MODIFIER:
+ SetSelectionMode(SM_Normal);
+ break;
- case SHIFT_MODIFIER:
- SetSelectionMode(SM_Add);
- break;
+ case SHIFT_MODIFIER:
+ SetSelectionMode(SM_Add);
+ break;
- case CONTROL_MODIFIER:
- SetSelectionMode(SM_Toggle);
- break;
- }
+ case CONTROL_MODIFIER:
+ SetSelectionMode(SM_Toggle);
+ break;
+ }
}
-
-
-
void MultiSelectionModeHandler::SetSelectionMode (const SelectionMode
eSelectionMode)
{
- if (meSelectionMode != eSelectionMode)
- {
- meSelectionMode = eSelectionMode;
- UpdateSelection();
- }
+ if (meSelectionMode != eSelectionMode)
+ {
+ meSelectionMode = eSelectionMode;
+ UpdateSelection();
+ }
}
-
-
-
void MultiSelectionModeHandler::UpdateSelectionState (
- const model::SharedPageDescriptor& rpDescriptor,
- const bool bIsInSelection) const
+ const model::SharedPageDescriptor& rpDescriptor,
+ const bool bIsInSelection) const
{
- // Determine whether the page was selected before the rectangle
- // selection was started.
- const bool bWasSelected
(rpDescriptor->HasState(model::PageDescriptor::ST_WasSelected));
-
- // Combine the two selection states depending on the selection mode.
- bool bSelect (false);
- switch(meSelectionMode)
- {
- case SM_Normal:
- bSelect = bIsInSelection;
- break;
+ // Determine whether the page was selected before the rectangle
+ // selection was started.
+ const bool bWasSelected
(rpDescriptor->HasState(model::PageDescriptor::ST_WasSelected));
- case SM_Add:
- bSelect = bIsInSelection || bWasSelected;
- break;
-
- case SM_Toggle:
- if (bIsInSelection)
- bSelect = !bWasSelected;
- else
- bSelect = bWasSelected;
- break;
- }
+ // Combine the two selection states depending on the selection mode.
+ bool bSelect (false);
+ switch(meSelectionMode)
+ {
+ case SM_Normal:
+ bSelect = bIsInSelection;
+ break;
+
+ case SM_Add:
+ bSelect = bIsInSelection || bWasSelected;
+ break;
+
+ case SM_Toggle:
+ if (bIsInSelection)
+ bSelect = !bWasSelected;
+ else
+ bSelect = bWasSelected;
+ break;
+ }
- // Set the new selection state.
- if (bSelect)
-
mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
- else
-
mrSlideSorter.GetController().GetPageSelector().DeselectPage(rpDescriptor);
+ // Set the new selection state.
+ if (bSelect)
+
mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
+ else
+
mrSlideSorter.GetController().GetPageSelector().DeselectPage(rpDescriptor);
}
-
-
-
void MultiSelectionModeHandler::UpdateModelPosition (const Point&
rMouseModelPosition)
{
- maSecondCorner = rMouseModelPosition;
- UpdateSelection();
+ maSecondCorner = rMouseModelPosition;
+ UpdateSelection();
}
-
-
-
void MultiSelectionModeHandler::UpdateSelection (void)
{
- view::SlideSorterView::DrawLock aLock (mrSlideSorter);
+ view::SlideSorterView::DrawLock aLock (mrSlideSorter);
- model::SlideSorterModel& rModel (mrSlideSorter.GetModel());
- const sal_Int32 nPageCount (rModel.GetPageCount());
+ model::SlideSorterModel& rModel (mrSlideSorter.GetModel());
+ const sal_Int32 nPageCount (rModel.GetPageCount());
- const sal_Int32 nIndexUnderMouse (
- mrSlideSorter.GetView().GetLayouter().GetIndexAtPoint (
- maSecondCorner,
- false,
- false));
- if (nIndexUnderMouse>=0 && nIndexUnderMouse<nPageCount)
- {
- if (mnAnchorIndex < 0)
- mnAnchorIndex = nIndexUnderMouse;
- mnSecondIndex = nIndexUnderMouse;
+ const sal_Int32 nIndexUnderMouse (
+ mrSlideSorter.GetView().GetLayouter().GetIndexAtPoint (
+ maSecondCorner,
+ false,
+ false));
+ if (nIndexUnderMouse>=0 && nIndexUnderMouse<nPageCount)
+ {
+ if (mnAnchorIndex < 0)
+ mnAnchorIndex = nIndexUnderMouse;
+ mnSecondIndex = nIndexUnderMouse;
- Range aRange (mnAnchorIndex, mnSecondIndex);
- aRange.Justify();
+ Range aRange (mnAnchorIndex, mnSecondIndex);
+ aRange.Justify();
- for (sal_Int32 nIndex=0; nIndex<nPageCount; ++nIndex)
- {
- UpdateSelectionState(rModel.GetPageDescriptor(nIndex),
aRange.IsInside(nIndex));
- }
- }
+ for (sal_Int32 nIndex=0; nIndex<nPageCount; ++nIndex)
+ {
+ UpdateSelectionState(rModel.GetPageDescriptor(nIndex),
aRange.IsInside(nIndex));
+ }
+ }
}
-
-
-
//===== DragAndDropModeHandler ================================================
DragAndDropModeHandler::DragAndDropModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction,
- const Point& rMousePosition,
- ::Window* pWindow)
- : ModeHandler(rSlideSorter, rSelectionFunction, false)
-{
- SdTransferable* pDragTransferable = SD_MOD()->pTransferDrag;
- if (pDragTransferable==NULL && mrSlideSorter.GetViewShell() != NULL)
- {
- SlideSorterViewShell* pSlideSorterViewShell
- =
dynamic_cast<SlideSorterViewShell*>(mrSlideSorter.GetViewShell());
- if (pSlideSorterViewShell != NULL)
- pSlideSorterViewShell->StartDrag(rMousePosition, pWindow);
- pDragTransferable = SD_MOD()->pTransferDrag;
- }
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction,
+ const Point& rMousePosition,
+ ::Window* pWindow)
+ : ModeHandler(rSlideSorter, rSelectionFunction, false)
+{
+ SdTransferable* pDragTransferable = SD_MOD()->pTransferDrag;
+ if (pDragTransferable==NULL && mrSlideSorter.GetViewShell() != NULL)
+ {
+ SlideSorterViewShell* pSlideSorterViewShell
+ =
dynamic_cast<SlideSorterViewShell*>(mrSlideSorter.GetViewShell());
+ if (pSlideSorterViewShell != NULL)
+ pSlideSorterViewShell->StartDrag(rMousePosition,
pWindow);
+ pDragTransferable = SD_MOD()->pTransferDrag;
+ }
- mpDragAndDropContext.reset(new DragAndDropContext(mrSlideSorter));
- mrSlideSorter.GetController().GetInsertionIndicatorHandler()->Start(
- pDragTransferable != NULL
- && pDragTransferable->GetView()==&mrSlideSorter.GetView());
+ mpDragAndDropContext.reset(new DragAndDropContext(mrSlideSorter));
+ mrSlideSorter.GetController().GetInsertionIndicatorHandler()->Start(
+ pDragTransferable != NULL
+ &&
pDragTransferable->GetView()==&mrSlideSorter.GetView());
}
-
-
-
DragAndDropModeHandler::~DragAndDropModeHandler (void)
{
- if (mpDragAndDropContext)
- {
- // Disconnect the substitution handler from this selection function.
- mpDragAndDropContext->SetTargetSlideSorter();
- mpDragAndDropContext.reset();
- }
-
mrSlideSorter.GetController().GetInsertionIndicatorHandler()->End(Animator::AM_Animated);
+ if (mpDragAndDropContext)
+ {
+ // Disconnect the substitution handler from this selection
function.
+ mpDragAndDropContext->SetTargetSlideSorter();
+ mpDragAndDropContext.reset();
+ }
+
mrSlideSorter.GetController().GetInsertionIndicatorHandler()->End(Animator::AM_Animated);
}
-
-
-
SelectionFunction::Mode DragAndDropModeHandler::GetMode (void) const
{
- return SelectionFunction::DragAndDropMode;
+ return SelectionFunction::DragAndDropMode;
}
-
-
-
void DragAndDropModeHandler::Abort (void)
{
- mrSlideSorter.GetController().GetClipboard().Abort();
- if (mpDragAndDropContext)
- mpDragAndDropContext->Dispose();
- //
mrSlideSorter.GetView().RequestRepaint(mrSlideSorter.GetModel().RestoreSelection());
+ mrSlideSorter.GetController().GetClipboard().Abort();
+ if (mpDragAndDropContext)
+ mpDragAndDropContext->Dispose();
+//
mrSlideSorter.GetView().RequestRepaint(mrSlideSorter.GetModel().RestoreSelection());
}
-
-
-
bool DragAndDropModeHandler::ProcessButtonUpEvent (
- SelectionFunction::EventDescriptor& rDescriptor)
+ SelectionFunction::EventDescriptor& rDescriptor)
{
- if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON))
- {
- // The following Process() call may lead to the destruction
- // of rDescriptor.mpHitDescriptor so release our reference to it.
- rDescriptor.mpHitDescriptor.reset();
- mrSelectionFunction.SwitchToNormalMode();
- return true;
- }
- else
- return false;
+ if (Match(rDescriptor.mnEventCode, BUTTON_UP | LEFT_BUTTON))
+ {
+ // The following Process() call may lead to the destruction
+ // of rDescriptor.mpHitDescriptor so release our reference to
it.
+ rDescriptor.mpHitDescriptor.reset();
+ mrSelectionFunction.SwitchToNormalMode();
+ return true;
+ }
+ else
+ return false;
}
-
-
-
bool DragAndDropModeHandler::ProcessDragEvent
(SelectionFunction::EventDescriptor& rDescriptor)
{
- OSL_ASSERT(mpDragAndDropContext);
+ OSL_ASSERT(mpDragAndDropContext);
- if (rDescriptor.mbIsLeaving)
- {
- mrSelectionFunction.SwitchToNormalMode();
- }
- else if (mpDragAndDropContext)
- {
- mpDragAndDropContext->UpdatePosition(
- rDescriptor.maMousePosition,
- rDescriptor.meDragMode);
- }
+ if (rDescriptor.mbIsLeaving)
+ {
+ mrSelectionFunction.SwitchToNormalMode();
+ }
+ else if (mpDragAndDropContext)
+ {
+ mpDragAndDropContext->UpdatePosition(
+ rDescriptor.maMousePosition,
+ rDescriptor.meDragMode);
+ }
- return true;
+ return true;
}
-
-
-
//===== ButtonModeHandler =====================================================
ButtonModeHandler::ButtonModeHandler (
- SlideSorter& rSlideSorter,
- SelectionFunction& rSelectionFunction)
- : ModeHandler(rSlideSorter, rSelectionFunction, true)
+ SlideSorter& rSlideSorter,
+ SelectionFunction& rSelectionFunction)
+ : ModeHandler(rSlideSorter, rSelectionFunction, true)
{
}
-
-
-
ButtonModeHandler::~ButtonModeHandler (void)
{
}
-
-
-
SelectionFunction::Mode ButtonModeHandler::GetMode (void) const
{
- return SelectionFunction::ButtonMode;
+ return SelectionFunction::ButtonMode;
}
-
-
-
void ButtonModeHandler::Abort (void)
{
}
-
-
-
bool ButtonModeHandler::ProcessButtonDownEvent
(SelectionFunction::EventDescriptor& rDescriptor)
{
- switch (rDescriptor.mnEventCode)
- {
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_UNSELECTED_PAGE |
OVER_BUTTON:
- case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK | OVER_SELECTED_PAGE |
OVER_BUTTON:
- // Remember page and button index. When mouse button is
- // released over same page and button then invoke action of that
- // button.
- mrSlideSorter.GetView().GetButtonBar().ProcessButtonDownEvent(
- rDescriptor.mpHitDescriptor,
- rDescriptor.maMouseModelPosition);
- return true;
-
- default:
- return false;
- }
+ switch (rDescriptor.mnEventCode)
+ {
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_UNSELECTED_PAGE | OVER_BUTTON:
+ case BUTTON_DOWN | LEFT_BUTTON | SINGLE_CLICK |
OVER_SELECTED_PAGE | OVER_BUTTON:
+ // Remember page and button index. When mouse button is
released
+ // over same page and button then invoke action of that
button.
+
mrSlideSorter.GetView().GetButtonBar().ProcessButtonDownEvent(
+ rDescriptor.mpHitDescriptor,
+ rDescriptor.maMouseModelPosition);
+ return true;
+
+ default:
+ return false;
+ }
}
-
-
-
bool ButtonModeHandler::ProcessButtonUpEvent
(SelectionFunction::EventDescriptor& rDescriptor)
{
- switch (rDescriptor.mnEventCode & BUTTON_MASK)
- {
- case LEFT_BUTTON:
- mrSlideSorter.GetView().GetButtonBar().ProcessButtonUpEvent(
- rDescriptor.mpHitDescriptor,
- rDescriptor.maMouseModelPosition);
- mrSelectionFunction.SwitchToNormalMode();
- return true;
- }
+ switch (rDescriptor.mnEventCode & BUTTON_MASK)
+ {
+ case LEFT_BUTTON:
+
mrSlideSorter.GetView().GetButtonBar().ProcessButtonUpEvent(
+ rDescriptor.mpHitDescriptor,
+ rDescriptor.maMouseModelPosition);
+ mrSelectionFunction.SwitchToNormalMode();
+ return true;
+ }
- return false;
+ return false;
}
-
-
-
bool ButtonModeHandler::ProcessMotionEvent
(SelectionFunction::EventDescriptor& rDescriptor)
{
- switch (rDescriptor.mnEventCode & (MOUSE_MOTION | BUTTON_MASK))
- {
- case MOUSE_MOTION | LEFT_BUTTON:
- mrSlideSorter.GetView().GetButtonBar().ProcessMouseMotionEvent(
- rDescriptor.mpHitDescriptor,
- rDescriptor.maMouseModelPosition,
- true);
- return true;
-
- case MOUSE_MOTION:
- mrSlideSorter.GetView().GetButtonBar().ProcessMouseMotionEvent(
- rDescriptor.mpHitDescriptor,
- rDescriptor.maMouseModelPosition,
- false);
- return true;
- }
+ switch (rDescriptor.mnEventCode & (MOUSE_MOTION | BUTTON_MASK))
+ {
+ case MOUSE_MOTION | LEFT_BUTTON:
+
mrSlideSorter.GetView().GetButtonBar().ProcessMouseMotionEvent(
+ rDescriptor.mpHitDescriptor,
+ rDescriptor.maMouseModelPosition,
+ true);
+ return true;
+
+ case MOUSE_MOTION:
+
mrSlideSorter.GetView().GetButtonBar().ProcessMouseMotionEvent(
+ rDescriptor.mpHitDescriptor,
+ rDescriptor.maMouseModelPosition,
+ false);
+ return true;
+ }
- return false;
+ return false;
}
-
-
-
} } } // end of namespace ::sd::slidesorter::controller
+
+/* vim: set noet sw=4 ts=4: */