[Libreoffice-commits] core.git: sw/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 6 19:39:47 UTC 2020


 sw/source/uibase/inc/navipi.hxx   |    2 +-
 sw/source/uibase/utlui/navipi.cxx |   37 ++++++++++++++++++++++++-------------
 2 files changed, 25 insertions(+), 14 deletions(-)

New commits:
commit e3b14639dca24f5ca559044651d2140f8f4a0e74
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Mar 6 15:07:01 2020 +0000
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Mar 6 20:39:13 2020 +0100

    focus getting stuck in the navigator spinbutton
    
    Change-Id: I483cb726d6abc7cad41244e26811fb6e98d9fb3b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90113
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/uibase/inc/navipi.hxx b/sw/source/uibase/inc/navipi.hxx
index 6d48e6cda665..1404d826da83 100644
--- a/sw/source/uibase/inc/navipi.hxx
+++ b/sw/source/uibase/inc/navipi.hxx
@@ -101,7 +101,7 @@ class SwNavigationPI : public PanelLayout
     DECL_LINK( MenuSelectHdl, Menu *, bool );
     DECL_LINK( ChangePageHdl, Timer*, void );
     DECL_LINK( PageEditModifyHdl, weld::SpinButton&, void );
-    void EditAction();
+    bool EditAction();
     void UsePage();
 
 protected:
diff --git a/sw/source/uibase/utlui/navipi.cxx b/sw/source/uibase/utlui/navipi.cxx
index 5817e0a5ef05..c9c2cd1d0fa0 100644
--- a/sw/source/uibase/utlui/navipi.cxx
+++ b/sw/source/uibase/utlui/navipi.cxx
@@ -388,17 +388,28 @@ FactoryFunction SwNavigationPI::GetUITestFactory() const
 
 // Action-Handler Edit:
 // Switches to the page if the structure view is not turned on.
-void SwNavigationPI::EditAction()
+bool SwNavigationPI::EditAction()
 {
     SwView *pView = GetCreateView();
-    if (pView)
-    {
-        if(m_aPageChgIdle.IsActive())
-            m_aPageChgIdle.Stop();
-        m_pCreateView->GetWrtShell().GotoPage(GetPageEdit().get_value(), true);
-        m_pCreateView->GetEditWin().GrabFocus();
-        m_pCreateView->GetViewFrame()->GetBindings().Invalidate(FN_STAT_PAGE);
-    }
+    if (!pView)
+        return false;
+
+    if (m_aPageChgIdle.IsActive())
+        m_aPageChgIdle.Stop();
+
+    SwWrtShell &rSh = m_pCreateView->GetWrtShell();
+    sal_uInt16 nNewPage = GetPageEdit().get_value();
+
+    sal_uInt16 nPhyPage, nVirPage;
+    rSh.GetPageNum(nPhyPage, nVirPage);
+    if (nPhyPage == nNewPage)
+        return false;
+
+    rSh.GotoPage(nNewPage, true);
+    m_pCreateView->GetEditWin().GrabFocus();
+    m_pCreateView->GetViewFrame()->GetBindings().Invalidate(FN_STAT_PAGE);
+
+    return true;
 }
 
 void SwNavigationPI::ZoomOut()
@@ -1059,11 +1070,11 @@ bool SwNavigationPI::IsGlobalDoc() const
 
 IMPL_LINK_NOARG(SwNavigationPI, ChangePageHdl, Timer *, void)
 {
-    if (!IsDisposed())
-    {
-        EditAction();
+    if (IsDisposed())
+        return;
+
+    if (EditAction())
         GetPageEdit().GrabFocus();
-    }
 }
 
 IMPL_LINK_NOARG(SwNavigationPI, PageEditModifyHdl, weld::SpinButton&, void)


More information about the Libreoffice-commits mailing list