[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - sw/source sw/uiconfig

Michael Stahl mstahl at redhat.com
Wed Mar 1 20:28:25 UTC 2017


 sw/source/ui/table/tabledlg.cxx             |   63 +++++++++++++++++-----------
 sw/source/uibase/table/tablepg.hxx          |    3 -
 sw/uiconfig/swriter/ui/tabletextflowpage.ui |   10 +++-
 3 files changed, 49 insertions(+), 27 deletions(-)

New commits:
commit 362ff67556cca0890ca01f2de44596491c0e9bc8
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Mar 1 17:20:41 2017 +0100

    tdf#77111 sw: fix page number offset on table dialog "Text Flow"
    
    Commit c2ccd20c0fd92bddfff76447754541705e3eb8f3 introduced 0 as a valid
    value for page number offset in sw core.
    
    Unfortunately the table dialog was not changed then; previously
    page number 0 would do automatic numbering, but since then 0 was set as
    the offset, and once you have a 0 offset there's no easy way to remove
    it, you have to remove the whole page break.
    
    * change the label before the text number edit widget to a checkbox
      that disables the edit widget
    * keep the id "pagenoft" so that translations still work
    * set initial value to 1; 0 is a really bad default since we can't
      export it to ODF
    * add a little bit of left margin so the line is indented below the
      upper line
    
    Change-Id: I70cf5a66d4191acd2c19b3d0a83609e2b348a886
    (cherry picked from commit c1e7fc6f497d7570cb0832c43647d295f8592567)
    Reviewed-on: https://gerrit.libreoffice.org/34763
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/ui/table/tabledlg.cxx b/sw/source/ui/table/tabledlg.cxx
index e96e195..611a2ce 100644
--- a/sw/source/ui/table/tabledlg.cxx
+++ b/sw/source/ui/table/tabledlg.cxx
@@ -1282,7 +1282,7 @@ SwTextFlowPage::SwTextFlowPage(vcl::Window* pParent, const SfxItemSet& rSet)
 
     get(m_pPageCollCB, "pagestyle");
     get(m_pPageCollLB, "pagestylelb");
-    get(m_pPageNoFT, "pagenoft");
+    get(m_pPageNoCB, "pagenoft");
     get(m_pPageNoNF, "pagenonf");
 
     get(m_pSplitCB, "split");
@@ -1307,6 +1307,8 @@ SwTextFlowPage::SwTextFlowPage(vcl::Window* pParent, const SfxItemSet& rSet)
         LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
     m_pPgBrkRB->SetClickHdl(
         LINK( this, SwTextFlowPage, PageBreakTypeHdl_Impl ) );
+    m_pPageNoCB->SetClickHdl(
+        LINK(this, SwTextFlowPage, PageNoClickHdl_Impl));
     m_pSplitCB->SetClickHdl(
         LINK( this, SwTextFlowPage, SplitHdl_Impl));
     m_pSplitRowCB->SetClickHdl(
@@ -1341,7 +1343,7 @@ void SwTextFlowPage::dispose()
     m_pPgBrkAfterRB.clear();
     m_pPageCollCB.clear();
     m_pPageCollLB.clear();
-    m_pPageNoFT.clear();
+    m_pPageNoCB.clear();
     m_pPageNoNF.clear();
     m_pSplitCB.clear();
     m_pSplitRowCB.clear();
@@ -1387,10 +1389,10 @@ bool  SwTextFlowPage::FillItemSet( SfxItemSet* rSet )
 
     //If we have a page style, then there's no break
     bool bPageItemPut = false;
-    if ( bState != (m_pPageCollCB->GetSavedValue() == 1) ||
-         ( bState &&
-           m_pPageCollLB->IsValueChangedFromSaved() )
-           || (m_pPageNoNF->IsEnabled() && m_pPageNoNF->IsValueModified()) )
+    if (   bState != (m_pPageCollCB->GetSavedValue() == TRISTATE_TRUE)
+        || (bState && m_pPageCollLB->IsValueChangedFromSaved())
+        || (m_pPageNoCB->IsEnabled() && m_pPageNoCB->IsValueChangedFromSaved())
+        || (m_pPageNoNF->IsEnabled() && m_pPageNoNF->IsValueModified()))
     {
         OUString sPage;
 
@@ -1399,12 +1401,15 @@ bool  SwTextFlowPage::FillItemSet( SfxItemSet* rSet )
             sPage = m_pPageCollLB->GetSelectEntry();
         }
         sal_uInt16 nPgNum = static_cast< sal_uInt16 >(m_pPageNoNF->GetValue());
-        if ( !pDesc || !pDesc->GetPageDesc() ||
-            ( pDesc->GetPageDesc() && ((pDesc->GetPageDesc()->GetName() != sPage) ||
-                    !comphelper::string::equals(m_pPageNoNF->GetSavedValue(), nPgNum))))
+        bool const usePageNo(bState && m_pPageNoCB->IsChecked());
+        boost::optional<sal_uInt16> const oPageNum(
+                (usePageNo) ? nPgNum : boost::optional<sal_Int16>());
+        if (!pDesc || !pDesc->GetPageDesc()
+            || (pDesc->GetPageDesc()->GetName() != sPage)
+            || (pDesc->GetNumOffset() != oPageNum))
         {
             SwFormatPageDesc aFormat( pShell->FindPageDescByName( sPage, true ) );
-            aFormat.SetNumOffset(bState ? nPgNum : 0);
+            aFormat.SetNumOffset(oPageNum);
             bModified |= nullptr != rSet->Put( aFormat );
             bPageItemPut = bState;
         }
@@ -1526,12 +1531,18 @@ void   SwTextFlowPage::Reset( const SfxItemSet* rSet )
                 OUString sPageDesc;
                 const SwPageDesc* pDesc = static_cast<const SwFormatPageDesc*>(pItem)->GetPageDesc();
 
-                //m_pPageNoNF->SetValue(static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset());
                 ::boost::optional<sal_uInt16> oNumOffset = static_cast<const SwFormatPageDesc*>(pItem)->GetNumOffset();
                 if (oNumOffset)
+                {
+                    m_pPageNoCB->Check();
+                    m_pPageNoNF->Enable(true);
                     m_pPageNoNF->SetValue(oNumOffset.get());
+                }
                 else
+                {
+                    m_pPageNoCB->Check(false);
                     m_pPageNoNF->Enable(false);
+                }
 
                 if(pDesc)
                     sPageDesc = pDesc->GetName();
@@ -1571,7 +1582,7 @@ void   SwTextFlowPage::Reset( const SfxItemSet* rSet )
                     m_pPgBrkCB->Check();
                     m_pPageCollCB->Enable(false);
                     m_pPageCollLB->Enable(false);
-                    m_pPageNoFT->Enable(false);
+                    m_pPageNoCB->Enable(false);
                     m_pPageNoNF->Enable(false);
                 }
                 switch ( eBreak )
@@ -1659,6 +1670,7 @@ void   SwTextFlowPage::Reset( const SfxItemSet* rSet )
     m_pColBrkRB->SaveValue();
     m_pPgBrkBeforeRB->SaveValue();
     m_pPgBrkAfterRB->SaveValue();
+    m_pPageNoCB->SaveValue();
     m_pPageNoNF->SaveValue();
     m_pTextDirectionLB->SaveValue();
     m_pVertOrientLB->SaveValue();
@@ -1673,7 +1685,7 @@ void SwTextFlowPage::SetShell(SwWrtShell* pSh)
     if(bHtmlMode)
     {
         m_pPageNoNF->Enable(false);
-        m_pPageNoFT->Enable(false);
+        m_pPageNoCB->Enable(false);
     }
 }
 
