weld ScDPNumGroupDlg

Change-Id: I5f5861a1f39307133f4c87e4d5ca50ced24409ba
Reviewed-on: https://gerrit.libreoffice.org/67813
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index f272b1a..f4e48b1 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -482,8 +482,8 @@ public:
                                                                const ScPivotFuncData& rFuncData,
                                                                const ScDPNameVec& rDataFields ) = 0;

    virtual VclPtr<AbstractScDPNumGroupDlg> CreateScDPNumGroupDlg( vcl::Window* pParent,
                                                                const ScDPNumGroupInfo& rInfo ) = 0;
    virtual VclPtr<AbstractScDPNumGroupDlg> CreateScDPNumGroupDlg(weld::Window* pParent,
                                                                  const ScDPNumGroupInfo& rInfo) = 0;

    virtual VclPtr<AbstractScDPDateGroupDlg> CreateScDPDateGroupDlg( vcl::Window* pParent,
                                                                const ScDPNumGroupInfo& rInfo,
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx b/sc/source/ui/attrdlg/scdlgfact.cxx
index fa64f18..3f24dc0 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -168,7 +168,12 @@ short AbstractScNamePasteDlg_Impl::Execute()
IMPL_ABSTDLG_BASE(AbstractScPivotFilterDlg_Impl);
IMPL_ABSTDLG_BASE(AbstractScDPFunctionDlg_Impl);
IMPL_ABSTDLG_BASE(AbstractScDPSubtotalDlg_Impl);
IMPL_ABSTDLG_BASE(AbstractScDPNumGroupDlg_Impl);

short AbstractScDPNumGroupDlg_Impl::Execute()
{
    return m_xDlg->run();
}

IMPL_ABSTDLG_BASE(AbstractScDPDateGroupDlg_Impl);

short AbstractScDPShowDetailDlg_Impl::Execute()
@@ -614,7 +619,7 @@ void AbstractScDPSubtotalDlg_Impl::FillLabelData( ScDPLabelData& rLabelData ) co

ScDPNumGroupInfo AbstractScDPNumGroupDlg_Impl::GetGroupInfo() const
{
    return pDlg->GetGroupInfo();
    return m_xDlg->GetGroupInfo();
}

ScDPNumGroupInfo AbstractScDPDateGroupDlg_Impl::GetGroupInfo() const
@@ -914,10 +919,9 @@ VclPtr<AbstractScDPSubtotalDlg> ScAbstractDialogFactory_Impl::CreateScDPSubtotal
    return VclPtr<AbstractScDPSubtotalDlg_Impl>::Create( pDlg );
}

VclPtr<AbstractScDPNumGroupDlg> ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg(
        vcl::Window* pParent, const ScDPNumGroupInfo& rInfo )
VclPtr<AbstractScDPNumGroupDlg> ScAbstractDialogFactory_Impl::CreateScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo)
{
    return VclPtr<AbstractScDPNumGroupDlg_Impl>::Create( VclPtr<ScDPNumGroupDlg>::Create( pParent, rInfo ) );
    return VclPtr<AbstractScDPNumGroupDlg_Impl>::Create(new ScDPNumGroupDlg(pParent, rInfo));
}

