officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu |   22 ++++
 sc/inc/sc.hrc                                                     |    4 
 sc/inc/sccommands.h                                               |    2 
 sc/sdi/cellsh.sdi                                                 |    2 
 sc/sdi/scalc.sdi                                                  |   50 
+++++++++
 sc/source/ui/docshell/docfunc.cxx                                 |   51 
++++++----
 sc/source/ui/src/hdrcont.src                                      |   12 ++
 sc/source/ui/undo/undoblk.cxx                                     |    8 +
 sc/source/ui/view/cellsh.cxx                                      |    2 
 sc/source/ui/view/cellsh1.cxx                                     |   10 +
 sc/source/ui/view/tabview3.cxx                                    |    2 
 sc/source/ui/view/viewfunc.cxx                                    |    4 
 sc/uiconfig/scalc/menubar/menubar.xml                             |    2 
 sc/uiconfig/scalc/toolbar/insertcellsbar.xml                      |    2 
 sc/uiconfig/scalc/toolbar/standardbar.xml                         |    2 
 15 files changed, 152 insertions(+), 23 deletions(-)

New commits:
commit 285b5ef45817fe20d3bf9613e0247d395b7c880d
Author: Philippe Jung <phil.j...@free.fr>
Date:   Wed May 20 17:27:08 2015 +0200

    Calc: Insert row/col before/after [2/2]
    
    This part adds features to add rows/cols
    after the selection which is a new behaviour.
    
    Change-Id: Iec1201ae56970cd3dd0622c2ffa1eb6e46ad7446
    Reviewed-on: https://gerrit.libreoffice.org/15831
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Yousuf Philips <philip...@hotmail.com>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu 
b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
index f3db21f..1d8490f 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/CalcCommands.xcu
@@ -1097,6 +1097,28 @@
           <value>1</value>
         </prop>
       </node>
+      <node oor:name=".uno:InsertRowsAfter" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Insert ~Rows Below</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Rows ~Below</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
+      <node oor:name=".uno:InsertColumnsAfter" oor:op="replace">
+        <prop oor:name="Label" oor:type="xs:string">
+          <value xml:lang="en-US">Insert Co~lumns Right</value>
+        </prop>
+        <prop oor:name="ContextLabel" oor:type="xs:string">
+          <value xml:lang="en-US">Columns ~Right</value>
+        </prop>
+        <prop oor:name="Properties" oor:type="xs:int">
+          <value>1</value>
+        </prop>
+      </node>
       <node oor:name=".uno:Insert" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
           <value xml:lang="en-US">Insert ~Sheet...</value>
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index 6def9ba..2cbd8d14 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -334,7 +334,9 @@
 #define FID_ADD_NAME            (INSERT_MENU_START + 16)
 #define FID_INS_CELLSDOWN       (INSERT_MENU_START + 18)
 #define FID_INS_CELLSRIGHT      (INSERT_MENU_START + 19)
-#define INSERT_MENU_END         (INSERT_MENU_START + 20)
+#define FID_INS_ROWS_AFTER      (INSERT_MENU_START + 20)
+#define FID_INS_COLUMNS_AFTER   (INSERT_MENU_START + 21)
+#define INSERT_MENU_END         (INSERT_MENU_START + 22)
 
 #define FORMAT_MENU_START       (INSERT_MENU_END)
 #define FID_CELL_FORMAT         (FORMAT_MENU_START)
diff --git a/sc/inc/sccommands.h b/sc/inc/sccommands.h
index ba8f94c..e931c19 100644
--- a/sc/inc/sccommands.h
+++ b/sc/inc/sccommands.h
@@ -44,8 +44,10 @@
 #define CMD_FID_INS_TABLE                           ".uno:Insert"
 #define CMD_FID_INS_CELL                            ".uno:InsertCell"
 #define CMD_FID_INS_COLBRK                          ".uno:InsertColumnBreak"
+#define CMD_FID_INS_COLUMNS_AFTER                   ".uno:InsertColumnsAfter"
 #define CMD_FID_INS_COLUMNS_BEFORE                  ".uno:InsertColumnsBefore"
 #define CMD_FID_INS_ROWBRK                          ".uno:InsertRowBreak"
