sfx2/source/sidebar/FocusManager.cxx | 35 +++++++++++++++++++++++------- sfx2/source/sidebar/SidebarController.cxx | 1 2 files changed, 28 insertions(+), 8 deletions(-)
New commits: commit 27ea5f66c788443aef38cfc5378ec6410d722a9f Author: Jim Raykowski <rayk...@gmail.com> AuthorDate: Sat Sep 1 01:22:57 2018 -0800 Commit: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> CommitDate: Thu Nov 1 10:18:54 2018 +0100 tdf#119631 Keyboard navigation: Skip hidden tabs in sidebar tab bar Change-Id: I6ac001c27d6947f379c9923ff8518f9983faa356 Reviewed-on: https://gerrit.libreoffice.org/62716 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/sfx2/source/sidebar/FocusManager.cxx b/sfx2/source/sidebar/FocusManager.cxx index a95b4405ffd0..b55c356364a2 100644 --- a/sfx2/source/sidebar/FocusManager.cxx +++ b/sfx2/source/sidebar/FocusManager.cxx @@ -453,21 +453,34 @@ void FocusManager::HandleKeyEvent ( else if (IsDeckTitleVisible()) FocusDeckTitle(); else - FocusButton(maButtons.size()-1); + { + // Focus the last button. + sal_Int32 nIndex(maButtons.size()-1); + while(!maButtons[nIndex].get()->IsVisible() && --nIndex > 0); + FocusButton(nIndex); + } break; case PC_DeckTitle: case PC_DeckToolBox: + { // Focus the last button. - FocusButton(maButtons.size()-1); + sal_Int32 nIndex(maButtons.size()-1); + while(!maButtons[nIndex].get()->IsVisible() && --nIndex > 0); + FocusButton(nIndex); break; + } case PC_TabBar: // Go to previous tab bar item. if (aLocation.mnIndex == 0) FocusPanel(maPanels.size()-1, true); else - FocusButton((aLocation.mnIndex + maButtons.size() - 1) % maButtons.size()); + { + sal_Int32 nIndex((aLocation.mnIndex + maButtons.size() - 1) % maButtons.size()); + while(!maButtons[nIndex].get()->IsVisible() && --nIndex > 0); + FocusButton(nIndex); + } break; default: @@ -501,13 +514,19 @@ void FocusManager::HandleKeyEvent ( case PC_TabBar: // Go to next tab bar item. if (aLocation.mnIndex < static_cast<sal_Int32>(maButtons.size())-1) - FocusButton(aLocation.mnIndex + 1); - else { - FocusPanel(0, true); - if (IsDeckTitleVisible()) - FocusDeckTitle(); + sal_Int32 nIndex(aLocation.mnIndex + 1); + while(!maButtons[nIndex].get()->IsVisible() && ++nIndex < static_cast<sal_Int32>(maButtons.size())); + if (nIndex < static_cast<sal_Int32>(maButtons.size())) + { + FocusButton(nIndex); + break; + } } + if (IsDeckTitleVisible()) + FocusDeckTitle(); + else + FocusPanel(0, true); break; default: diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx index 82f4eceebd28..338fd9d6137d 100644 --- a/sfx2/source/sidebar/SidebarController.cxx +++ b/sfx2/source/sidebar/SidebarController.cxx @@ -1097,6 +1097,7 @@ IMPL_LINK(SidebarController, OnMenuItemSelected, Menu*, pMenu, bool) // Notify the tab bar about the updated set of decks. mpTabBar->SetDecks(aDecks); mpTabBar->HighlightDeck(mpCurrentDeck->GetId()); + mpTabBar->UpdateFocusManager(maFocusManager); } mpParentWindow->GrabFocusToDocument(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits