[Libreoffice-commits] core.git: include/vcl sw/inc sw/source sw/uiconfig vcl/inc vcl/source vcl/unx

Caolán McNamara caolanm at redhat.com
Mon Apr 16 19:13:06 UTC 2018


 include/vcl/weld.hxx                      |    3 
 sw/inc/swabstdlg.hxx                      |    2 
 sw/source/ui/dialog/swdlgfact.cxx         |   25 ++-
 sw/source/ui/dialog/swdlgfact.hxx         |   11 +
 sw/source/ui/misc/insfnote.cxx            |  223 +++++++++++++-----------------
 sw/source/uibase/inc/insfnote.hxx         |   71 ++++-----
 sw/source/uibase/shells/textsh1.cxx       |    6 
 sw/source/uibase/uiview/viewdlg2.cxx      |    2 
 sw/uiconfig/swriter/ui/insertfootnote.ui  |   22 ++
 vcl/inc/unx/gtk/gtkinst.hxx               |    2 
 vcl/source/app/salvtables.cxx             |   10 +
 vcl/unx/gtk3/gtk3gtkinst.cxx              |   84 +++++++++++
 vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx |    5 
 13 files changed, 284 insertions(+), 182 deletions(-)

New commits:
commit 6703b806a7d33f27bdec53d5c897beac94308fd9
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Apr 16 10:44:32 2018 +0100

    weld SwInsFootNoteDlg
    
    Change-Id: I54849e2336d093e9044d4b32275387fa04e3bab9
    Reviewed-on: https://gerrit.libreoffice.org/52963
    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/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 52585c65b506..74ce9a7ab37d 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -409,6 +409,9 @@ public:
     virtual void set_position(int nCursorPos) = 0;
     virtual void set_editable(bool bEditable) = 0;
 
+    virtual vcl::Font get_font() = 0;
+    virtual void set_font(const vcl::Font& rFont) = 0;
+
     void connect_changed(const Link<Entry&, void>& rLink) { m_aChangeHdl = rLink; }
 
     void connect_insert_text(const Link<OUString&, bool>& rLink) { m_aInsertTextHdl = rLink; }
diff --git a/sw/inc/swabstdlg.hxx b/sw/inc/swabstdlg.hxx
index a72a8f17fde1..8e35a4114fc9 100644
--- a/sw/inc/swabstdlg.hxx
+++ b/sw/inc/swabstdlg.hxx
@@ -462,7 +462,7 @@ public:
                                                 SwWrtShell *pWrtShell) = 0;
     virtual VclPtr<AbstractFieldInputDlg>        CreateFieldInputDlg(vcl::Window *pParent,
         SwWrtShell &rSh, SwField* pField, bool bPrevButton, bool bNextButton) = 0;
-    virtual VclPtr<AbstractInsFootNoteDlg>     CreateInsFootNoteDlg(vcl::Window * pParent,
+    virtual VclPtr<AbstractInsFootNoteDlg>     CreateInsFootNoteDlg(weld::Window * pParent,
         SwWrtShell &rSh, bool bEd = false) = 0;
     virtual VclPtr<VclAbstractDialog>          CreateTitlePageDlg ( vcl::Window * pParent ) = 0;
     virtual VclPtr<VclAbstractDialog>         CreateVclSwViewDialog(SwView& rView) = 0;
diff --git a/sw/source/ui/dialog/swdlgfact.cxx b/sw/source/ui/dialog/swdlgfact.cxx
index b105bd332808..880792e93a84 100644
--- a/sw/source/ui/dialog/swdlgfact.cxx
+++ b/sw/source/ui/dialog/swdlgfact.cxx
@@ -145,11 +145,17 @@ short AbstractSwRenameXNamedDlg_Impl::Execute()
 IMPL_ABSTDLG_BASE(AbstractSwModalRedlineAcceptDlg_Impl);
 IMPL_ABSTDLG_BASE(AbstractGlossaryDlg_Impl);
 IMPL_ABSTDLG_BASE(AbstractFieldInputDlg_Impl);
-IMPL_ABSTDLG_BASE(AbstractInsFootNoteDlg_Impl);
+
+short AbstractInsFootNoteDlg_Impl::Execute()
+{
+    return m_xDlg->execute();
+}
+
 short AbstractInsTableDlg_Impl::Execute()
 {
     return m_xDlg->run();
 }
+
 IMPL_ABSTDLG_BASE(AbstractJavaEditDialog_Impl);
 IMPL_ABSTDLG_BASE(AbstractMailMergeDlg_Impl);
 IMPL_ABSTDLG_BASE(AbstractMailMergeCreateFromDlg_Impl);
@@ -456,27 +462,27 @@ bool AbstractFieldInputDlg_Impl::NextButtonPressed() const
 
 OUString AbstractInsFootNoteDlg_Impl::GetFontName()
 {
-    return pDlg->GetFontName();
+    return m_xDlg->GetFontName();
 }
 
 bool AbstractInsFootNoteDlg_Impl::IsEndNote()
 {
-    return pDlg->IsEndNote();
+    return m_xDlg->IsEndNote();
 }
 
 OUString AbstractInsFootNoteDlg_Impl::GetStr()
 {
-    return pDlg->GetStr();
+    return m_xDlg->GetStr();
 }
 
-void AbstractInsFootNoteDlg_Impl::SetHelpId( const OString& sHelpId )
+void AbstractInsFootNoteDlg_Impl::SetHelpId(const OString& rHelpId)
 {
-    pDlg->SetHelpId( sHelpId );
+    m_xDlg->set_help_id(rHelpId);
 }
 
 void AbstractInsFootNoteDlg_Impl::SetText( const OUString& rStr )
 {
-    pDlg->SetText( rStr );
+    m_xDlg->set_title(rStr);
 }
 
 void AbstractInsTableDlg_Impl::GetValues( OUString& rName, sal_uInt16& rRow, sal_uInt16& rCol,
@@ -928,10 +934,9 @@ VclPtr<AbstractFieldInputDlg> SwAbstractDialogFactory_Impl::CreateFieldInputDlg(
 }
 
 VclPtr<AbstractInsFootNoteDlg> SwAbstractDialogFactory_Impl::CreateInsFootNoteDlg(
-    vcl::Window * pParent, SwWrtShell &rSh, bool bEd )
+    weld::Window * pParent, SwWrtShell &rSh, bool bEd )
 {
-    VclPtr<SwInsFootNoteDlg> pDlg = VclPtr<SwInsFootNoteDlg>::Create(pParent, rSh, bEd);
-    return VclPtr<AbstractInsFootNoteDlg_Impl>::Create( pDlg );
+    return VclPtr<AbstractInsFootNoteDlg_Impl>::Create(new SwInsFootNoteDlg(pParent, rSh, bEd));
 }
 
 VclPtr<VclAbstractDialog> SwAbstractDialogFactory_Impl::CreateTitlePageDlg ( vcl::Window *pParent )
diff --git a/sw/source/ui/dialog/swdlgfact.hxx b/sw/source/ui/dialog/swdlgfact.hxx
index 363f110362d4..503049b63f8b 100644
--- a/sw/source/ui/dialog/swdlgfact.hxx
+++ b/sw/source/ui/dialog/swdlgfact.hxx
@@ -354,7 +354,14 @@ class AbstractFieldInputDlg_Impl : public AbstractFieldInputDlg
 class SwInsFootNoteDlg;
 class AbstractInsFootNoteDlg_Impl : public AbstractInsFootNoteDlg
 {
-    DECL_ABSTDLG_BASE(AbstractInsFootNoteDlg_Impl,SwInsFootNoteDlg)
+protected:
+    std::unique_ptr<SwInsFootNoteDlg> m_xDlg;
+public:
+    explicit AbstractInsFootNoteDlg_Impl(SwInsFootNoteDlg* p)
+        : m_xDlg(p)
+    {
+    }
+    virtual short Execute() override;
     virtual OUString        GetFontName() override;
     virtual bool            IsEndNote() override;
     virtual OUString        GetStr() override;
@@ -563,7 +570,7 @@ public:
     virtual VclPtr<AbstractFieldInputDlg>        CreateFieldInputDlg(vcl::Window *pParent,
         SwWrtShell &rSh, SwField* pField, bool bPrevButton, bool bNextButton) override;
     virtual VclPtr<AbstractInsFootNoteDlg>     CreateInsFootNoteDlg(
-        vcl::Window * pParent, SwWrtShell &rSh, bool bEd = false) override;
+        weld::Window * pParent, SwWrtShell &rSh, bool bEd = false) override;
     virtual VclPtr<VclAbstractDialog>         CreateTitlePageDlg ( vcl::Window * pParent ) override;
     virtual VclPtr<VclAbstractDialog>         CreateVclSwViewDialog(SwView& rView) override;
     virtual VclPtr<AbstractInsTableDlg>        CreateInsTableDlg(SwView& rView) override;
diff --git a/sw/source/ui/misc/insfnote.cxx b/sw/source/ui/misc/insfnote.cxx
index 9a3aea7d3953..19dc1c01c0c8 100644
--- a/sw/source/ui/misc/insfnote.cxx
+++ b/sw/source/ui/misc/insfnote.cxx
@@ -43,169 +43,149 @@ static bool bFootnote = true;
 void SwInsFootNoteDlg::Apply()
 {
     OUString aStr;
-    if ( m_pNumberCharBtn->IsChecked() )
-        aStr = m_pNumberCharEdit->GetText();
+    if ( m_xNumberCharBtn->get_active() )
+        aStr = m_xNumberCharEdit->get_text();
 
-    if ( bEdit )
+    if (m_bEdit)
     {
-        rSh.StartAction();
-        rSh.Left(CRSR_SKIP_CHARS, false, 1, false );
-        rSh.StartUndo( SwUndoId::START );
-        SwFormatFootnote aNote( m_pEndNoteBtn->IsChecked() );
+        m_rSh.StartAction();
+        m_rSh.Left(CRSR_SKIP_CHARS, false, 1, false );
+        m_rSh.StartUndo( SwUndoId::START );
+        SwFormatFootnote aNote( m_xEndNoteBtn->get_active() );
         aNote.SetNumStr( aStr );
 
-        if( rSh.SetCurFootnote( aNote ) && bExtCharAvailable )
+        if (m_rSh.SetCurFootnote( aNote ) && m_bExtCharAvailable)
         {
-            rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
-            SfxItemSet aSet( rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{} );
-            rSh.GetCurAttr( aSet );
+            m_rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
+            SfxItemSet aSet(m_rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{});
+            m_rSh.GetCurAttr(aSet);
             const SvxFontItem &rFont = aSet.Get( RES_CHRATR_FONT );
             SvxFontItem aFont( rFont.GetFamily(), m_aFontName,
                                rFont.GetStyleName(), rFont.GetPitch(),
-                               eCharSet, RES_CHRATR_FONT );
+                               m_eCharSet, RES_CHRATR_FONT );
             aSet.Put( aFont );
-            rSh.SetAttrSet( aSet, SetAttrMode::DONTEXPAND );
-            rSh.ResetSelect(nullptr, false);
-            rSh.Left(CRSR_SKIP_CHARS, false, 1, false );
+            m_rSh.SetAttrSet( aSet, SetAttrMode::DONTEXPAND );
+            m_rSh.ResetSelect(nullptr, false);
+            m_rSh.Left(CRSR_SKIP_CHARS, false, 1, false );
         }
-        rSh.EndUndo( SwUndoId::END );
-        rSh.EndAction();
+        m_rSh.EndUndo( SwUndoId::END );
+        m_rSh.EndAction();
     }
 
-    bFootnote = m_pFootnoteBtn->IsChecked();
+    bFootnote = m_xFootnoteBtn->get_active();
 }
 
-IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberCharHdl, Button*, void)
+IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberCharHdl, weld::Button&, void)
 {
-    m_pNumberCharEdit->GrabFocus();
-    m_pOkBtn->Enable( !m_pNumberCharEdit->GetText().isEmpty() || bExtCharAvailable );
+    m_xNumberCharEdit->grab_focus();
+    m_xOkBtn->set_sensitive( !m_xNumberCharEdit->get_text().isEmpty() || m_bExtCharAvailable );
 }
 
-IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberEditHdl, Edit&, void)
+IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberEditHdl, weld::Entry&, void)
 {
-    m_pNumberCharBtn->Check();
-    m_pOkBtn->Enable( !m_pNumberCharEdit->GetText().isEmpty() );
+    m_xNumberCharBtn->set_active(true);
+    m_xOkBtn->set_sensitive( !m_xNumberCharEdit->get_text().isEmpty() );
 }
 
-IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberAutoBtnHdl, Button*, void)
+IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberAutoBtnHdl, weld::Button&, void)
 {
-    m_pOkBtn->Enable();
+    m_xOkBtn->set_sensitive(true);
 }
 
-IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberExtCharHdl, Button*, void)
+IMPL_LINK_NOARG(SwInsFootNoteDlg, NumberExtCharHdl, weld::Button&, void)
 {
-    m_pNumberCharBtn->Check();
+    m_xNumberCharBtn->set_active(true);
 
-    SfxItemSet aSet( rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{} );
-    rSh.GetCurAttr( aSet );
+    SfxItemSet aSet(m_rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{});
+    m_rSh.GetCurAttr( aSet );
     const SvxFontItem &rFont = aSet.Get( RES_CHRATR_FONT );
 
-    SfxAllItemSet aAllSet( rSh.GetAttrPool() );
+    SfxAllItemSet aAllSet(m_rSh.GetAttrPool());
     aAllSet.Put( SfxBoolItem( FN_PARAM_1, false ) );
     aAllSet.Put( rFont );
 
     SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-    ScopedVclPtr<SfxAbstractDialog> pDlg(pFact->CreateCharMapDialog(GetFrameWeld(), aAllSet, false));
+    ScopedVclPtr<SfxAbstractDialog> pDlg(pFact->CreateCharMapDialog(m_xDialog.get(), aAllSet, false));
     if (RET_OK == pDlg->Execute())
     {
         const SfxStringItem* pItem = SfxItemSet::GetItem<SfxStringItem>(pDlg->GetOutputItemSet(), SID_CHARMAP, false);
         const SvxFontItem* pFontItem = SfxItemSet::GetItem<SvxFontItem>(pDlg->GetOutputItemSet(), SID_ATTR_CHAR_FONT, false);
         if ( pItem )
         {
-            m_pNumberCharEdit->SetText( pItem->GetValue() );
+            m_xNumberCharEdit->set_text(pItem->GetValue());
 
             if ( pFontItem )
             {
                 m_aFontName = pFontItem->GetFamilyName();
-                eCharSet  = pFontItem->GetCharSet();
-                vcl::Font aFont( m_aFontName, pFontItem->GetStyleName(), m_pNumberCharEdit->GetFont().GetFontSize() );
+                m_eCharSet  = pFontItem->GetCharSet();
+                vcl::Font aFont(m_aFontName, pFontItem->GetStyleName(), m_xNumberCharEdit->get_font().GetFontSize());
                 aFont.SetCharSet( pFontItem->GetCharSet() );
                 aFont.SetPitch( pFontItem->GetPitch() );
-                m_pNumberCharEdit->SetFont( aFont  );
+                m_xNumberCharEdit->set_font(aFont);
             }
 
-            bExtCharAvailable = true;
-            m_pOkBtn->Enable(!m_pNumberCharEdit->GetText().isEmpty());
+            m_bExtCharAvailable = true;
+            m_xOkBtn->set_sensitive(!m_xNumberCharEdit->get_text().isEmpty());
         }
     }
 }
 