VclPtr<AbstractScDPDateGroupDlg> ScAbstractDialogFactory_Impl::CreateScDPDateGroupDlg(
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx b/sc/source/ui/attrdlg/scdlgfact.hxx
index 1d1b8ce..ddee8f8 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -406,7 +406,14 @@ class AbstractScDPSubtotalDlg_Impl : public AbstractScDPSubtotalDlg

class AbstractScDPNumGroupDlg_Impl : public AbstractScDPNumGroupDlg
{
    DECL_ABSTDLG_BASE( AbstractScDPNumGroupDlg_Impl, ScDPNumGroupDlg )
protected:
    std::unique_ptr<ScDPNumGroupDlg> m_xDlg;
public:
    explicit AbstractScDPNumGroupDlg_Impl(ScDPNumGroupDlg* p)
        : m_xDlg(p)
    {
    }
    virtual short Execute() override;
    virtual ScDPNumGroupInfo GetGroupInfo() const override;
};

@@ -649,8 +656,8 @@ public:
                                                                const ScPivotFuncData& rFuncData,
                                                                const ScDPNameVec& rDataFields ) override;

    virtual VclPtr<AbstractScDPNumGroupDlg> CreateScDPNumGroupDlg( vcl::Window* pParent,
                                                                const ScDPNumGroupInfo& rInfo ) override;
    virtual VclPtr<AbstractScDPNumGroupDlg> CreateScDPNumGroupDlg(weld::Window* pParent,
                                                                  const ScDPNumGroupInfo& rInfo) override;

    virtual VclPtr<AbstractScDPDateGroupDlg> CreateScDPDateGroupDlg( vcl::Window* pParent,
                                                                const ScDPNumGroupInfo& rInfo,
diff --git a/sc/source/ui/cctrl/editfield.cxx b/sc/source/ui/cctrl/editfield.cxx
index 6583e2b..0f69edc 100644
--- a/sc/source/ui/cctrl/editfield.cxx
+++ b/sc/source/ui/cctrl/editfield.cxx
@@ -67,4 +67,29 @@ void ScDoubleField::SetValue( double fValue, sal_Int32 nDecPlaces )
        nDecPlaces, lclGetDecSep(), true/*bEraseTrailingDecZeros*/ ) );
}

DoubleField::DoubleField(std::unique_ptr<weld::Entry> xEntry)
    : m_xEntry(std::move(xEntry))
{
}

bool DoubleField::GetValue( double& rfValue ) const
{
    OUString aStr(comphelper::string::strip(m_xEntry->get_text(), ' '));
    bool bOk = !aStr.isEmpty();
    if( bOk )
    {
        rtl_math_ConversionStatus eStatus;
        sal_Int32 nEnd;
        rfValue = ScGlobal::GetpLocaleData()->stringToDouble( aStr, true, &eStatus, &nEnd );
        bOk = (eStatus == rtl_math_ConversionStatus_Ok) && (nEnd == aStr.getLength() );
    }
    return bOk;
}

void DoubleField::SetValue( double fValue, sal_Int32 nDecPlaces )
{
    m_xEntry->set_text( ::rtl::math::doubleToUString( fValue, rtl_math_StringFormat_G,
        nDecPlaces, lclGetDecSep(), true/*bEraseTrailingDecZeros*/ ) );
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/dbgui/dpgroupdlg.cxx b/sc/source/ui/dbgui/dpgroupdlg.cxx
index 60522c0..f1e3f3f 100644
--- a/sc/source/ui/dbgui/dpgroupdlg.cxx
+++ b/sc/source/ui/dbgui/dpgroupdlg.cxx
@@ -107,10 +107,62 @@ IMPL_LINK( ScDPGroupEditHelper, ClickHdl, Button*, pButton, void )
    }
}

ScDPNumGroupEditHelper::ScDPNumGroupEditHelper(
        RadioButton* pRbAuto, RadioButton* pRbMan, ScDoubleField* pEdValue ) :
    ScDPGroupEditHelper( pRbAuto, pRbMan, pEdValue ),
    mpEdValue( pEdValue )
DPGroupEditHelper::DPGroupEditHelper(weld::RadioButton* pRbAuto, weld::RadioButton* pRbMan, weld::Entry* pEdValue)
    : mpRbAuto(pRbAuto)
    , mpRbMan(pRbMan)
    , mpEdValue(pEdValue)
{
    mpRbAuto->connect_clicked( LINK( this, DPGroupEditHelper, ClickHdl ) );
    mpRbMan->connect_clicked( LINK( this, DPGroupEditHelper, ClickHdl ) );
}

bool DPGroupEditHelper::IsAuto() const
{
    return mpRbAuto->get_active();
}

double DPGroupEditHelper::GetValue() const
{
    double fValue;
    if( !ImplGetValue( fValue ) )
        fValue = 0.0;
    return fValue;
}

