sc/inc/scabstdlg.hxx                |    1 
 sc/source/ui/attrdlg/scdlgfact.cxx  |    5 +
 sc/source/ui/attrdlg/scdlgfact.hxx  |    1 
 sc/source/ui/docshell/docfunc.cxx   |    6 -
 sc/source/ui/inc/docfunc.hxx        |    2 
 sc/source/ui/inc/inscldlg.hxx       |    8 +
 sc/source/ui/inc/viewfunc.hxx       |    2 
 sc/source/ui/miscdlgs/inscldlg.cxx  |   42 ++++++++
 sc/source/ui/view/cellsh1.cxx       |   13 +-
 sc/source/ui/view/viewfunc.cxx      |    5 -
 sc/uiconfig/scalc/ui/insertcells.ui |  170 +++++++++++++++++++++++-------------
 11 files changed, 184 insertions(+), 71 deletions(-)

New commits:
commit 05a1217921b7be283c6750a35b90e4feda6e993e
Author:     Sahil Gautam <sa...@libreoffice.org>
AuthorDate: Mon Mar 4 04:22:03 2024 +0530
Commit:     Thorsten Behrens <thorsten.behr...@allotropia.de>
CommitDate: Sat Apr 20 21:58:10 2024 +0200

    tdf#80390 Extend InsertCells Dialog to allow adding a set of Rows/Columns
    
    Change-Id: I103574d720fef685b806943672a2aeb1fbf87097
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164316
    Tested-by: Jenkins
    Reviewed-by: Thorsten Behrens <thorsten.behr...@allotropia.de>

diff --git a/sc/inc/scabstdlg.hxx b/sc/inc/scabstdlg.hxx
index afd9abf4fbfc..40cf91404518 100644
--- a/sc/inc/scabstdlg.hxx
+++ b/sc/inc/scabstdlg.hxx
@@ -184,6 +184,7 @@ protected:
     virtual             ~AbstractScInsertCellDlg() override = default;
 public:
     virtual InsCellCmd GetInsCellCmd() const = 0;
+    virtual size_t GetCount() const = 0;
 };
 
 class AbstractScInsertContentsDlg : public VclAbstractDialog
diff --git a/sc/source/ui/attrdlg/scdlgfact.cxx 
b/sc/source/ui/attrdlg/scdlgfact.cxx
index 03926077d9f1..1dba14884dbc 100644
--- a/sc/source/ui/attrdlg/scdlgfact.cxx
+++ b/sc/source/ui/attrdlg/scdlgfact.cxx
@@ -570,6 +570,11 @@ InsCellCmd  AbstractScInsertCellDlg_Impl::GetInsCellCmd() 
const
     return m_xDlg->GetInsCellCmd();
 }
 
+size_t AbstractScInsertCellDlg_Impl::GetCount() const
+{
+    return m_xDlg->GetCount();
+}
+
 InsertDeleteFlags AbstractScInsertContentsDlg_Impl::GetInsContentsCmdBits() 
const
 {
     return m_xDlg->GetInsContentsCmdBits();
diff --git a/sc/source/ui/attrdlg/scdlgfact.hxx 
b/sc/source/ui/attrdlg/scdlgfact.hxx
index 4644ff4b35e2..e1c2d0f52df3 100644
--- a/sc/source/ui/attrdlg/scdlgfact.hxx
+++ b/sc/source/ui/attrdlg/scdlgfact.hxx
@@ -266,6 +266,7 @@ public:
     virtual short Execute() override;
     virtual bool StartExecuteAsync(VclAbstractDialog::AsyncContext &rCtx) 
override;
     virtual InsCellCmd GetInsCellCmd() const override ;
+    virtual size_t GetCount() const override ;
 };
 
 class AbstractScInsertContentsDlg_Impl : public AbstractScInsertContentsDlg
diff --git a/sc/source/ui/docshell/docfunc.cxx 
b/sc/source/ui/docshell/docfunc.cxx
index bad24d1cafb2..430fbe53ddd3 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1756,7 +1756,7 @@ bool canDeleteCellsByPivot(const ScRange& rRange, const 
ScMarkData& rMarkData, D
 }
 
 bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* 
