diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-10 16:46:22 +0000 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2020-02-16 23:06:08 +0100 |
commit | 6d1efc2b5dac95647b6e2c1ed7059e1964acf4fa (patch) | |
tree | b1e94b66c40aa5d2bfecdcb8283e9b9a2eebc714 | |
parent | 668cb9794ffb2cab5bad9ea0174c03adc7f88f8b (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>
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 |