@@ -1695,8 +1707,8 @@ IMPL_LINK_NOARG(SwTextFlowPage, PageBreakHdl_Impl, Button*, void)
                 m_pPageCollLB->Enable(bEnable);
                 if(!bHtmlMode)
                 {
-                    m_pPageNoFT->Enable(bEnable);
-                    m_pPageNoNF->Enable(bEnable);
+                    m_pPageNoCB->Enable(bEnable);
+                    m_pPageNoNF->Enable(bEnable && m_pPageNoCB->IsChecked());
                 }
             }
     }
@@ -1705,7 +1717,7 @@ IMPL_LINK_NOARG(SwTextFlowPage, PageBreakHdl_Impl, Button*, void)
             m_pPageCollCB->Check( false );
             m_pPageCollCB->Enable(false);
             m_pPageCollLB->Enable(false);
-            m_pPageNoFT->Enable(false);
+            m_pPageNoCB->Enable(false);
             m_pPageNoNF->Enable(false);
             m_pPgBrkRB->       Enable(false);
             m_pColBrkRB->      Enable(false);
@@ -1730,8 +1742,8 @@ IMPL_LINK_NOARG(SwTextFlowPage, ApplyCollClickHdl_Impl, Button*, void)
     m_pPageCollLB->Enable(bEnable);
     if(!bHtmlMode)
     {
-        m_pPageNoFT->Enable(bEnable);
-        m_pPageNoNF->Enable(bEnable);
+        m_pPageNoCB->Enable(bEnable);
+        m_pPageNoNF->Enable(bEnable && m_pPageNoCB->IsChecked());
     }
 }
 
@@ -1749,8 +1761,8 @@ IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, Button*, pBtn, void )
             m_pPageCollLB->Enable(bEnable);
             if(!bHtmlMode)
             {
-                m_pPageNoFT->Enable(bEnable);
-                m_pPageNoNF->Enable(bEnable);
+                m_pPageNoCB->Enable(bEnable);
+                m_pPageNoNF->Enable(bEnable && m_pPageNoCB->IsChecked());
             }
         }
         else if (pBtn == m_pPgBrkAfterRB)