void DPGroupEditHelper::SetValue( bool bAuto, double fValue )
{
    if( bAuto )
    {
        mpRbAuto->set_active(true);
        ClickHdl(*mpRbAuto);
    }
    else
    {
        mpRbMan->set_active(true);
        ClickHdl(*mpRbMan);
    }
    ImplSetValue( fValue );
}

IMPL_LINK(DPGroupEditHelper, ClickHdl, weld::Button&, rButton, void)
{
    if (&rButton == mpRbAuto)
    {
        // disable edit field on clicking "automatic" radio button
        mpEdValue->set_sensitive(false);
    }
    else if (&rButton == mpRbMan)
    {
        // enable and set focus to edit field on clicking "manual" radio button
        mpEdValue->set_sensitive(true);
        mpEdValue->grab_focus();
    }
}

ScDPNumGroupEditHelper::ScDPNumGroupEditHelper(weld::RadioButton* pRbAuto,
    weld::RadioButton* pRbMan, DoubleField* pEdValue)
    : DPGroupEditHelper(pRbAuto, pRbMan, pEdValue->get_widget())
    , mpEdValue(pEdValue)
{
}

@@ -145,51 +197,36 @@ void ScDPDateGroupEditHelper::ImplSetValue( double fValue )
    mpEdValue->SetDate( aDate );
}

ScDPNumGroupDlg::ScDPNumGroupDlg( vcl::Window* pParent, const ScDPNumGroupInfo& rInfo ) :
    ModalDialog     ( pParent, "PivotTableGroupByNumber", "modules/scalc/ui/groupbynumber.ui" ),
    mpRbAutoStart   ( get<RadioButton>("auto_start") ),
    mpRbManStart    ( get<RadioButton>("manual_start") ),
    mpEdStart       ( get<ScDoubleField> ("edit_start") ),
    mpRbAutoEnd     ( get<RadioButton> ( "auto_end" ) ),
    mpRbManEnd      ( get<RadioButton> ("manual_end") ),
    mpEdEnd         ( get<ScDoubleField>( "edit_end") ),
    mpEdBy          ( get<ScDoubleField> ("edit_by") ),
    maStartHelper   ( mpRbAutoStart, mpRbManStart, mpEdStart ),
    maEndHelper     ( mpRbAutoEnd, mpRbManEnd, mpEdEnd )
ScDPNumGroupDlg::ScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo)
    : GenericDialogController(pParent, "modules/scalc/ui/groupbynumber.ui", "PivotTableGroupByNumber")
    , mxRbAutoStart(m_xBuilder->weld_radio_button("auto_start"))
    , mxRbManStart(m_xBuilder->weld_radio_button("manual_start"))
    , mxEdStart(new DoubleField(m_xBuilder->weld_entry("edit_start")))
    , mxRbAutoEnd(m_xBuilder->weld_radio_button("auto_end"))
    , mxRbManEnd(m_xBuilder->weld_radio_button("manual_end"))
    , mxEdEnd(new DoubleField(m_xBuilder->weld_entry("edit_end")))
    , mxEdBy(new DoubleField(m_xBuilder->weld_entry("edit_by")))
    , maStartHelper(mxRbAutoStart.get(), mxRbManStart.get(), mxEdStart.get())
    , maEndHelper(mxRbAutoEnd.get(), mxRbManEnd.get(), mxEdEnd.get())
{

    maStartHelper.SetValue( rInfo.mbAutoStart, rInfo.mfStart );
    maEndHelper.SetValue( rInfo.mbAutoEnd, rInfo.mfEnd );
    mpEdBy->SetValue( (rInfo.mfStep <= 0.0) ? 1.0 : rInfo.mfStep );
    mxEdBy->SetValue( (rInfo.mfStep <= 0.0) ? 1.0 : rInfo.mfStep );

    /*  Set the initial focus, currently it is somewhere after calling all the radio
        button click handlers. Now the first enabled editable control is focused. */
    if( mpEdStart->IsEnabled() )
        mpEdStart->GrabFocus();
    else if( mpEdEnd->IsEnabled() )
        mpEdEnd->GrabFocus();
    if (mxEdStart->get_sensitive())
        mxEdStart->grab_focus();
    else if (mxEdEnd->get_sensitive())
        mxEdEnd->grab_focus();
    else
        mpEdBy->GrabFocus();
        mxEdBy->grab_focus();
}

ScDPNumGroupDlg::~ScDPNumGroupDlg()
{
    disposeOnce();
}

void ScDPNumGroupDlg::dispose()
{
    mpRbAutoStart.clear();
    mpRbManStart.clear();
    mpEdStart.clear();
    mpRbAutoEnd.clear();
    mpRbManEnd.clear();
    mpEdEnd.clear();
    mpEdBy.clear();
    ModalDialog::dispose();
}


ScDPNumGroupInfo ScDPNumGroupDlg::GetGroupInfo() const
{
    ScDPNumGroupInfo aInfo;
@@ -202,7 +239,7 @@ ScDPNumGroupInfo ScDPNumGroupDlg::GetGroupInfo() const
    // TODO: error messages in OK event?
    aInfo.mfStart = maStartHelper.GetValue();
    aInfo.mfEnd = maEndHelper.GetValue();
    if( !mpEdBy->GetValue( aInfo.mfStep ) || (aInfo.mfStep <= 0.0) )
    if( !mxEdBy->GetValue( aInfo.mfStep ) || (aInfo.mfStep <= 0.0) )
        aInfo.mfStep = 1.0;
    if( aInfo.mfEnd <= aInfo.mfStart )
        aInfo.mfEnd = aInfo.mfStart + aInfo.mfStep;
diff --git a/sc/source/ui/inc/dpgroupdlg.hxx b/sc/source/ui/inc/dpgroupdlg.hxx
index 01737a6..00d5943 100644
--- a/sc/source/ui/inc/dpgroupdlg.hxx
+++ b/sc/source/ui/inc/dpgroupdlg.hxx
@@ -23,6 +23,7 @@
#include <vcl/dialog.hxx>
#include <vcl/button.hxx>
#include <vcl/field.hxx>
#include <vcl/weld.hxx>
#include <svx/checklbx.hxx>
#include "editfield.hxx"
#include <dpnumgroupinfo.hxx>
@@ -53,12 +54,39 @@ private:
    VclPtr<Edit>               mpEdValue;
};

class ScDPNumGroupEditHelper : public ScDPGroupEditHelper
class DPGroupEditHelper
{
public:
    explicit            DPGroupEditHelper(
                            weld::RadioButton* rRbAuto, weld::RadioButton* rRbMan,
                            weld::Entry* rEdValue );

    bool                IsAuto() const;
    double              GetValue() const;
    void                SetValue( bool bAuto, double fValue );

protected:
    ~DPGroupEditHelper() {}

private:
    virtual bool        ImplGetValue( double& rfValue ) const = 0;
    virtual void        ImplSetValue( double fValue ) = 0;

    DECL_LINK(ClickHdl, weld::Button&, void);

private:
    weld::RadioButton* mpRbAuto;
    weld::RadioButton* mpRbMan;
    weld::Entry*       mpEdValue;
};


class ScDPNumGroupEditHelper : public DPGroupEditHelper
{
public:
    explicit            ScDPNumGroupEditHelper(
                            RadioButton* pRbAuto, RadioButton* pRbMan,
                            ScDoubleField* pEdValue );
                            weld::RadioButton* pRbAuto, weld::RadioButton* pRbMan,
                            DoubleField* pEdValue );

    virtual             ~ScDPNumGroupEditHelper() {}
private:
@@ -66,7 +94,7 @@ private:
    virtual void        ImplSetValue( double fValue ) override;

private:
    VclPtr<ScDoubleField>      mpEdValue;
    DoubleField*        mpEdValue;
};

class ScDPDateGroupEditHelper : public ScDPGroupEditHelper
@@ -87,22 +115,21 @@ private:
    Date const                maNullDate;
};