pTabMark, InsCellCmd eCmd,
-                             bool bRecord, bool bApi, bool bPartOfPaste )
+                             bool bRecord, bool bApi, bool bPartOfPaste, 
size_t nInsertCount )
 {
     ScDocShellModificator aModificator( rDocShell );
     ScDocument& rDoc = rDocShell.GetDocument();
@@ -1795,8 +1795,8 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
     SCCOL nStartCol = aTargetRange.aStart.Col();
     SCROW nStartRow = aTargetRange.aStart.Row();
     SCTAB nStartTab = aTargetRange.aStart.Tab();
-    SCCOL nEndCol = aTargetRange.aEnd.Col();
-    SCROW nEndRow = aTargetRange.aEnd.Row();
+    SCCOL nEndCol = aTargetRange.aEnd.Col() + nInsertCount;
+    SCROW nEndRow = aTargetRange.aEnd.Row() + nInsertCount;
     SCTAB nEndTab = aTargetRange.aEnd.Tab();
 
     if ( !rDoc.ValidRow(nStartRow) || !rDoc.ValidRow(nEndRow) )
diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx
index e1f0bb9eaa34..53f0bcc27104 100644
--- a/sc/source/ui/inc/docfunc.hxx
+++ b/sc/source/ui/inc/docfunc.hxx
@@ -138,7 +138,7 @@ public:
                                         bool bApi );
 
     bool            InsertCells( const ScRange& rRange,const ScMarkData* 
pTabMark,
-                              InsCellCmd eCmd, bool bRecord, bool bApi, bool 
bPartOfPaste = false );
+                              InsCellCmd eCmd, bool bRecord, bool bApi, bool 
bPartOfPaste = false, size_t nInsertCount = 0 );
 
     bool            DeleteCells( const ScRange& rRange, const ScMarkData* 
pTabMark,
                               DelCellCmd eCmd, bool bApi );
diff --git a/sc/source/ui/inc/inscldlg.hxx b/sc/source/ui/inc/inscldlg.hxx
index b44bfb60baa9..fdd70fff8738 100644
--- a/sc/source/ui/inc/inscldlg.hxx
+++ b/sc/source/ui/inc/inscldlg.hxx
@@ -30,12 +30,20 @@ private:
     std::unique_ptr<weld::RadioButton> m_xBtnCellsRight;
     std::unique_ptr<weld::RadioButton> m_xBtnInsRow;
     std::unique_ptr<weld::RadioButton> m_xBtnInsCol;
+    std::unique_ptr<weld::SpinButton> m_xNumberOfRows;
+    std::unique_ptr<weld::SpinButton> m_xNumberOfCols;
+
+    // These are arbitrarily chosen.
+    const size_t MAX_INS_ROWS = 4000;
+    const size_t MAX_INS_COLS = 4000;
 
 public:
     ScInsertCellDlg(weld::Window* pParent, bool bDisallowCellMove);
     virtual ~ScInsertCellDlg() override;
 
     InsCellCmd GetInsCellCmd() const;
+    size_t GetCount() const;
+    DECL_LINK(RadioButtonsHdl, weld::Toggleable&, void);
 };
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/viewfunc.hxx b/sc/source/ui/inc/viewfunc.hxx
index 82d202b2df8e..501772c93828 100644
--- a/sc/source/ui/inc/viewfunc.hxx
+++ b/sc/source/ui/inc/viewfunc.hxx
@@ -203,7 +203,7 @@ public:
     bool            Unprotect( SCTAB nTab, const OUString& rPassword );
 
     void            DeleteCells( DelCellCmd eCmd );
-    bool            InsertCells( InsCellCmd eCmd, bool bRecord = true, bool 
bPartOfPaste = false );
+    bool            InsertCells( InsCellCmd eCmd, bool bRecord = true, bool 
bPartOfPaste = false, size_t nCount = 0);
     void            DeleteMulti( bool bRows );
 
     void            DeleteContents( InsertDeleteFlags nFlags );
diff --git a/sc/source/ui/miscdlgs/inscldlg.cxx 
b/sc/source/ui/miscdlgs/inscldlg.cxx
index e077724f4264..bfbfc0462936 100644
--- a/sc/source/ui/miscdlgs/inscldlg.cxx
+++ b/sc/source/ui/miscdlgs/inscldlg.cxx
@@ -32,17 +32,30 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, 
bool bDisallowCellMove)
     , m_xBtnCellsRight(m_xBuilder->weld_radio_button("right"))
     , m_xBtnInsRow(m_xBuilder->weld_radio_button("rows"))
     , m_xBtnInsCol(m_xBuilder->weld_radio_button("cols"))
