summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sd/source/ui/framework/tools/FrameworkHelper.cxx17
-rw-r--r--sd/source/ui/inc/framework/FrameworkHelper.hxx11
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx6
-rw-r--r--sd/source/ui/slidesorter/controller/SlsPageSelector.cxx36
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx76
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx16
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx188
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx40
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx7
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx7
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx5
-rw-r--r--sd/source/ui/view/viewshe3.cxx3
12 files changed, 246 insertions, 166 deletions
diff --git a/sd/source/ui/framework/tools/FrameworkHelper.cxx b/sd/source/ui/framework/tools/FrameworkHelper.cxx
index 4ce1bfebf6ee..90f0c278e9a1 100644
--- a/sd/source/ui/framework/tools/FrameworkHelper.cxx
+++ b/sd/source/ui/framework/tools/FrameworkHelper.cxx
@@ -548,12 +548,27 @@ Reference<XResourceId> FrameworkHelper::RequestView (
void FrameworkHelper::RequestTaskPanel (
- const OUString& rsTaskPanelURL)
+ const OUString& rsTaskPanelURL,
+ const bool bEnsureTaskPaneIsVisible)
{
try
{
if (mxConfigurationController.is())
{
+ // Check the existence of the task pane.
+ if ( ! bEnsureTaskPaneIsVisible)
+ {
+ Reference<XConfiguration> xConfiguration (
+ mxConfigurationController->getCurrentConfiguration());
+ if (xConfiguration.is())
+ if ( ! xConfiguration->hasResource(
+ CreateResourceId(msTaskPaneURL, msRightPaneURL)))
+ {
+ // Task pane does is not active. Do not force it.
+ return;
+ }
+ }
+
// Create the resource id from URLs for the pane, the task pane
// view, and the task panel.
mxConfigurationController->requestResourceActivation(
diff --git a/sd/source/ui/inc/framework/FrameworkHelper.hxx b/sd/source/ui/inc/framework/FrameworkHelper.hxx
index 27ed5f6f8bef..dc3d05b59ecd 100644
--- a/sd/source/ui/inc/framework/FrameworkHelper.hxx
+++ b/sd/source/ui/inc/framework/FrameworkHelper.hxx
@@ -226,9 +226,18 @@ public:
/** Request the activation of the specified task panel in the standard
task pane.
+ @param rsTaskPanelURL
+ The panel that is to be activated.
+ @param bEnsureTaskPaneIsVisible
+ When this is <TRUE/> then the task pane is activated when not
+ yet active.
+ When this flag is <FALSE/> then the requested panel
+ is activated only when the task pane is already active. When it
+ is not active then this call is silently ignored.
*/
void RequestTaskPanel (
- const ::rtl::OUString& rsTaskPanelURL);
+ const ::rtl::OUString& rsTaskPanelURL,
+ const bool bEnsureTaskPaneIsVisible = true);
/** Process a slot call that requests a view shell change.
*/
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index e5076f0fa931..859b19246f05 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -445,13 +445,11 @@ bool SlideSorterController::Command (
// indicator so that the user knows where a page insertion
// would take place.
mpInsertionIndicatorHandler->Start(false);
+ mpInsertionIndicatorHandler->UpdateIndicatorIcon(
+ dynamic_cast<Transferable*>(SD_MOD()->pTransferClip));
mpInsertionIndicatorHandler->UpdatePosition(
pWindow->PixelToLogic(rEvent.GetMousePosPixel()),
InsertionIndicatorHandler::MoveMode);
- mpInsertionIndicatorHandler->UpdateIndicatorIcon(
- dynamic_cast<Transferable*>(SD_MOD()->pTransferClip));
- mpInsertionIndicatorHandler->UpdateIndicatorIcon(
- dynamic_cast<Transferable*>(SD_MOD()->pTransferClip));
pContext.reset(new InsertionIndicatorHandler::ForceShowContext(
mpInsertionIndicatorHandler));
}
diff --git a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
index 058cbb343e92..9329df1a3766 100644
--- a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
@@ -453,4 +453,40 @@ PageSelector::UpdateLock::~UpdateLock (void)
+//===== PageSelector::BroadcastLock ==============================================
+
+PageSelector::BroadcastLock::BroadcastLock (SlideSorter& rSlideSorter)
+ : mrSelector(rSlideSorter.GetController().GetPageSelector()),
+ mbIsMakeSelectionVisiblePending(false)
+{
+ mrSelector.DisableBroadcasting();
+}
+
+
+
+
+PageSelector::BroadcastLock::BroadcastLock (PageSelector& rSelector)
+ : mrSelector(rSelector)
+{
+ mrSelector.DisableBroadcasting();
+}
+
+
+
+
+PageSelector::BroadcastLock::~BroadcastLock (void)
+{
+ mrSelector.EnableBroadcasting(mbIsMakeSelectionVisiblePending);
+}
+
+
+
+
+void PageSelector::BroadcastLock::RequestMakeSelectionVisible (void)
+{
+ mbIsMakeSelectionVisiblePending = true;
+}
+
+
+
} } } // end of namespace ::sd::slidesorter::controller
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index c3b4f8f1fe2b..ac155377c0df 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -459,28 +459,23 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
bResult = TRUE;
break;
+ case KEY_HOME:
+ GotoPage(0);
+ bResult = TRUE;
+ break;
+
+ case KEY_END:
+ GotoPage(mrSlideSorter.GetModel().GetPageCount()-1);
+ bResult = TRUE;
+ break;
+
case KEY_DELETE:
case KEY_BACKSPACE:
{
if (mrSlideSorter.GetProperties()->IsUIReadOnly())
break;
- int nSelectedPagesCount = 0;
-
- // Count the selected pages and look if there any objects on any
- // of the selected pages so that we can warn the user and
- // prevent an accidental deletion.
- model::PageEnumeration aSelectedPages (
- model::PageEnumerationProvider::CreateSelectedPagesEnumeration(
- mrSlideSorter.GetModel()));
- while (aSelectedPages.HasMoreElements())
- {
- nSelectedPagesCount++;
- aSelectedPages.GetNextElement();
- }
-
- if (nSelectedPagesCount > 0)
- mrController.GetSelectionManager()->DeleteSelectedPages();
+ mrController.GetSelectionManager()->DeleteSelectedPages(rCode.GetCode()==KEY_DELETE);
mnShiftKeySelectionAnchor = -1;
bResult = TRUE;
@@ -750,23 +745,31 @@ void SelectionFunction::GotoNextPage (int nOffset)
SdPage* pPage = pDescriptor->GetPage();
OSL_ASSERT(pPage!=NULL);
sal_Int32 nIndex = (pPage->GetPageNum()-1) / 2;
- nIndex += nOffset;
- USHORT nPageCount = (USHORT)mrSlideSorter.GetModel().GetPageCount();
-
- 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)
- SetCurrentPage(pNextPageDescriptor);
- else
- {
- OSL_ASSERT(pNextPageDescriptor.get() != NULL);
- }
+ GotoPage(nIndex + nOffset);
+ }
+ mnShiftKeySelectionAnchor = -1;
+}
+
+
+
+
+void SelectionFunction::GotoPage (int nIndex)
+{
+ USHORT nPageCount = (USHORT)mrSlideSorter.GetModel().GetPageCount();
+
+ 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)
+ SetCurrentPage(pNextPageDescriptor);
+ else
+ {
+ OSL_ASSERT(pNextPageDescriptor.get() != NULL);
}
mnShiftKeySelectionAnchor = -1;
}
@@ -931,8 +934,8 @@ bool SelectionFunction::ProcessEvent (EventDescriptor& rDescriptor)
bool bResult (true);
- mrController.GetPageSelector().DisableBroadcasting();
- PageSelector::UpdateLock aLock (mrSlideSorter);
+ PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
+ PageSelector::UpdateLock aUpdateLock (mrSlideSorter);
// With the event code determine the type of operation with which to
// react to the event.
@@ -966,7 +969,8 @@ bool SelectionFunction::ProcessEvent (EventDescriptor& rDescriptor)
}
}
- mrController.GetPageSelector().EnableBroadcasting(rDescriptor.mbMakeSelectionVisible);
+ if (rDescriptor.mbMakeSelectionVisible)
+ aBroadcastLock.RequestMakeSelectionVisible();
return bResult;
}
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
index 2430332aacac..e1d42b161053 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
@@ -114,7 +114,7 @@ SelectionManager::~SelectionManager (void)
-void SelectionManager::DeleteSelectedPages (void)
+void SelectionManager::DeleteSelectedPages (const bool bSelectFollowingPage)
{
// Create some locks to prevent updates of the model, view, selection
// state while modifying any of them.
@@ -132,19 +132,23 @@ void SelectionManager::DeleteSelectedPages (void)
model::PageEnumeration aPageEnumeration (
PageEnumerationProvider::CreateSelectedPagesEnumeration(mrSlideSorter.GetModel()));
::std::vector<SdPage*> aSelectedPages;
- sal_Int32 nLastPageIndex (-1);
+ sal_Int32 nNewCurrentSlide (-1);
while (aPageEnumeration.HasMoreElements())
{
SharedPageDescriptor pDescriptor (aPageEnumeration.GetNextElement());
aSelectedPages.push_back(pDescriptor->GetPage());
- nLastPageIndex = pDescriptor->GetPageIndex();
+ if (bSelectFollowingPage || nNewCurrentSlide<0)
+ nNewCurrentSlide = pDescriptor->GetPageIndex();
}
if (aSelectedPages.empty())
return;
// Determine the slide to select (and thereby make the current slide)
// after the deletion.
- sal_Int32 nNewCurrentSlide (nLastPageIndex - aSelectedPages.size() + 1);
+ if (bSelectFollowingPage)
+ nNewCurrentSlide -= aSelectedPages.size() - 1;
+ else
+ --nNewCurrentSlide;
// The actual deletion of the selected pages is done in one of two
// helper functions. They are specialized for normal respectively for
@@ -164,7 +168,9 @@ void SelectionManager::DeleteSelectedPages (void)
mrController.GetFocusManager().ToggleFocus();
// Set the new current slide.
- if (nNewCurrentSlide >= mrSlideSorter.GetModel().GetPageCount())
+ if (nNewCurrentSlide < 0)
+ nNewCurrentSlide = 0;
+ else if (nNewCurrentSlide >= mrSlideSorter.GetModel().GetPageCount())
nNewCurrentSlide = mrSlideSorter.GetModel().GetPageCount()-1;
mrController.GetPageSelector().SelectPage(nNewCurrentSlide);
mrController.GetFocusManager().SetFocusedPage(nNewCurrentSlide);
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 7ea11e841a8e..c3f101fd60bb 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -1077,124 +1077,56 @@ bool SlotManager::RenameSlideFromDrawViewShell( USHORT nPageId, const String & r
*/
void SlotManager::InsertSlide (SfxRequest& rRequest)
{
- PageSelector& rSelector (mrSlideSorter.GetController().GetPageSelector());
- // The fallback insertion position is after the last slide.
- sal_Int32 nInsertionIndex (rSelector.GetPageCount() - 1);
- if (rSelector.GetSelectedPageCount() > 0)
- {
- // Deselect all but the last selected slide.
- bool bLastSelectedSlideSeen (false);
- for (int nIndex=rSelector.GetPageCount()-1; nIndex>=0; --nIndex)
- {
- if (rSelector.IsPageSelected(nIndex))
- {
- if (bLastSelectedSlideSeen)
- rSelector.DeselectPage (nIndex);
- else
- {
- nInsertionIndex = nIndex;
- bLastSelectedSlideSeen = true;
- }
- }
- }
- }
+ const sal_Int32 nInsertionIndex (GetInsertionPosition());
+ USHORT nPageCount ((USHORT)mrSlideSorter.GetModel().GetPageCount());
- // No selection. Is there an insertion indicator?
- else if (mrSlideSorter.GetController().GetInsertionIndicatorHandler()->IsActive())
- {
- // Select the page before the insertion indicator.
- nInsertionIndex
- = mrSlideSorter.GetController().GetInsertionIndicatorHandler()->GetInsertionPageIndex();
- nInsertionIndex --;
- rSelector.SelectPage (nInsertionIndex);
- }
+ PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter);
- // Is there a stored insertion position?
- else if (mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() >= 0)
+ SdPage* pNewPage = NULL;
+ if (mrSlideSorter.GetModel().GetEditMode() == EM_PAGE)
{
- nInsertionIndex
- = mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() - 1;
- rSelector.SelectPage(nInsertionIndex);
- }
-
- // Select the last page when there is at least one page.
- else if (rSelector.GetPageCount() > 0)
- {
- nInsertionIndex = rSelector.GetPageCount() - 1;
- rSelector.SelectPage (nInsertionIndex);
+ SlideSorterViewShell* pShell = dynamic_cast<SlideSorterViewShell*>(
+ mrSlideSorter.GetViewShell());
+ if (pShell != NULL)
+ {
+ pNewPage = pShell->CreateOrDuplicatePage (
+ rRequest,
+ mrSlideSorter.GetModel().GetPageType(),
+ nInsertionIndex>=0
+ ? mrSlideSorter.GetModel().GetPageDescriptor(nInsertionIndex)->GetPage()
+ : NULL);
+ }
}
-
- // Hope for the best that CreateOrDuplicatePage() can cope with an empty
- // selection.
else
{
- nInsertionIndex = -1;
- }
-
- USHORT nPageCount ((USHORT)mrSlideSorter.GetModel().GetPageCount());
-
- rSelector.DisableBroadcasting();
- // In order for SlideSorterController::GetActualPage() to select the
- // selected page as current page we have to turn off the focus
- // temporarily.
- {
- FocusManager::FocusHider aTemporaryFocusHider (
- mrSlideSorter.GetController().GetFocusManager());
-
- SdPage* pPreviousPage = NULL;
- if (nInsertionIndex >= 0)
- pPreviousPage = mrSlideSorter.GetModel()
- .GetPageDescriptor(nInsertionIndex)->GetPage();
-
- if (mrSlideSorter.GetModel().GetEditMode() == EM_PAGE)
- {
- SlideSorterViewShell* pShell = dynamic_cast<SlideSorterViewShell*>(
- mrSlideSorter.GetViewShell());
- if (pShell != NULL)
- {
- pShell->CreateOrDuplicatePage (
- rRequest,
- mrSlideSorter.GetModel().GetPageType(),
- pPreviousPage);
- }
- }
- else
+ // Use the API to create a new page.
+ SdDrawDocument* pDocument = mrSlideSorter.GetModel().GetDocument();
+ Reference<drawing::XMasterPagesSupplier> xMasterPagesSupplier (
+ pDocument->getUnoModel(), UNO_QUERY);
+ if (xMasterPagesSupplier.is())
{
- // Use the API to create a new page.
- SdDrawDocument* pDocument = mrSlideSorter.GetModel().GetDocument();
- Reference<drawing::XMasterPagesSupplier> xMasterPagesSupplier (
- pDocument->getUnoModel(), UNO_QUERY);
- if (xMasterPagesSupplier.is())
+ Reference<drawing::XDrawPages> xMasterPages (
+ xMasterPagesSupplier->getMasterPages());
+ if (xMasterPages.is())
{
- Reference<drawing::XDrawPages> xMasterPages (
- xMasterPagesSupplier->getMasterPages());
- if (xMasterPages.is())
- {
- xMasterPages->insertNewByIndex (nInsertionIndex+1);
+ xMasterPages->insertNewByIndex (nInsertionIndex+1);
- // Create shapes for the default layout.
- SdPage* pMasterPage = pDocument->GetMasterSdPage(
- (USHORT)(nInsertionIndex+1), PK_STANDARD);
- pMasterPage->CreateTitleAndLayout (TRUE,TRUE);
- }
+ // Create shapes for the default layout.
+ pNewPage = pDocument->GetMasterSdPage(
+ (USHORT)(nInsertionIndex+1), PK_STANDARD);
+ pNewPage->CreateTitleAndLayout (TRUE,TRUE);
}
}
}
+ if (pNewPage == NULL)
+ return;
// When a new page has been inserted then select it, make it the
// current page, and focus it.
- view::SlideSorterView::DrawLock aLock (mrSlideSorter);
- if (mrSlideSorter.GetModel().GetPageCount() > nPageCount)
- {
- nInsertionIndex++;
- model::SharedPageDescriptor pDescriptor = mrSlideSorter.GetModel().GetPageDescriptor(nInsertionIndex);
- if (pDescriptor.get() != NULL)
- {
- mrSlideSorter.GetController().GetCurrentSlideManager()->SwitchCurrentSlide(pDescriptor);
- mrSlideSorter.GetController().GetFocusManager().SetFocusedPage(pDescriptor);
- }
- }
- rSelector.EnableBroadcasting();
+ view::SlideSorterView::DrawLock aDrawLock (mrSlideSorter);
+ PageSelector::UpdateLock aUpdateLock (mrSlideSorter);
+ mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
+ mrSlideSorter.GetController().GetPageSelector().SelectPage(pNewPage);
}
@@ -1351,6 +1283,56 @@ void SlotManager::ChangeSlideExclusionState (
+sal_Int32 SlotManager::GetInsertionPosition (void)
+{
+ PageSelector& rSelector (mrSlideSorter.GetController().GetPageSelector());
+
+ // The insertion indicator is preferred. After all the user explicitly
+ // used it to define the insertion position.
+ if (mrSlideSorter.GetController().GetInsertionIndicatorHandler()->IsActive())
+ {
+ // Select the page before the insertion indicator.
+ return mrSlideSorter.GetController().GetInsertionIndicatorHandler()->GetInsertionPageIndex()
+ - 1;
+ }
+
+ // Is there a stored insertion position?
+ else if (mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() >= 0)
+ {
+ return mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() - 1;
+ }
+
+ // Use the index of the last selected slide.
+ else if (rSelector.GetSelectedPageCount() > 0)
+ {
+ for (int nIndex=rSelector.GetPageCount()-1; nIndex>=0; --nIndex)
+ if (rSelector.IsPageSelected(nIndex))
+ return nIndex;
+
+ // We should never get here.
+ OSL_ASSERT(false);
+ return rSelector.GetPageCount() - 1;
+ }
+
+ // Select the last page when there is at least one page.
+ else if (rSelector.GetPageCount() > 0)
+ {
+ return rSelector.GetPageCount() - 1;
+ }
+
+ // Hope for the best that CreateOrDuplicatePage() can cope with an empty
+ // selection.
+ else
+ {
+ // We should never get here because there has to be at least one page.
+ OSL_ASSERT(false);
+ return -1;
+ }
+}
+
+
+
+
//-----------------------------------------------------------------------------
namespace {
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx b/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx
index b301b5a97352..a8009aa8b915 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsPageSelector.hxx
@@ -114,20 +114,6 @@ public:
void PrepareModelChange (void);
void HandleModelChange (void);
- /** Enable the broadcasting of selection change events. This calls the
- SlideSorterController::SelectionHasChanged() method to do the actual
- work. When EnableBroadcasting has been called as many times as
- DisableBroadcasting() was called before and the selection has been
- changed in the mean time, this change will be broadcasted.
- */
- void EnableBroadcasting (bool bMakeSelectionVisible = true);
-
- /** Disable the broadcasting o selectio change events. Subsequent
- changes of the selection will set a flag that triggers the sending
- of events when EnableBroadcasting() is called.
- */
- void DisableBroadcasting (void);
-
/** Return the descriptor of the most recently selected page. This
works only when the page has not been de-selected in the mean time.
This method helps the view when it scrolls the selection into the
@@ -196,6 +182,18 @@ public:
PageSelector& mrSelector;
};
+ class BroadcastLock
+ {
+ public:
+ BroadcastLock (SlideSorter& rSlideSorter);
+ BroadcastLock (PageSelector& rPageSelector);
+ ~BroadcastLock (void);
+ void RequestMakeSelectionVisible (void);
+ private:
+ PageSelector& mrSelector;
+ bool mbIsMakeSelectionVisiblePending;
+ };
+
private:
model::SlideSorterModel& mrModel;
SlideSorter& mrSlideSorter;
@@ -210,6 +208,20 @@ private:
sal_Int32 mnUpdateLockCount;
bool mbIsUpdateCurrentPagePending;
+ /** Enable the broadcasting of selection change events. This calls the
+ SlideSorterController::SelectionHasChanged() method to do the actual
+ work. When EnableBroadcasting has been called as many times as
+ DisableBroadcasting() was called before and the selection has been
+ changed in the mean time, this change will be broadcasted.
+ */
+ void EnableBroadcasting (bool bMakeSelectionVisible = true);
+
+ /** Disable the broadcasting o selectio change events. Subsequent
+ changes of the selection will set a flag that triggers the sending
+ of events when EnableBroadcasting() is called.
+ */
+ void DisableBroadcasting (void);
+
void CountSelectedPages (void);
void UpdateCurrentPage (const bool bUpdateOnlyWhenPending = false);
};
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
index a6995f88bdcd..3d0b2eb34b23 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
@@ -177,6 +177,13 @@ private:
*/
void GotoNextPage (int nOffset);
+ /** Make the slide with the given index the new current slide.
+ @param nIndex
+ Index of the new current slide. When the new index is outside
+ the range of valid page numbers it is clipped to that range.
+ */
+ void GotoPage (int nIndex);
+
void ProcessMouseEvent (sal_uInt32 nEventType, const MouseEvent& rEvent);
void ProcessKeyEvent (const KeyEvent& rEvent);
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx
index 6ba0d0af0715..5b4d3f4b0a9e 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsSelectionManager.hxx
@@ -68,8 +68,13 @@ public:
/** Delete the currently selected slides. When this method returns the
selection is empty.
+ @param bSelectFollowingPage
+ When <TRUE/> then after deleting the selected pages make the
+ slide after the last selected page the new current page.
+ When <FALSE/> then make the first slide before the selected
+ pages the new current slide.
*/
- void DeleteSelectedPages (void);
+ void DeleteSelectedPages (const bool bSelectFollowingPage = true);
/** Move the maked pages to a position directly after the specified page.
*/
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
index e84262c8b677..feca487e95c4 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsSlotManager.hxx
@@ -112,6 +112,11 @@ private:
void AssignTransitionEffect (void);
+ /** Use one of several ways to determine where to insert a new page.
+ This can be the current selection or the insertion indicator.
+ */
+ sal_Int32 GetInsertionPosition (void);
+
DECL_LINK(UserEventCallback, void*);
};
diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx
index 7eb225db44bb..7469be4a0269 100644
--- a/sd/source/ui/view/viewshe3.cxx
+++ b/sd/source/ui/view/viewshe3.cxx
@@ -257,7 +257,8 @@ SdPage* ViewShell::CreateOrDuplicatePage (
&& rBase.GetMainViewShell()->GetShellType()!=ViewShell::ST_DRAW)
{
framework::FrameworkHelper::Instance(GetViewShellBase())->RequestTaskPanel(
- framework::FrameworkHelper::msLayoutTaskPanelURL);
+ framework::FrameworkHelper::msLayoutTaskPanelURL,
+ false);
}
// AutoLayouts muessen fertig sein