class ScDPNumGroupDlg : public ModalDialog
class ScDPNumGroupDlg : public weld::GenericDialogController
{
public:
    explicit            ScDPNumGroupDlg( vcl::Window* pParent, const ScDPNumGroupInfo& rInfo );
    virtual             ~ScDPNumGroupDlg() override;
    virtual void        dispose() override;
    explicit ScDPNumGroupDlg(weld::Window* pParent, const ScDPNumGroupInfo& rInfo);
    virtual ~ScDPNumGroupDlg() override;
    ScDPNumGroupInfo    GetGroupInfo() const;

private:
    VclPtr<RadioButton>         mpRbAutoStart;
    VclPtr<RadioButton>         mpRbManStart;
    VclPtr<ScDoubleField>       mpEdStart;
    VclPtr<RadioButton>         mpRbAutoEnd;
    VclPtr<RadioButton>         mpRbManEnd;
    VclPtr<ScDoubleField>       mpEdEnd;
    VclPtr<ScDoubleField>       mpEdBy;
    std::unique_ptr<weld::RadioButton> mxRbAutoStart;
    std::unique_ptr<weld::RadioButton> mxRbManStart;
    std::unique_ptr<DoubleField> mxEdStart;
    std::unique_ptr<weld::RadioButton> mxRbAutoEnd;
    std::unique_ptr<weld::RadioButton> mxRbManEnd;
    std::unique_ptr<DoubleField> mxEdEnd;
    std::unique_ptr<DoubleField> mxEdBy;
    ScDPNumGroupEditHelper maStartHelper;
    ScDPNumGroupEditHelper maEndHelper;
};
diff --git a/sc/source/ui/inc/editfield.hxx b/sc/source/ui/inc/editfield.hxx
index fa27d47..4ab170c 100644
--- a/sc/source/ui/inc/editfield.hxx
+++ b/sc/source/ui/inc/editfield.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_SC_SOURCE_UI_INC_EDITFIELD_HXX

#include <vcl/edit.hxx>
#include <vcl/weld.hxx>

/** An edit control that contains a double precision floating-point value. */
class ScDoubleField : public Edit
@@ -33,6 +34,22 @@ public:
                                  sal_Int32 nDecPlaces = 12 );
};

class DoubleField
{
private:
    std::unique_ptr<weld::Entry> m_xEntry;
public:
    explicit            DoubleField(std::unique_ptr<weld::Entry> xEntry);

    bool GetValue(double& rfValue) const;
    void SetValue(double fValue, sal_Int32 nDecPlaces = 12);

    weld::Entry* get_widget() { return m_xEntry.get(); }

    void grab_focus() { m_xEntry->grab_focus(); }
    bool get_sensitive() const { return m_xEntry->get_sensitive(); }
};

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 0694c87..88e7b85 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -1128,7 +1128,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                    {
                        ScAbstractDialogFactory* pFact = ScAbstractDialogFactory::Create();
                        ScopedVclPtr<AbstractScDPNumGroupDlg> pDlg( pFact->CreateScDPNumGroupDlg(
                            pTabViewShell->GetDialogParent(), aNumInfo ) );
                            pTabViewShell->GetFrameWeld(), aNumInfo ) );
                        if( pDlg->Execute() == RET_OK )
                            pTabViewShell->NumGroupDataPilot( pDlg->GetGroupInfo() );
                    }
diff --git a/sc/uiconfig/scalc/ui/groupbynumber.ui b/sc/uiconfig/scalc/ui/groupbynumber.ui
index ed6a95a..2429198 100644
--- a/sc/uiconfig/scalc/ui/groupbynumber.ui
+++ b/sc/uiconfig/scalc/ui/groupbynumber.ui
@@ -1,14 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="sc">
  <requires lib="gtk+" version="3.18"/>
  <requires lib="LibreOffice" version="1.0"/>
  <object class="GtkDialog" id="PivotTableGroupByNumber">
    <property name="can_focus">False</property>
    <property name="border_width">6</property>
    <property name="title" translatable="yes" context="groupbynumber|PivotTableGroupByNumber">Grouping</property>
    <property name="resizable">False</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>
      <placeholder/>
    </child>
    <child internal-child="vbox">
      <object class="GtkBox" id="dialog-vbox1">
        <property name="can_focus">False</property>
