summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-02-10 16:46:22 +0000
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2020-02-16 23:06:08 +0100
commit6d1efc2b5dac95647b6e2c1ed7059e1964acf4fa (patch)
treeb1e94b66c40aa5d2bfecdcb8283e9b9a2eebc714
parent668cb9794ffb2cab5bad9ea0174c03adc7f88f8b (diff)
tdf#130440 only select first page fallback if seting to current page failed
Change-Id: Iee4f9cef9659837e9ce131e3bfc8da3e8d87bf84 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88388 Tested-by: Michael Stahl <michael.stahl@cib.de> Reviewed-by: Michael Stahl <michael.stahl@cib.de> (cherry picked from commit 4abdcf7c73d16f6fee28dd0502f06a8385ebf019) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88505 Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org> Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de> Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--sd/source/ui/slidesorter/controller/SlsFocusManager.cxx8
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx13
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx4
3 files changed, 12 insertions, 13 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
index d61784d28921..7e928cbfea36 100644
--- a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
@@ -141,13 +141,15 @@ model::SharedPageDescriptor FocusManager::GetFocusedPageDescriptor() const
return mrSlideSorter.GetModel().GetPageDescriptor(mnPageIndex);
}
-void FocusManager::SetFocusedPage (const model::SharedPageDescriptor& rpDescriptor)
+bool FocusManager::SetFocusedPage (const model::SharedPageDescriptor& rpDescriptor)
{
if (rpDescriptor.get() != nullptr)
{
FocusHider aFocusHider (*this);
mnPageIndex = (rpDescriptor->GetPage()->GetPageNum()-1)/2;
+ return true;
}
+ return false;
}
void FocusManager::SetFocusedPage (sal_Int32 nPageIndex)
@@ -156,9 +158,9 @@ void FocusManager::SetFocusedPage (sal_Int32 nPageIndex)
mnPageIndex = nPageIndex;
}
-void FocusManager::SetFocusedPageToCurrentPage()
+bool FocusManager::SetFocusedPageToCurrentPage()
{
- SetFocusedPage(mrSlideSorter.GetController().GetCurrentSlideManager()->GetCurrentSlide());
+ return SetFocusedPage(mrSlideSorter.GetController().GetCurrentSlideManager()->GetCurrentSlide());
}
bool FocusManager::IsFocusShowing() const
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
index bacf5fdf0323..9eaa7b50c8a2 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionObserver.cxx
@@ -121,16 +121,13 @@ void SelectionObserver::EndObservation()
}
maInsertedPages.clear();
}
- else
- {
- // tdf#129346 nothing currently selected, select something, if possible
- if (rSelector.GetPageCount())
- rSelector.SelectPage(0);
- }
aUpdateLock.Release();
- mrSlideSorter.GetController().GetFocusManager().SetFocusedPageToCurrentPage();
-
+ bool bSuccess = mrSlideSorter.GetController().GetFocusManager().SetFocusedPageToCurrentPage();
+ // tdf#129346 nothing currently selected, select something, if possible
+ // but (tdf#129346) only if setting focus to current page failed
+ if (!bSuccess && rSelector.GetPageCount())
+ rSelector.SelectPage(0);
}
} } } // end of namespace ::sd::slidesorter::controller
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx
index 6a8dec636a7c..0455206ebfcc 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsFocusManager.hxx
@@ -115,7 +115,7 @@ public:
One of the page descriptors that are currently managed by the
SlideSorterModel.
*/
- void SetFocusedPage (const model::SharedPageDescriptor& rDescriptor);
+ bool SetFocusedPage (const model::SharedPageDescriptor& rDescriptor);
/** Set the focused page to the one described by the given page
index. The visibility of the focus indicator is not modified.
@@ -124,7 +124,7 @@ public:
*/
void SetFocusedPage (sal_Int32 nPageIndex);
- void SetFocusedPageToCurrentPage();
+ bool SetFocusedPageToCurrentPage();
/** Return <TRUE/> when the focus indicator is currently shown. A
prerequisite is that the window managed by this focus manager has