-IMPL_LINK( SwInsFootNoteDlg, NextPrevHdl, Button *, pBtn, void )
+IMPL_LINK( SwInsFootNoteDlg, NextPrevHdl, weld::Button&, rBtn, void )
 {
     Apply();
 
     // go to the next foot/endnote here
-    rSh.ResetSelect(nullptr, false);
-    if (pBtn == m_pNextBT)
-        rSh.GotoNextFootnoteAnchor();
+    m_rSh.ResetSelect(nullptr, false);
+    if (&rBtn == m_xNextBT.get())
+        m_rSh.GotoNextFootnoteAnchor();
     else
-        rSh.GotoPrevFootnoteAnchor();
+        m_rSh.GotoPrevFootnoteAnchor();
 
     Init();
 }
 
-SwInsFootNoteDlg::SwInsFootNoteDlg(vcl::Window *pParent, SwWrtShell &rShell, bool bEd)
-    : SvxStandardDialog(pParent, "InsertFootnoteDialog", "modules/swriter/ui/insertfootnote.ui")
-    , rSh(rShell)
-    , eCharSet(RTL_TEXTENCODING_DONTKNOW)
-    , bExtCharAvailable(false)
-    , bEdit(bEd)
+SwInsFootNoteDlg::SwInsFootNoteDlg(weld::Window *pParent, SwWrtShell &rShell, bool bEd)
+    : GenericDialogController(pParent, "modules/swriter/ui/insertfootnote.ui", "InsertFootnoteDialog")
+    , m_rSh(rShell)
+    , m_eCharSet(RTL_TEXTENCODING_DONTKNOW)
+    , m_bExtCharAvailable(false)
+    , m_bEdit(bEd)
+    , m_xNumberFrame(m_xBuilder->weld_widget("numberingframe"))
+    , m_xNumberAutoBtn(m_xBuilder->weld_radio_button("automatic"))
+    , m_xNumberCharBtn(m_xBuilder->weld_radio_button("character"))
+    , m_xNumberCharEdit(m_xBuilder->weld_entry("characterentry"))
+    , m_xNumberExtChar(m_xBuilder->weld_button("choosecharacter"))
+    , m_xFootnoteBtn(m_xBuilder->weld_radio_button("footnote"))
+    , m_xEndNoteBtn(m_xBuilder->weld_radio_button("endnote"))
+    , m_xOkBtn(m_xBuilder->weld_button("ok"))
+    , m_xPrevBT(m_xBuilder->weld_button("prev"))
+    , m_xNextBT(m_xBuilder->weld_button("next"))
 {
-    get(m_pNumberFrame, "numberingframe");
-    get(m_pNumberAutoBtn, "automatic");
-    get(m_pNumberCharBtn, "character");
-    get(m_pNumberCharEdit, "characterentry");
-    get(m_pNumberExtChar, "choosecharacter");
-    get(m_pFootnoteBtn, "footnote");
-    get(m_pEndNoteBtn, "endnote");
-    get(m_pOkBtn, "ok");
-    get(m_pPrevBT, "prev");
-    get(m_pNextBT, "next");
-
-    m_pNumberAutoBtn->SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberAutoBtnHdl));
-    m_pNumberExtChar->SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberExtCharHdl));
-    m_pNumberCharBtn->SetClickHdl(LINK(this,SwInsFootNoteDlg,NumberCharHdl));
-    m_pNumberCharEdit->SetModifyHdl(LINK(this,SwInsFootNoteDlg,NumberEditHdl));
-    m_pNumberCharEdit->SetMaxTextLen(10);
-    m_pNumberCharEdit->Enable();
-
-    m_pPrevBT->SetClickHdl(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
-    m_pNextBT->SetClickHdl(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
-
-    SwViewShell::SetCareWin(this);
-
-    if (bEdit)
+    m_xNumberAutoBtn->connect_clicked(LINK(this,SwInsFootNoteDlg,NumberAutoBtnHdl));
+    m_xNumberExtChar->connect_clicked(LINK(this,SwInsFootNoteDlg,NumberExtCharHdl));
+    m_xNumberCharBtn->connect_clicked(LINK(this,SwInsFootNoteDlg,NumberCharHdl));
+    m_xNumberCharEdit->connect_changed(LINK(this,SwInsFootNoteDlg,NumberEditHdl));
+
+    m_xPrevBT->connect_clicked(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
+    m_xNextBT->connect_clicked(LINK(this, SwInsFootNoteDlg, NextPrevHdl));
+
+    SwViewShell::SetCareDialog(m_xDialog);
+
+    if (m_bEdit)
     {
         Init();
 
-        m_pPrevBT->Show();
-        m_pNextBT->Show();
+        m_xPrevBT->show();
+        m_xNextBT->show();
     }
 }
 
 SwInsFootNoteDlg::~SwInsFootNoteDlg()
 {
-    disposeOnce();
-}
+    SwViewShell::SetCareDialog(nullptr);
 
-void SwInsFootNoteDlg::dispose()
-{
-    SwViewShell::SetCareWin(nullptr);
-
-    if (bEdit)
-        rSh.ResetSelect(nullptr, false);
-
-    m_pNumberFrame.clear();
-    m_pNumberAutoBtn.clear();
-    m_pNumberCharBtn.clear();
-    m_pNumberCharEdit.clear();
-    m_pNumberExtChar.clear();
-    m_pFootnoteBtn.clear();
-    m_pEndNoteBtn.clear();
-    m_pOkBtn.clear();
-    m_pPrevBT.clear();
-    m_pNextBT.clear();
-    SvxStandardDialog::dispose();
+    if (m_bEdit)
+        m_rSh.ResetSelect(nullptr, false);
 }
 
 void SwInsFootNoteDlg::Init()
@@ -213,62 +193,61 @@ void SwInsFootNoteDlg::Init()
     SwFormatFootnote aFootnoteNote;
     OUString sNumStr;
     vcl::Font aFont;
-    bExtCharAvailable = false;
+    m_bExtCharAvailable = false;
 
-    rSh.StartAction();
+    m_rSh.StartAction();
 
-    if( rSh.GetCurFootnote( &aFootnoteNote ))
+    if (m_rSh.GetCurFootnote(&aFootnoteNote))
     {
         if (!aFootnoteNote.GetNumStr().isEmpty())
         {
             sNumStr = aFootnoteNote.GetNumStr();
 
-            rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
-            SfxItemSet aSet( rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{} );
-            rSh.GetCurAttr( aSet );
+            m_rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
+            SfxItemSet aSet(m_rSh.GetAttrPool(), svl::Items<RES_CHRATR_FONT, RES_CHRATR_FONT>{});
+            m_rSh.GetCurAttr(aSet);
             const SvxFontItem &rFont = aSet.Get( RES_CHRATR_FONT );
-
-            aFont = m_pNumberCharEdit->GetFont();
+            aFont = m_xNumberCharEdit->get_font();
             m_aFontName = rFont.GetFamilyName();
-            eCharSet = rFont.GetCharSet();
+            m_eCharSet = rFont.GetCharSet();
             aFont.SetFamilyName(m_aFontName);
-            aFont.SetCharSet(eCharSet);
-            bExtCharAvailable = true;
-            rSh.Left( CRSR_SKIP_CHARS, false, 1, false );
+            aFont.SetCharSet(m_eCharSet);
+            m_bExtCharAvailable = true;
+            m_rSh.Left( CRSR_SKIP_CHARS, false, 1, false );
         }
         bFootnote = !aFootnoteNote.IsEndNote();
     }
-    m_pNumberCharEdit->SetFont(aFont);
+    m_xNumberCharEdit->set_font(aFont);
 
     const bool bNumChar = !sNumStr.isEmpty();
 
-    m_pNumberCharEdit->SetText(sNumStr);
-    m_pNumberCharBtn->Check(bNumChar);
-    m_pNumberAutoBtn->Check(!bNumChar);
+    m_xNumberCharEdit->set_text(sNumStr);
+    m_xNumberCharBtn->set_active(bNumChar);
+    m_xNumberAutoBtn->set_active(!bNumChar);
     if (bNumChar)
-        m_pNumberCharEdit->GrabFocus();
+        m_xNumberCharEdit->grab_focus();
 
     if (bFootnote)
-        m_pFootnoteBtn->Check();
+        m_xFootnoteBtn->set_active(true);
     else
-        m_pEndNoteBtn->Check();
+        m_xEndNoteBtn->set_active(true);
 
-    bool bNext = rSh.GotoNextFootnoteAnchor();
+    bool bNext = m_rSh.GotoNextFootnoteAnchor();
 
     if (bNext)
-        rSh.GotoPrevFootnoteAnchor();
+        m_rSh.GotoPrevFootnoteAnchor();
 
-    bool bPrev = rSh.GotoPrevFootnoteAnchor();
+    bool bPrev = m_rSh.GotoPrevFootnoteAnchor();
 
     if (bPrev)
-        rSh.GotoNextFootnoteAnchor();
+        m_rSh.GotoNextFootnoteAnchor();
 
-    m_pPrevBT->Enable(bPrev);
-    m_pNextBT->Enable(bNext);
+    m_xPrevBT->set_sensitive(bPrev);
+    m_xNextBT->set_sensitive(bNext);
 
-    rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
+    m_rSh.Right(CRSR_SKIP_CHARS, true, 1, false );
 
-    rSh.EndAction();
+    m_rSh.EndAction();
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/inc/insfnote.hxx b/sw/source/uibase/inc/insfnote.hxx
index 9f83638fd88d..49ea5563fede 100644
--- a/sw/source/uibase/inc/insfnote.hxx
+++ b/sw/source/uibase/inc/insfnote.hxx
@@ -19,64 +19,65 @@
 #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_INSFNOTE_HXX
 #define INCLUDED_SW_SOURCE_UIBASE_INC_INSFNOTE_HXX
 
-#include <svx/stddlg.hxx>
-
-#include <vcl/button.hxx>
-
-#include <vcl/edit.hxx>
-#include <vcl/fixed.hxx>
+#include <vcl/weld.hxx>
 
 class SwWrtShell;
 
 class VclFrame;
 
-class SwInsFootNoteDlg: public SvxStandardDialog
+class SwInsFootNoteDlg: public weld::GenericDialogController
 {
-    SwWrtShell     &rSh;
+    SwWrtShell     &m_rSh;
 
     // everything for the character(s)
     OUString        m_aFontName;
-    rtl_TextEncoding eCharSet;
-    bool        bExtCharAvailable;
-    bool        bEdit;
+    rtl_TextEncoding m_eCharSet;
+    bool        m_bExtCharAvailable;
+    bool        m_bEdit;
 
-    VclPtr<VclFrame>       m_pNumberFrame;
-    VclPtr<RadioButton>    m_pNumberAutoBtn;
-    VclPtr<RadioButton>    m_pNumberCharBtn;
-    VclPtr<Edit>           m_pNumberCharEdit;
-    VclPtr<PushButton>     m_pNumberExtChar;
+    std::unique_ptr<weld::Widget>     m_xNumberFrame;
+    std::unique_ptr<weld::RadioButton>    m_xNumberAutoBtn;
+    std::unique_ptr<weld::RadioButton>    m_xNumberCharBtn;
+    std::unique_ptr<weld::Entry>      m_xNumberCharEdit;
+    std::unique_ptr<weld::Button>     m_xNumberExtChar;
 
     // everything for the selection footnote/endnote
-    VclPtr<RadioButton>    m_pFootnoteBtn;
-    VclPtr<RadioButton>    m_pEndNoteBtn;
+    std::unique_ptr<weld::RadioButton>    m_xFootnoteBtn;
+    std::unique_ptr<weld::RadioButton>    m_xEndNoteBtn;
 
-    VclPtr<PushButton>     m_pOkBtn;
-    VclPtr<PushButton>     m_pPrevBT;
-    VclPtr<PushButton>     m_pNextBT;
+    std::unique_ptr<weld::Button>     m_xOkBtn;
+    std::unique_ptr<weld::Button>     m_xPrevBT;
+    std::unique_ptr<weld::Button>     m_xNextBT;
 
-    DECL_LINK(NumberCharHdl, Button *, void);
-    DECL_LINK(NumberEditHdl, Edit&, void);
-    DECL_LINK(NumberAutoBtnHdl, Button *, void);
-    DECL_LINK(NumberExtCharHdl, Button *, void);
-    DECL_LINK(NextPrevHdl, Button *, void);
+    DECL_LINK(NumberCharHdl, weld::Button&, void);
+    DECL_LINK(NumberEditHdl, weld::Entry&, void);
+    DECL_LINK(NumberAutoBtnHdl, weld::Button&, void);
+    DECL_LINK(NumberExtCharHdl, weld::Button&, void);
+    DECL_LINK(NextPrevHdl, weld::Button&, void);
 
-    virtual void    Apply() override;
+    void    Apply();
 
     void            Init();
 
 public:
-    SwInsFootNoteDlg(vcl::Window * pParent, SwWrtShell &rSh, bool bEd);
+    SwInsFootNoteDlg(weld::Window * pParent, SwWrtShell &rSh, bool bEd);
     virtual ~SwInsFootNoteDlg() override;
-    virtual void dispose() override;
 
     const OUString& GetFontName() { return m_aFontName; }
-    bool            IsEndNote() { return m_pEndNoteBtn->IsChecked(); }
+    bool            IsEndNote() const { return m_xEndNoteBtn->get_active(); }
     OUString        GetStr()
-                    {
-                        if ( m_pNumberCharBtn->IsChecked() )
-                            return m_pNumberCharEdit->GetText();
-                        return OUString();
-                    }
+    {
+        if (m_xNumberCharBtn->get_active())
+            return m_xNumberCharEdit->get_text();
+        return OUString();
+    }
+    short execute()
+    {
+        short nRet = run();
+        if (nRet == RET_OK)
+            Apply();
+        return nRet;
+    }
 };
 
 #endif
diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx
index 65f4b25ce6d2..ae9eff3704e9 100644
--- a/sw/source/uibase/shells/textsh1.cxx
+++ b/sw/source/uibase/shells/textsh1.cxx
@@ -564,7 +564,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
             OSL_ENSURE(pFact, "Dialog creation failed!");
             ScopedVclPtr<AbstractInsFootNoteDlg> pDlg(pFact->CreateInsFootNoteDlg(
-                GetView().GetWindow(), rWrtSh));
+                GetView().GetFrameWeld(), rWrtSh));
             OSL_ENSURE(pDlg, "Dialog creation failed!");
             pDlg->SetHelpId(GetStaticInterface()->GetSlot(nSlot)->GetCommand());
             if ( pDlg->Execute() == RET_OK )
@@ -647,7 +647,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
             {
                 SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
                 assert(pFact && "SwAbstractDialogFactory fail!");
-                ScopedVclPtr<AbstractSwBreakDlg> pDlg(pFact->CreateSwBreakDlg(GetView().GetWindow()->GetFrameWeld(), rWrtSh));
+                ScopedVclPtr<AbstractSwBreakDlg> pDlg(pFact->CreateSwBreakDlg(GetView().GetFrameWeld(), rWrtSh));
                 assert(pDlg && "Dialog creation failed!");
                 if ( pDlg->Execute() == RET_OK )
                 {
@@ -740,7 +740,7 @@ void SwTextShell::Execute(SfxRequest &rReq)
             ScopedVclPtr<AbstractSwModalRedlineAcceptDlg> pDlg(pFact->CreateSwModalRedlineAcceptDlg(&GetView().GetEditWin()));
             OSL_ENSURE(pDlg, "Dialog creation failed!");
 
-            switch (lcl_AskRedlineFlags(GetView().GetEditWin().GetFrameWeld()))
+            switch (lcl_AskRedlineFlags(GetView().GetFrameWeld()))
             {
                 case RET_OK:
                 {
diff --git a/sw/source/uibase/uiview/viewdlg2.cxx b/sw/source/uibase/uiview/viewdlg2.cxx
index 495bad85afd8..41bec30c8023 100644
--- a/sw/source/uibase/uiview/viewdlg2.cxx
+++ b/sw/source/uibase/uiview/viewdlg2.cxx
@@ -97,7 +97,7 @@ void SwView::ExecDlgExt(SfxRequest const &rReq)
             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
             assert(pFact && "Dialog creation failed!");
             ScopedVclPtr<AbstractInsFootNoteDlg> pDlg(pFact->CreateInsFootNoteDlg(
-                &rMDI, *m_pWrtShell, true));
+                GetFrameWeld(), *m_pWrtShell, true));
             assert(pDlg && "Dialog creation failed!");
 
             pDlg->SetHelpId(GetStaticInterface()->GetSlot(FN_EDIT_FOOTNOTE)->GetCommand());
diff --git a/sw/uiconfig/swriter/ui/insertfootnote.ui b/sw/uiconfig/swriter/ui/insertfootnote.ui
index 4b0d91128b35..7d1a0b05151f 100644
--- a/sw/uiconfig/swriter/ui/insertfootnote.ui
+++ b/sw/uiconfig/swriter/ui/insertfootnote.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.20.4 -->
 <interface domain="sw">
   <requires lib="gtk+" version="3.18"/>
   <object class="GtkImage" id="image1">
@@ -16,6 +16,9 @@
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" context="insertfootnote|InsertFootnoteDialog">Insert Footnote/Endnote</property>
+    <property name="modal">True</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
@@ -30,6 +33,7 @@
               <object class="GtkGrid" id="grid2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="column_spacing">6</property>
                 <property name="column_homogeneous">True</property>
                 <child>
                   <object class="GtkButton" id="prev">
@@ -103,6 +107,7 @@
                 <property name="expand">False</property>
                 <property name="fill">True</property>
                 <property name="position">3</property>
+                <property name="secondary">True</property>
               </packing>
             </child>
           </object>
@@ -144,12 +149,11 @@
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
                             <property name="valign">center</property>
+                            <property name="use_underline">True</property>
                             <property name="xalign">0</property>
                             <property name="active">True</property>
                             <property name="draw_indicator">True</property>
-                            <property name="group">character</property>
                           </object>
                           <packing>
                             <property name="left_attach">0</property>
@@ -163,8 +167,8 @@
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
                             <property name="valign">center</property>
+                            <property name="use_underline">True</property>
                             <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
                             <property name="group">automatic</property>
@@ -183,6 +187,8 @@
                             <property name="can_focus">True</property>
                             <property name="halign">start</property>
                             <property name="valign">center</property>
+                            <property name="max_length">10</property>
+                            <property name="activates_default">True</property>
                             <property name="width_chars">4</property>
                             <property name="progress_fraction">0.0099999997764825821</property>
                             <property name="progress_pulse_step">0.090000003576278687</property>
@@ -259,12 +265,11 @@
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
                             <property name="valign">center</property>
+                            <property name="use_underline">True</property>
                             <property name="xalign">0</property>
                             <property name="active">True</property>
                             <property name="draw_indicator">True</property>
-                            <property name="group">endnote</property>
                           </object>
                           <packing>
                             <property name="expand">False</property>
@@ -278,8 +283,8 @@
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="receives_default">False</property>
-                            <property name="use_underline">True</property>
                             <property name="valign">center</property>
+                            <property name="use_underline">True</property>
                             <property name="xalign">0</property>
                             <property name="draw_indicator">True</property>
                             <property name="group">footnote</property>
@@ -325,5 +330,8 @@
       <action-widget response="-6">cancel</action-widget>
       <action-widget response="-11">help</action-widget>
     </action-widgets>
+    <child>
+      <placeholder/>
+    </child>
   </object>
 </interface>
diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx
index b6f00a0752d7..e4cf68981392 100644
--- a/vcl/inc/unx/gtk/gtkinst.hxx
+++ b/vcl/inc/unx/gtk/gtkinst.hxx
@@ -43,6 +43,8 @@ class GtkPrintWrapper;
 }
 }
 