@@ -1758,7 +1770,7 @@ IMPL_LINK( SwTextFlowPage, PageBreakPosHdl_Impl, Button*, pBtn, void )
             m_pPageCollCB->Check( false );
             m_pPageCollCB->Enable(false);
             m_pPageCollLB->Enable(false);
-            m_pPageNoFT->Enable(false);
+            m_pPageNoCB->Enable(false);
             m_pPageNoNF->Enable(false);
         }
     }
@@ -1771,13 +1783,18 @@ IMPL_LINK( SwTextFlowPage, PageBreakTypeHdl_Impl, Button*, pBtn, void )
         m_pPageCollCB->Check(false);
         m_pPageCollCB->Enable(false);
         m_pPageCollLB->Enable(false);
-        m_pPageNoFT->Enable(false);
+        m_pPageNoCB->Enable(false);
         m_pPageNoNF->Enable(false);
     }
     else if ( m_pPgBrkBeforeRB->IsChecked() )
         PageBreakPosHdl_Impl(m_pPgBrkBeforeRB);
 }
 
+IMPL_LINK_NOARG(SwTextFlowPage, PageNoClickHdl_Impl, Button*, void)
+{
+    m_pPageNoNF->Enable(m_pPageNoCB->IsChecked());
+}
+
 IMPL_LINK( SwTextFlowPage, SplitHdl_Impl, Button*, pBox, void )
 {
     m_pSplitRowCB->Enable(static_cast<CheckBox*>(pBox)->IsChecked());
@@ -1804,7 +1821,7 @@ void SwTextFlowPage::DisablePageBreak()
     m_pPgBrkAfterRB->Disable();
     m_pPageCollCB->Disable();
     m_pPageCollLB->Disable();
-    m_pPageNoFT->Disable();
+    m_pPageNoCB->Disable();
     m_pPageNoNF->Disable();
 }
 
diff --git a/sw/source/uibase/table/tablepg.hxx b/sw/source/uibase/table/tablepg.hxx
index 63a2707..1a9ebb6 100644
--- a/sw/source/uibase/table/tablepg.hxx
+++ b/sw/source/uibase/table/tablepg.hxx
@@ -155,7 +155,7 @@ class SwTextFlowPage : public SfxTabPage
 
     VclPtr<CheckBox>       m_pPageCollCB;
     VclPtr<ListBox>        m_pPageCollLB;
-    VclPtr<FixedText>      m_pPageNoFT;
+    VclPtr<CheckBox>       m_pPageNoCB;
     VclPtr<NumericField>   m_pPageNoNF;
     VclPtr<CheckBox>       m_pSplitCB;
     VclPtr<TriStateBox>    m_pSplitRowCB;
@@ -176,6 +176,7 @@ class SwTextFlowPage : public SfxTabPage
     DECL_LINK(ApplyCollClickHdl_Impl, Button*, void);
     DECL_LINK( PageBreakPosHdl_Impl, Button*, void );
     DECL_LINK( PageBreakTypeHdl_Impl, Button*, void );
+    DECL_LINK(PageNoClickHdl_Impl, Button*, void);
     DECL_LINK( SplitHdl_Impl, Button*, void );
     DECL_STATIC_LINK( SwTextFlowPage, SplitRowHdl_Impl, Button*, void );
     DECL_LINK( HeadLineCBClickHdl, Button* = nullptr, void );
diff --git a/sw/uiconfig/swriter/ui/tabletextflowpage.ui b/sw/uiconfig/swriter/ui/tabletextflowpage.ui
index 76b2f3c..4cbc99c0 100644
--- a/sw/uiconfig/swriter/ui/tabletextflowpage.ui
+++ b/sw/uiconfig/swriter/ui/tabletextflowpage.ui
@@ -6,6 +6,7 @@
     <property name="upper">9999</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
+    <property name="value">1</property>
   </object>
   <object class="GtkAdjustment" id="adjustment2">
     <property name="upper">100</property>
@@ -203,6 +204,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
+                        <property name="margin_left">22</property>
                         <property name="use_underline">True</property>
                         <property name="xalign">0</property>
                         <property name="draw_indicator">True</property>
@@ -216,12 +218,11 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkLabel" id="pagenoft">
+                      <object class="GtkCheckButton" id="pagenoft">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
+                        <property name="can_focus">True</property>
                         <property name="label" translatable="yes">Page _number</property>
                         <property name="use_underline">True</property>
-                        <property name="mnemonic_widget">pagenonf</property>
                       </object>
                       <packing>
                         <property name="left_attach">2</property>
@@ -234,6 +235,9 @@
                         <property name="can_focus">True</property>
                         <property name="invisible_char">•</property>
                         <property name="adjustment">adjustment1</property>
+                        <accessibility>
+                          <relation type="labelled-by" target="pagenoft"/>
+                        </accessibility>
                       </object>
                       <packing>
                         <property name="left_attach">3</property>


More information about the Libreoffice-commits mailing list