+    , m_xNumberOfRows(m_xBuilder->weld_spin_button("number_of_rows"))
+    , m_xNumberOfCols(m_xBuilder->weld_spin_button("number_of_columns"))
 {
     const ScViewData* pViewData = ScDocShell::GetViewData();
     if (pViewData && 
pViewData->GetDocument().IsLayoutRTL(pViewData->GetTabNo()))
         m_xBtnCellsRight->set_label(ScResId(SCSTR_INSERT_RTL));
 
+    m_xNumberOfRows->set_range(1, MAX_INS_ROWS);
+    m_xNumberOfRows->set_value(1);
+    m_xNumberOfCols->set_range(1, MAX_INS_COLS);
+    m_xNumberOfCols->set_value(1);
+
+    m_xBtnInsRow->connect_toggled(LINK(this, ScInsertCellDlg, 
RadioButtonsHdl));
+    m_xBtnInsCol->connect_toggled(LINK(this, ScInsertCellDlg, 
RadioButtonsHdl));
+
+    bool bColCount = false;
+    bool bRowsCount = false;
     if (bDisallowCellMove)
     {
         m_xBtnCellsDown->set_sensitive(false);
         m_xBtnCellsRight->set_sensitive(false);
         m_xBtnInsRow->set_active(true);
 
+        bRowsCount = true;
         switch (nInsItemChecked)
         {
             case 2:
@@ -50,6 +63,8 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, bool 
bDisallowCellMove)
                 break;
             case 3:
                 m_xBtnInsCol->set_active(true);
+                bRowsCount = false;
+                bColCount = true;
                 break;
             default:
                 m_xBtnInsRow->set_active(true);
@@ -68,12 +83,20 @@ ScInsertCellDlg::ScInsertCellDlg(weld::Window* pParent, 
bool bDisallowCellMove)
                 break;
             case 2:
                 m_xBtnInsRow->set_active(true);
+                bRowsCount = true;
+                bColCount = false;
                 break;
             case 3:
                 m_xBtnInsCol->set_active(true);
+                bRowsCount = false;
+                bColCount = true;
                 break;
         }
     }
+
+    // if some cells are selected, then disable the SpinButtons
+    m_xNumberOfCols->set_sensitive(bColCount && 
!pViewData->GetMarkData().IsMarked());
+    m_xNumberOfRows->set_sensitive(bRowsCount && 
!pViewData->GetMarkData().IsMarked());
 }
 
 ScInsertCellDlg::~ScInsertCellDlg() {}
@@ -106,4 +129,23 @@ InsCellCmd ScInsertCellDlg::GetInsCellCmd() const
     return nReturn;
 }
 
+size_t ScInsertCellDlg::GetCount() const
+{
+    switch (nInsItemChecked)
+    {
+        case 2:
+            return m_xNumberOfRows->get_value() - 1;
+        case 3:
+            return m_xNumberOfCols->get_value() - 1;
+        default:
+            return 0;
+    }
+}
+
+IMPL_LINK_NOARG(ScInsertCellDlg, RadioButtonsHdl, weld::Toggleable&, void)
+{
+    m_xNumberOfRows->set_sensitive(m_xBtnInsRow->get_active());
+    m_xNumberOfCols->set_sensitive(m_xBtnInsCol->get_active());
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index a8297303ee8f..69fbd1ead083 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -213,11 +213,11 @@ void HandleConditionalFormat(sal_uInt32 nIndex, bool 
bCondFormatDlg, bool bConta
     }
 }
 