+#define CMD_FID_INS_ROWS_AFTER                      ".uno:InsertRowsAfter"
 #define CMD_FID_INS_ROWS_BEFORE                     ".uno:InsertRowsBefore"
 #define CMD_FID_MERGE_ON                            ".uno:MergeCells"
 #define CMD_FID_MERGE_OFF                           ".uno:SplitCell"
diff --git a/sc/sdi/cellsh.sdi b/sc/sdi/cellsh.sdi
index 3e6fc6e..d780e98 100644
--- a/sc/sdi/cellsh.sdi
+++ b/sc/sdi/cellsh.sdi
@@ -118,6 +118,8 @@ interface CellSelection
     SID_INSERT_CURRENT_TIME     [ ExecMethod = ExecuteEdit; StateMethod = 
GetState; ]
     FID_INS_ROWS_BEFORE     [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
     FID_INS_COLUMNS_BEFORE  [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
+    FID_INS_ROWS_AFTER      [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
+    FID_INS_COLUMNS_AFTER   [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
     FID_INS_CELLSDOWN       [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
     FID_INS_CELLSRIGHT      [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
     SID_DEL_ROWS            [ ExecMethod = ExecuteEdit; StateMethod = 
GetBlockState; ]
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index bb9b1b6..b59a7ad 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -4133,6 +4133,31 @@ SfxVoidItem InsertColumnsBefore FID_INS_COLUMNS_BEFORE
 ]
 
 
+SfxVoidItem InsertColumnsAfter FID_INS_COLUMNS_AFTER
+()
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_INSERT;
+]
+
+
 SfxVoidItem InsertContents FID_INS_CELL_CONTENTS
 (SfxStringItem Flags FID_INS_CELL_CONTENTS,SfxUInt16Item FormulaCommand 
FN_PARAM_1,SfxBoolItem SkipEmptyCells FN_PARAM_2,SfxBoolItem Transpose 
FN_PARAM_3,SfxBoolItem AsLink FN_PARAM_4,SfxInt16Item MoveMode FN_PARAM_5)
 [
@@ -4435,6 +4460,31 @@ SfxVoidItem InsertRowsBefore FID_INS_ROWS_BEFORE
 ]
 
 
+SfxVoidItem InsertRowsAfter FID_INS_ROWS_AFTER
+()
+[
+    /* flags: */
+    AutoUpdate = FALSE,
+    Cachable = Cachable,
+    FastCall = FALSE,
+    HasCoreId = FALSE,
+    HasDialog = FALSE,
+    ReadOnlyDoc = TRUE,
+    Toggle = FALSE,
+    Container = FALSE,
+    RecordAbsolute = FALSE,
+    RecordPerSet;
+    Synchron;
+
+    /* config: */
+    AccelConfig = TRUE,
+    MenuConfig = TRUE,
+    StatusBarConfig = FALSE,
+    ToolBoxConfig = TRUE,
+    GroupId = GID_INSERT;
+]
+
+
 SfxUInt16Item InsObjCtrl SID_TBXCTL_INSOBJ
 
 [
diff --git a/sc/source/ui/docshell/docfunc.cxx 
b/sc/source/ui/docshell/docfunc.cxx
index aed7215..9be99b6 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1637,12 +1637,23 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, 
const ScMarkData* pTabMark,
 {
     ScDocShellModificator aModificator( rDocShell );
 
-    SCCOL nStartCol = rRange.aStart.Col();
-    SCROW nStartRow = rRange.aStart.Row();
-    SCTAB nStartTab = rRange.aStart.Tab();
-    SCCOL nEndCol = rRange.aEnd.Col();
-    SCROW nEndRow = rRange.aEnd.Row();
-    SCTAB nEndTab = rRange.aEnd.Tab();
+    ScRange aTargetRange( rRange );
+
+    // If insertion is for full cols/rows and after the current
+    // selection, then shift the range accordingly
+    if ( eCmd == INS_INSROWS_AFTER ) {
+        aTargetRange.Move(0, rRange.aEnd.Row() - rRange.aStart.Row() + 1, 0);
+    }
+    if ( eCmd == INS_INSCOLS_AFTER ) {
+        aTargetRange.Move(rRange.aEnd.Col() - rRange.aStart.Col() + 1, 0, 0);
+    }
+
+    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();
+    SCTAB nEndTab = aTargetRange.aEnd.Tab();
 
     if ( !ValidRow(nStartRow) || !ValidRow(nEndRow) )
     {
@@ -1707,9 +1718,9 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
     SCCOL nMergeTestEndCol = nEndCol;
     SCROW nMergeTestEndRow = nEndRow;
 
-    ScRange aExtendMergeRange( rRange );
+    ScRange aExtendMergeRange( aTargetRange );
 
-    if( rRange.aStart == rRange.aEnd && rDoc.HasAttrib(rRange, HASATTR_MERGED) 
)
+    if( aTargetRange.aStart == aTargetRange.aEnd && 
rDoc.HasAttrib(aTargetRange, HASATTR_MERGED) )
     {
         rDoc.ExtendMerge( aExtendMergeRange );
         rDoc.ExtendOverlapped( aExtendMergeRange );
@@ -1719,12 +1730,12 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, 
const ScMarkData* pTabMark,
         nPaintEndRow = nMergeTestEndRow;
     }
 
-    if ( eCmd == INS_INSROWS_BEFORE )
+    if ( eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER )
     {
         nMergeTestStartCol = 0;
         nMergeTestEndCol = MAXCOL;
     }
-    if ( eCmd == INS_INSCOLS_BEFORE )
+    if ( eCmd == INS_INSCOLS_BEFORE || eCmd == INS_INSCOLS_AFTER )
     {
         nMergeTestStartRow = 0;
         nMergeTestEndRow = MAXROW;
@@ -1736,8 +1747,8 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
 
     bool bNeedRefresh = false;
 
-    SCCOL nEditTestEndCol = (eCmd==INS_INSCOLS_BEFORE) ? MAXCOL : 
nMergeTestEndCol;
-    SCROW nEditTestEndRow = (eCmd==INS_INSROWS_BEFORE) ? MAXROW : 
nMergeTestEndRow;
+    SCCOL nEditTestEndCol = (eCmd==INS_INSCOLS_BEFORE || 
eCmd==INS_INSCOLS_AFTER) ? MAXCOL : nMergeTestEndCol;
+    SCROW nEditTestEndRow = (eCmd==INS_INSROWS_BEFORE || 
eCmd==INS_INSROWS_AFTER) ? MAXROW : nMergeTestEndRow;
     ScEditableTester aTester( &rDoc, nMergeTestStartCol, nMergeTestStartRow, 
nEditTestEndCol, nEditTestEndRow, aMark );
     if (!aTester.IsEditable())
     {
@@ -1747,7 +1758,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
     }
 
     // Check if this insertion is allowed with respect to pivot table.
-    if (!canInsertCellsByPivot(rRange, aMark, eCmd, &rDoc))
+    if (!canInsertCellsByPivot(aTargetRange, aMark, eCmd, &rDoc))
     {
         if (!bApi)
             rDocShell.ErrorMessage(STR_NO_INSERT_DELETE_OVER_PIVOT_TABLE);
@@ -1853,7 +1864,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
 
             if( bInsertMerge )
             {
-                if( eCmd == INS_INSROWS_BEFORE || eCmd == INS_CELLSDOWN )
+                if( eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER || 
eCmd == INS_CELLSDOWN )
                 {
                     nStartRow = aExtendMergeRange.aStart.Row();
                     nEndRow = aExtendMergeRange.aEnd.Row();
@@ -1866,7 +1877,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
                         nEndCol = MAXCOL;
                     }
                 }
-                else if( eCmd == INS_CELLSRIGHT || eCmd == INS_INSCOLS_BEFORE )
+                else if( eCmd == INS_CELLSRIGHT || eCmd == INS_INSCOLS_BEFORE 
|| eCmd == INS_INSCOLS_AFTER )
                 {
 
                     nStartCol = aExtendMergeRange.aStart.Col();
@@ -1912,6 +1923,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
             nPaintEndRow = MAXROW;
             break;
         case INS_INSROWS_BEFORE:
+        case INS_INSROWS_AFTER:
             bSuccess = rDoc.InsertRow( 0, 0, MAXCOL, MAXTAB, nStartRow, 
static_cast<SCSIZE>(nEndRow-nStartRow+1), pRefUndoDoc, &aFullMark );
             nPaintStartCol = 0;
             nPaintEndCol = MAXCOL;
@@ -1923,6 +1935,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
             nPaintEndCol = MAXCOL;
             break;
         case INS_INSCOLS_BEFORE:
+        case INS_INSCOLS_AFTER:
             bSuccess = rDoc.InsertCol( 0, 0, MAXROW, MAXTAB, nStartCol, 
static_cast<SCSIZE>(nEndCol-nStartCol+1), pRefUndoDoc, &aFullMark );
             nPaintStartRow = 0;
             nPaintEndRow = MAXROW;
@@ -1977,10 +1990,12 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, 
const ScMarkData* pTabMark,
                 {
                     case INS_CELLSDOWN:
                     case INS_INSROWS_BEFORE:
+                    case INS_INSROWS_AFTER:
                         
aRange.aEnd.IncRow(static_cast<SCsCOL>(nEndRow-nStartRow+1));
                         break;
                     case INS_CELLSRIGHT:
                     case INS_INSCOLS_BEFORE:
+                    case INS_INSCOLS_AFTER:
                         
aRange.aEnd.IncCol(static_cast<SCsCOL>(nEndCol-nStartCol+1));
                         break;
                     default:
@@ -2009,7 +2024,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
             else
                 rDoc.RefreshAutoFilter( nMergeTestStartCol, 
nMergeTestStartRow, nMergeTestEndCol, nMergeTestEndRow, i );
 
-            if ( eCmd == INS_INSROWS_BEFORE ||eCmd == INS_INSCOLS_BEFORE )
+            if ( eCmd == INS_INSROWS_BEFORE ||eCmd == INS_INSCOLS_BEFORE || 
eCmd == INS_INSROWS_AFTER ||eCmd == INS_INSCOLS_AFTER )
                 rDoc.UpdatePageBreaks( i );
 
             sal_uInt16 nExtFlags = 0;
@@ -2020,7 +2035,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
             for( SCTAB j = i+1; j<nTabCount && rDoc.IsScenario(j); j++ )
                 nScenarioCount ++;
 
-            bool bAdjusted = ( eCmd == INS_INSROWS_BEFORE ) ?
+            bool bAdjusted = ( eCmd == INS_INSROWS_BEFORE || eCmd == 
INS_INSROWS_AFTER ) ?
                         AdjustRowHeight(ScRange(0, nStartRow, i, MAXCOL, 
nEndRow, i+nScenarioCount )) :
                         AdjustRowHeight(ScRange(0, nPaintStartRow, i, MAXCOL, 
nPaintEndRow, i+nScenarioCount ));
             if (bAdjusted)
@@ -2049,7 +2064,7 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const 
ScMarkData* pTabMark,
 
             if( pViewSh )
             {
-                pViewSh->MarkRange( rRange, false );
+                pViewSh->MarkRange( aTargetRange, false );
                 pViewSh->SetCursor( nCursorCol, nCursorRow );
             }
         }
diff --git a/sc/source/ui/src/hdrcont.src b/sc/source/ui/src/hdrcont.src
index 8379cb9..ef71563 100644
--- a/sc/source/ui/src/hdrcont.src
+++ b/sc/source/ui/src/hdrcont.src
@@ -77,6 +77,12 @@ Menu RID_POPUP_ROWHEADER
         };
         MenuItem
         {
+            Identifier = FID_INS_ROWS_AFTER ;
+            HelpId = CMD_FID_INS_ROWS_AFTER ;
+            Text [ en-US ] = "Insert Rows ~Below" ;
+        };
+        MenuItem
+        {
             Identifier = SID_DEL_ROWS ;
             HelpId = CMD_SID_DEL_ROWS ;
             Text [ en-US ] = "~Delete Selected Rows" ;
@@ -146,6 +152,12 @@ Menu RID_POPUP_COLHEADER
         };
         MenuItem
         {
+            Identifier = FID_INS_COLUMNS_AFTER ;
+            HelpId = CMD_FID_INS_COLUMNS_AFTER ;
+            Text [ en-US ] = "Insert Columns ~Right" ;
+        };
+        MenuItem
+        {
             Identifier = SID_DEL_COLS ;
             HelpId = CMD_SID_DEL_COLS ;
             Text [ en-US ] = "~Delete Selected Columns" ;
diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 29d14e5..379d213 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -97,13 +97,13 @@ ScUndoInsertCells::ScUndoInsertCells( ScDocShell* 
pNewDocShell,
     bPartOfPaste( bNewPartOfPaste ),
     pPasteUndo( NULL )
 {
-    if (eCmd == INS_INSROWS_BEFORE )            // whole row?
+    if (eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSROWS_AFTER)            // 
whole row?
     {
         aEffRange.aStart.SetCol(0);
         aEffRange.aEnd.SetCol(MAXCOL);
     }
 
-    if (eCmd == INS_INSCOLS_BEFORE )            // whole column?
+    if (eCmd == INS_INSCOLS_BEFORE || eCmd == INS_INSCOLS_AFTER)            // 
whole column?
     {
         aEffRange.aStart.SetRow(0);
         aEffRange.aEnd.SetRow(MAXROW);
@@ -180,6 +180,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
     switch (eCmd)
     {
         case INS_INSROWS_BEFORE:
+        case INS_INSROWS_AFTER:
         case INS_CELLSDOWN:
             for( i=0; i<nCount; i++ )
             {
@@ -192,6 +193,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
             }
             break;
         case INS_INSCOLS_BEFORE:
+        case INS_INSCOLS_AFTER:
         case INS_CELLSRIGHT:
             for( i=0; i<nCount; i++ )
             {
@@ -230,6 +232,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
     switch (eCmd)
     {
         case INS_INSROWS_BEFORE:
+        case INS_INSROWS_AFTER:
             nPaint |= PAINT_LEFT;
             aWorkRange.aEnd.SetRow(MAXROW);
             break;
@@ -246,6 +249,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
             }
             break;
         case INS_INSCOLS_BEFORE:
+        case INS_INSCOLS_AFTER:
             nPaint |= PAINT_TOP;                // top bar
         case INS_CELLSRIGHT:
             for( i=0; i<nCount; i++ )
diff --git a/sc/source/ui/view/cellsh.cxx b/sc/source/ui/view/cellsh.cxx
index 0b33924..3bfc413 100644
--- a/sc/source/ui/view/cellsh.cxx
+++ b/sc/source/ui/view/cellsh.cxx
@@ -208,11 +208,13 @@ void ScCellShell::GetBlockState( SfxItemSet& rSet )
                 break;
 
             case FID_INS_ROWS_BEFORE:           // insert rows
+            case FID_INS_ROWS_AFTER:
             case FID_INS_CELLSDOWN:
                 bDisable = (!bSimpleArea) || GetViewData()->SimpleColMarked();
                 break;
 
             case FID_INS_COLUMNS_BEFORE:        // insert columns
+            case FID_INS_COLUMNS_AFTER:
             case FID_INS_CELLSRIGHT:
                 bDisable = (!bSimpleArea) || GetViewData()->SimpleRowMarked();
                 break;
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 8697779..b9dd9e3 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -152,6 +152,16 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
             rReq.Done();
             break;
 
+        case FID_INS_ROWS_AFTER:
+            pTabViewShell->InsertCells(INS_INSROWS_AFTER);
+            rReq.Done();
+            break;
+
+        case FID_INS_COLUMNS_AFTER:
+            pTabViewShell->InsertCells(INS_INSCOLS_AFTER);
+            rReq.Done();
+            break;
+
         case FID_INS_CELLSDOWN:
             pTabViewShell->InsertCells(INS_CELLSDOWN);
             rReq.Done();
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index a1054fc..2f2cc9d 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -409,6 +409,8 @@ void ScTabView::SelectionChanged()
 
     rBindings.Invalidate( FID_INS_ROWS_BEFORE );
     rBindings.Invalidate( FID_INS_COLUMNS_BEFORE );
+    rBindings.Invalidate( FID_INS_ROWS_AFTER );
+    rBindings.Invalidate( FID_INS_COLUMNS_AFTER );
     rBindings.Invalidate( FID_INS_CELL );
     rBindings.Invalidate( FID_INS_CELLSDOWN );
     rBindings.Invalidate( FID_INS_CELLSRIGHT );
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 35b22ff..d00898d 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -1461,9 +1461,9 @@ bool ScViewFunc::InsertCells( InsCellCmd eCmd, bool 
bRecord, bool bPartOfPaste )
             CellContentChanged();
             ResetAutoSpell();
 
-            if ( eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSCOLS_BEFORE )
+            if ( eCmd == INS_INSROWS_BEFORE || eCmd == INS_INSCOLS_BEFORE || 
eCmd == INS_INSROWS_AFTER || eCmd == INS_INSCOLS_AFTER )
             {
-                OUString aOperation = ( eCmd == INS_INSROWS_BEFORE ) ?
+                OUString aOperation = ( eCmd == INS_INSROWS_BEFORE || eCmd == 
INS_INSROWS_AFTER ) ?
                     OUString("insert-rows"):
                     OUString("insert-columns");
                 HelperNotifyChanges::NotifyIfChangesListeners(*pDocSh, aRange, 
aOperation);
diff --git a/sc/uiconfig/scalc/menubar/menubar.xml 
b/sc/uiconfig/scalc/menubar/menubar.xml
index 3843434..4fd05e5 100644
--- a/sc/uiconfig/scalc/menubar/menubar.xml
+++ b/sc/uiconfig/scalc/menubar/menubar.xml
@@ -184,11 +184,13 @@
             <menu:menu menu:id=".uno:InsertRowsMenu">
                 <menu:menupopup>
                     <menu:menuitem menu:id=".uno:InsertRowsBefore"/>
+                    <menu:menuitem menu:id=".uno:InsertRowsAfter"/>
                 </menu:menupopup>
             </menu:menu>
             <menu:menu menu:id=".uno:InsertColumnsMenu">
                 <menu:menupopup>
                     <menu:menuitem menu:id=".uno:InsertColumnsBefore"/>
+                    <menu:menuitem menu:id=".uno:InsertColumnsAfter"/>
                 </menu:menupopup>
             </menu:menu>
             <menu:menuitem menu:id=".uno:Insert"/>
diff --git a/sc/uiconfig/scalc/toolbar/insertcellsbar.xml 
b/sc/uiconfig/scalc/toolbar/insertcellsbar.xml
index a91b10b..f7e6866 100644
--- a/sc/uiconfig/scalc/toolbar/insertcellsbar.xml
+++ b/sc/uiconfig/scalc/toolbar/insertcellsbar.xml
@@ -21,5 +21,7 @@
  <toolbar:toolbaritem xlink:href=".uno:InsertCellsDown"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertCellsRight"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertRowsBefore"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertRowsAfter"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertColumnsBefore"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertColumnsAfter"/>
 </toolbar:toolbar>
diff --git a/sc/uiconfig/scalc/toolbar/standardbar.xml 
b/sc/uiconfig/scalc/toolbar/standardbar.xml
index 7848c35..6984740 100644
--- a/sc/uiconfig/scalc/toolbar/standardbar.xml
+++ b/sc/uiconfig/scalc/toolbar/standardbar.xml
@@ -47,7 +47,9 @@
  <toolbar:toolbaritem xlink:href=".uno:Navigator" toolbar:visible="false"/>
  <toolbar:toolbarseparator/>
  <toolbar:toolbaritem xlink:href=".uno:InsertRowsBefore"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertRowsAfter" 
toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:InsertColumnsBefore"/>
+ <toolbar:toolbaritem xlink:href=".uno:InsertColumnsAfter" 
toolbar:visible="false"/>
  <toolbar:toolbaritem xlink:href=".uno:DeleteRows"/>
  <toolbar:toolbaritem xlink:href=".uno:DeleteColumns"/>
  <toolbar:toolbarseparator/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to