+vcl::Font pango_to_vcl(const PangoFontDescription* font, const css::lang::Locale& rLocale);
+
 class GenPspGraphics;
 class GtkYieldMutex : public SalYieldMutex
 {
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index d06590dace91..c478974f9482 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1065,6 +1065,16 @@ public:
         m_xEntry->SetReadOnly(!bEditable);
     }
 
+    virtual vcl::Font get_font() override
+    {
+        return m_xEntry->GetFont();
+    }
+
+    virtual void set_font(const vcl::Font& rFont) override
+    {
+        m_xEntry->SetFont(rFont);
+    }
+
     virtual ~SalInstanceEntry() override
     {
         m_xEntry->SetTextFilter(nullptr);
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 3eded538f3cb..5ce77bea39fa 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -2675,6 +2675,88 @@ public:
         g_signal_handler_unblock(m_pEntry, m_nInsertTextSignalId);
     }
 
+    virtual vcl::Font get_font() override
+    {
+        PangoContext* pContext = gtk_widget_get_pango_context(m_pWidget);
+        return pango_to_vcl(pango_context_get_font_description(pContext),
+                            Application::GetSettings().GetUILanguageTag().getLocale());
+    }
+
+    virtual void set_font(const vcl::Font& rFont) override
+    {
+        PangoAttrList* pAttrList = pango_attr_list_new();
+        pango_attr_list_insert(pAttrList, pango_attr_family_new(OUStringToOString(rFont.GetFamilyName(), RTL_TEXTENCODING_UTF8).getStr()));
+        pango_attr_list_insert(pAttrList, pango_attr_size_new(rFont.GetFontSize().Height() * PANGO_SCALE));
+        switch (rFont.GetItalic())
+        {
+            case ITALIC_NONE:
+                pango_attr_list_insert(pAttrList, pango_attr_style_new(PANGO_STYLE_NORMAL));
+                break;
+            case ITALIC_NORMAL:
+                pango_attr_list_insert(pAttrList, pango_attr_style_new(PANGO_STYLE_ITALIC));
+                break;
+            case ITALIC_OBLIQUE:
+                pango_attr_list_insert(pAttrList, pango_attr_style_new(PANGO_STYLE_OBLIQUE));
+                break;
+            default:
+                break;
+        }
+        switch (rFont.GetWeight())
+        {
+            case WEIGHT_ULTRALIGHT:
+                pango_attr_list_insert(pAttrList, pango_attr_weight_new(PANGO_WEIGHT_ULTRALIGHT));
+                break;
+            case WEIGHT_LIGHT:
+                pango_attr_list_insert(pAttrList, pango_attr_weight_new(PANGO_WEIGHT_LIGHT));
+                break;
+            case WEIGHT_NORMAL:
+                pango_attr_list_insert(pAttrList, pango_attr_weight_new(PANGO_WEIGHT_NORMAL));
+                break;
+            case WEIGHT_BOLD:
+                pango_attr_list_insert(pAttrList, pango_attr_weight_new(PANGO_WEIGHT_BOLD));
+                break;
+            case WEIGHT_ULTRABOLD:
+                pango_attr_list_insert(pAttrList, pango_attr_weight_new(PANGO_WEIGHT_ULTRABOLD));
+                break;
+            default:
+                break;
+        }
+        switch (rFont.GetWidthType())
+        {
+            case WIDTH_ULTRA_CONDENSED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_ULTRA_CONDENSED));
+                break;
+            case WIDTH_EXTRA_CONDENSED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_EXTRA_CONDENSED));
+                break;
+            case WIDTH_CONDENSED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_CONDENSED));
+                break;
+            case WIDTH_SEMI_CONDENSED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_SEMI_CONDENSED));
+                break;
+            case WIDTH_NORMAL:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_NORMAL));
+                break;
+            case WIDTH_SEMI_EXPANDED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_SEMI_EXPANDED));
+                break;
+            case WIDTH_EXPANDED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_EXPANDED));
+                break;
+            case WIDTH_EXTRA_EXPANDED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_EXTRA_EXPANDED));
+                break;
+            case WIDTH_ULTRA_EXPANDED:
+                pango_attr_list_insert(pAttrList, pango_attr_stretch_new(PANGO_STRETCH_ULTRA_EXPANDED));
+                break;
+            default:
+                break;
+        }
+        gtk_entry_set_attributes(m_pEntry, pAttrList);
+        pango_attr_list_unref(pAttrList);
+    }
+
     virtual ~GtkInstanceEntry() override
     {
         g_signal_handler_disconnect(m_pEntry, m_nInsertTextSignalId);
@@ -3722,7 +3804,7 @@ public:
     {
         m_xSorter.reset(new comphelper::string::NaturalStringSorter(
                             ::comphelper::getProcessComponentContext(),
-                            Application::GetSettings().GetLanguageTag().getLocale()));
+                            Application::GetSettings().GetUILanguageTag().getLocale()));
         GtkTreeModel* pModel = gtk_combo_box_get_model(GTK_COMBO_BOX(m_pComboBoxText));
         GtkTreeSortable* pSortable = GTK_TREE_SORTABLE(pModel);
         gtk_tree_sortable_set_sort_func(pSortable, 0, sort_func, m_xSorter.get(), nullptr);
diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
index 5ea9cbcde7bd..04f5ac181c05 100644
--- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx
@@ -2775,6 +2775,11 @@ static inline ::Color getColor( const GdkRGBA& rCol )
 static vcl::Font getFont(GtkStyleContext* pStyle, const css::lang::Locale& rLocale)
 {
     const PangoFontDescription* font = gtk_style_context_get_font(pStyle, gtk_style_context_get_state(pStyle));
+    return pango_to_vcl(font, rLocale);
+}
+
+vcl::Font pango_to_vcl(const PangoFontDescription* font, const css::lang::Locale& rLocale)
+{
     OString    aFamily        = pango_font_description_get_family( font );
     int nPangoHeight    = pango_font_description_get_size( font );
     PangoStyle    eStyle    = pango_font_description_get_style( font );


More information about the Libreoffice-commits mailing list