-void InsertCells(ScTabViewShell* pTabViewShell, SfxRequest &rReq, InsCellCmd 
eCmd)
+void InsertCells(ScTabViewShell* pTabViewShell, SfxRequest &rReq, InsCellCmd 
eCmd, size_t nCount = 0)
 {
     if (eCmd!=INS_NONE)
     {
-        pTabViewShell->InsertCells( eCmd );
+        pTabViewShell->InsertCells( eCmd, true, false, nCount );
 
         if( ! rReq.IsAPI() )
         {
@@ -352,6 +352,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
         case FID_INS_CELL:
             {
                 InsCellCmd eCmd=INS_NONE;
+                size_t nCount = 0;
 
                 if ( pReqArgs )
                 {
@@ -385,18 +386,20 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
                         ScAbstractDialogFactory* pFact = 
ScAbstractDialogFactory::Create();
 
                         VclPtr<AbstractScInsertCellDlg> 
pDlg(pFact->CreateScInsertCellDlg(pTabViewShell->GetFrameWeld(), bTheFlag));
-                        pDlg->StartExecuteAsync([pDlg, 
pTabViewShell](sal_Int32 nResult){
+                        pDlg->StartExecuteAsync([pDlg, pTabViewShell, 
&nCount](sal_Int32 nResult){
                             if (nResult == RET_OK)
                             {
                                 SfxRequest 
aRequest(pTabViewShell->GetViewFrame(), FID_INS_CELL);
-                                InsertCells(pTabViewShell, aRequest, 
pDlg->GetInsCellCmd());
+                                InsCellCmd eTmpCmd = pDlg->GetInsCellCmd();
+                                nCount = pDlg->GetCount();
+                                InsertCells(pTabViewShell, aRequest, eTmpCmd, 
nCount);
                             }
                             pDlg->disposeOnce();
                         });
                     }
                 }
 
-                InsertCells(pTabViewShell, rReq, eCmd);
+                InsertCells(pTabViewShell, rReq, eCmd, nCount);
             }
             break;
 
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index b25bc9f91312..d6cf4b13ca01 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <address.hxx>
 #include <config_features.h>
 
 #include <scitems.hxx>
@@ -1833,7 +1834,7 @@ void ScViewFunc::OnLOKSetWidthOrHeight(SCCOLROW nStart, 
bool bWidth)
 
 //  insert cells - undo OK
 
-bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool bRecord, bool bPartOfPaste 
)
+bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool bRecord, bool 
bPartOfPaste, size_t nCount )
 {
     ScRange aRange;
     ScMarkType eMarkType = GetViewData().GetSimpleArea(aRange);
@@ -1841,7 +1842,7 @@ bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool 
bRecord, bool bPartOfPaste )
     {
         ScDocShell* pDocSh = GetViewData().GetDocShell();
         const ScMarkData& rMark = GetViewData().GetMarkData();
-        bool bSuccess = pDocSh->GetDocFunc().InsertCells( aRange, &rMark, 
eCmd, bRecord, false, bPartOfPaste );
+        bool bSuccess = pDocSh->GetDocFunc().InsertCells( aRange, &rMark, 
eCmd, bRecord, false, bPartOfPaste, nCount );
         if (bSuccess)
         {
             ResetAutoSpellForContentChange();
diff --git a/sc/uiconfig/scalc/ui/insertcells.ui 
b/sc/uiconfig/scalc/ui/insertcells.ui
index 7bb1aa1cbba5..1f047b7b4867 100644
--- a/sc/uiconfig/scalc/ui/insertcells.ui
+++ b/sc/uiconfig/scalc/ui/insertcells.ui
@@ -1,33 +1,46 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.36.0 -->
+<!-- Generated with glade 3.40.0 -->
 <interface domain="sc">
   <requires lib="gtk+" version="3.20"/>
+  <object class="GtkAdjustment" id="number_of_columns_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">4000</property>
+    <property name="step-increment">1</property>
+    <property name="page-increment">1</property>
+  </object>
+  <object class="GtkAdjustment" id="number_of_rows_adjustment">
+    <property name="lower">1</property>
+    <property name="upper">4000</property>
+    <property name="value">1</property>
+    <property name="step-increment">1</property>
+    <property name="page-increment">1</property>
+  </object>
   <object class="GtkDialog" id="InsertCellsDialog">
-    <property name="can_focus">False</property>
-    <property name="border_width">6</property>
+    <property name="can-focus">False</property>
+    <property name="border-width">6</property>
     <property name="title" translatable="yes" 
context="insertcells|InsertCellsDialog">Insert Cells</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>
+    <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">
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">12</property>
         <child internal-child="action_area">
           <object class="GtkButtonBox" id="dialog-action_area3">
-            <property name="can_focus">False</property>
-            <property name="layout_style">end</property>
+            <property name="can-focus">False</property>
+            <property name="layout-style">end</property>
             <child>
               <object class="GtkButton" id="ok">
                 <property name="label" translatable="yes" 
context="stock">_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="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-underline">True</property>
               </object>
               <packing>
@@ -40,8 +53,8 @@
               <object class="GtkButton" id="cancel">
                 <property name="label" translatable="yes" 
context="stock">_Cancel</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
                 <property name="use-underline">True</property>
               </object>
               <packing>
@@ -54,8 +67,8 @@
               <object class="GtkButton" id="help">
                 <property name="label" translatable="yes" 
context="stock">_Help</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
                 <property name="use-underline">True</property>
               </object>
               <packing>
@@ -69,33 +82,33 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="pack_type">end</property>
+            <property name="pack-type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
           <object class="GtkFrame" id="Selection">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="label_xalign">0</property>
-            <property name="shadow_type">none</property>
+            <property name="can-focus">False</property>
+            <property name="label-xalign">0</property>
+            <property name="shadow-type">none</property>
             <child>
-              <object class="GtkBox" id="box1">
+              <!-- n-columns=2 n-rows=4 -->
+              <object class="GtkGrid">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="orientation">vertical</property>
-                <property name="spacing">6</property>
-                <property name="margin-start">12</property>
-                <property name="margin-top">6</property>
+                <property name="can-focus">False</property>
+                <property name="row-spacing">3</property>
+                <property name="column-spacing">6</property>
+                <property name="row-homogeneous">True</property>
                 <child>
                   <object class="GtkRadioButton" id="down">
                     <property name="label" translatable="yes" 
context="insertcells|down">Shift cells _down</property>
                     <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="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
                     <property name="active">True</property>
-                    <property name="draw_indicator">True</property>
+                    <property name="draw-indicator">True</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="down-atkobject">
                         <property name="AtkObject::accessible-description" 
translatable="yes" context="insertcells|extended_tip|down">Moves the contents 
of the selected range downward when cells are inserted.</property>
@@ -103,19 +116,18 @@
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="right">
                     <property name="label" translatable="yes" 
context="insertcells|right">Shift cells _right</property>
                     <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="draw_indicator">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="draw-indicator">True</property>
                     <property name="group">down</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="right-atkobject">
@@ -124,19 +136,18 @@
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">1</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="rows">
                     <property name="label" translatable="yes" 
context="insertcells|rows">Entire ro_w</property>
                     <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="draw_indicator">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="draw-indicator">True</property>
                     <property name="group">down</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="rows-atkobject">
@@ -145,19 +156,18 @@
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">3</property>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">2</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkRadioButton" id="cols">
                     <property name="label" translatable="yes" 
context="insertcells|cols">Entire _column</property>
                     <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="draw_indicator">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="receives-default">False</property>
+                    <property name="use-underline">True</property>
+                    <property name="draw-indicator">True</property>
                     <property name="group">down</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="cols-atkobject">
@@ -166,17 +176,62 @@
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">4</property>
+                    <property name="left-attach">0</property>
+                    <property name="top-attach">3</property>
                   </packing>
                 </child>
+                <child>
+                  <object class="GtkSpinButton" id="number_of_rows">
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="halign">start</property>
+                    <property name="valign">start</property>
+                    <property name="secondary-icon-tooltip-text" 
translatable="yes" context="insertcells|number_of_rows">Number of 
rows</property>
+                    <property 
name="adjustment">number_of_rows_adjustment</property>
+                    <property name="numeric">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="number_of_rows-atkobject">
+                        <property name="AtkObject::accessible-description" 
translatable="yes" context="insertcells|extended_tip|number_of_rows">Specify 
the number of rows to insert.</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="number_of_columns">
+                    <property name="visible">True</property>
+                    <property name="can-focus">True</property>
+                    <property name="halign">start</property>
+                    <property name="valign">start</property>
+                    <property name="secondary-icon-tooltip-text" 
translatable="yes" context="insertcells|number_of_columns">Number of 
columns</property>
+                    <property 
name="adjustment">number_of_columns_adjustment</property>
+                    <property name="numeric">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" 
id="number_of_columns-atkobject">
+                        <property name="AtkObject::accessible-description" 
translatable="yes" context="insertcells|extended_tip|number_of_columns">Specify 
the number of columns to insert.</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="left-attach">1</property>
+                    <property name="top-attach">3</property>
+                  </packing>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
+                <child>
+                  <placeholder/>
+                </child>
               </object>
             </child>
             <child type="label">
               <object class="GtkLabel" id="label1">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
+                <property name="can-focus">False</property>
                 <property name="label" translatable="yes" 
context="insertcells|label1">Selection</property>
                 <attributes>
                   <attribute name="weight" value="bold"/>
@@ -197,9 +252,6 @@
       <action-widget response="-6">cancel</action-widget>
       <action-widget response="-11">help</action-widget>
     </action-widgets>
-    <child type="titlebar">
-      <placeholder/>
-    </child>
     <child internal-child="accessible">
       <object class="AtkObject" id="InsertCellsDialog-atkobject">
         <property name="AtkObject::accessible-description" translatable="yes" 
context="insertcells|extended_tip|InsertCellsDialog">Opens the Insert Cells 
dialog, in which you can insert new cells according to the options that you 
specify.</property>

Reply via email to