@@ -23,6 +28,7 @@
                <property name="label">gtk-ok</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="can_default">True</property>
                <property name="has_default">True</property>
                <property name="receives_default">True</property>
                <property name="use_stock">True</property>
@@ -38,6 +44,7 @@
                <property name="label">gtk-cancel</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="can_default">True</property>
                <property name="receives_default">True</property>
                <property name="use_stock">True</property>
              </object>
@@ -105,7 +112,6 @@
                            <property name="xalign">0</property>
                            <property name="active">True</property>
                            <property name="draw_indicator">True</property>
                            <property name="group">manual_start</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
@@ -120,9 +126,11 @@
                            <property name="receives_default">False</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">auto_start</property>
                            <accessibility>
                              <relation type="label-for" target="edit_start"/>
                            </accessibility>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
@@ -130,10 +138,14 @@
                          </packing>
                        </child>
                        <child>
                          <object class="scuilo-ScDoubleField" id="edit_start">
                          <object class="GtkEntry" id="edit_start">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="hexpand">True</property>
                            <property name="activates_default">True</property>
                            <accessibility>
                              <relation type="labelled-by" target="manual_start"/>
                            </accessibility>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
@@ -194,7 +206,6 @@
                            <property name="xalign">0</property>
                            <property name="active">True</property>
                            <property name="draw_indicator">True</property>
                            <property name="group">manual_end</property>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
@@ -209,9 +220,11 @@
                            <property name="receives_default">False</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">auto_end</property>
                            <accessibility>
                              <relation type="label-for" target="edit_end"/>
                            </accessibility>
                          </object>
                          <packing>
                            <property name="left_attach">0</property>
@@ -219,10 +232,13 @@
                          </packing>
                        </child>
                        <child>
                          <object class="scuilo-ScDoubleField" id="edit_end">
                          <object class="GtkEntry" id="edit_end">
                            <property name="visible">True</property>
                            <property name="can_focus">True</property>
                            <property name="hexpand">True</property>
                            <accessibility>
                              <relation type="labelled-by" target="manual_end"/>
                            </accessibility>
                          </object>
                          <packing>
                            <property name="left_attach">1</property>
@@ -266,9 +282,10 @@
                    <property name="top_padding">6</property>
                    <property name="left_padding">12</property>
                    <child>
                      <object class="scuilo-ScDoubleField" id="edit_by">
                      <object class="GtkEntry" id="edit_by">
                        <property name="visible">True</property>
                        <property name="can_focus">True</property>
                        <property name="activates_default">True</property>
                      </object>
                    </child>
                  </object>
diff --git a/solenv/sanitizers/ui/modules/scalc.suppr b/solenv/sanitizers/ui/modules/scalc.suppr
index 3ce7f26..ffed06f 100644
--- a/solenv/sanitizers/ui/modules/scalc.suppr
+++ b/solenv/sanitizers/ui/modules/scalc.suppr
@@ -75,6 +75,7 @@ sc/uiconfig/scalc/ui/functionpanel.ui://GtkLabel[@id='funcdesc:border'] orphan-l
sc/uiconfig/scalc/ui/groupbydate.ui://GtkSpinButton[@id='start_date:yy:mm:dd'] no-labelled-by
sc/uiconfig/scalc/ui/groupbydate.ui://GtkSpinButton[@id='end_date:yy:mm:dd'] no-labelled-by
sc/uiconfig/scalc/ui/groupbydate.ui://GtkSpinButton[@id='days_value'] no-labelled-by
sc/uiconfig/scalc/ui/groupbynumber.ui://GtkEntry[@id='edit_by'] no-labelled-by
sc/uiconfig/scalc/ui/headerfootercontent.ui://GtkLabel[@id='labelFT_H_CUSTOM'] orphan-label
sc/uiconfig/scalc/ui/headerfootercontent.ui://GtkLabel[@id='labelFT_F_CUSTOM'] orphan-label
sc/uiconfig/scalc/ui/headerfootercontent.ui://GtkLabel[@id='label2'] orphan-label