[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - sc/sdi sc/source

Marco Cecchetti marco.cecchetti at collabora.com
Tue Dec 12 13:31:51 UTC 2017


 sc/sdi/scalc.sdi              |    4 +-
 sc/source/ui/view/cellsh3.cxx |   82 +++++++++++++++++++++++++++---------------
 2 files changed, 56 insertions(+), 30 deletions(-)

New commits:
commit 789c68003818fa1a5cb17d234d80035006c7e585
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Tue Dec 12 12:17:32 2017 +0100

    lok: calc: get uno:RowHeight/uno:ColumnWidth to work with online 2.1/3.0
    
    This is a follow up patch for back-porting of
    6fea94f8c2b31ac9ab7c92ae81b6dc07ffe6dd28
    
    see tdf#107806: Semantic and syntax for .uno:RowHeight have been
    changed
    
    This patch support both Width/ColumnWidth and Height/RowHeight
    parameters, so that cp-5.3 can work with both online-2.1 and 3.0
    
    Change-Id: I6a421f91460574561581300ab64ec3c6e8fc46fe
    Reviewed-on: https://gerrit.libreoffice.org/46294
    Reviewed-by: Henry Castro <hcastro at collabora.com>
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index 2f855e4a7d38..544655e5fe4f 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -721,7 +721,7 @@ SfxInt16Item Column SID_RANGE_COL
 
 
 SfxUInt16Item ColumnWidth FID_COL_WIDTH
-(SfxUInt16Item ColumnWidth FID_COL_WIDTH,SfxUInt16Item Column FN_PARAM_1)
+(SfxUInt16Item ColumnWidth FID_COL_WIDTH,SfxUInt16Item Column FN_PARAM_1,SfxUInt16Item Width FN_PARAM_2)
 [
     AutoUpdate = FALSE,
     FastCall = FALSE,
@@ -4461,7 +4461,7 @@ SfxInt32Item Row SID_RANGE_ROW
 
 
 SfxUInt16Item RowHeight FID_ROW_HEIGHT
-(SfxUInt16Item RowHeight FID_ROW_HEIGHT,SfxInt32Item Row FN_PARAM_1)
+(SfxUInt16Item RowHeight FID_ROW_HEIGHT,SfxInt32Item Row FN_PARAM_1,SfxUInt16Item Height FN_PARAM_2)
 [
     AutoUpdate = FALSE,
     FastCall = FALSE,
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
index 78e47be0f182..a16241225e8b 100644
--- a/sc/source/ui/view/cellsh3.cxx
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -543,24 +543,37 @@ void ScCellShell::Execute( SfxRequest& rReq )
                 const SfxPoolItem* pHeight;
                 sal_uInt16 nHeight;
 
-                if ( pReqArgs && pReqArgs->HasItem( FID_ROW_HEIGHT, &pHeight ) &&
-                                 pReqArgs->HasItem( FN_PARAM_1, &pRow ) )
+                if ( pReqArgs && pReqArgs->HasItem( FN_PARAM_1, &pRow ) )
                 {
-                    std::vector<sc::ColRowSpan> aRanges;
-                    SCCOLROW nRow = static_cast<const SfxInt32Item*>(pRow)->GetValue() - 1;
-                    nHeight = static_cast<const SfxUInt16Item*>(pHeight)->GetValue();
-                    ScMarkData& rMark = GetViewData()->GetMarkData();
+                    enum { NONE, OLD, NEW } eParamType;
 
-                    if ( rMark.IsRowMarked( static_cast<SCROW>(nRow) ) )
-                    {
-                        aRanges = rMark.GetMarkedRowSpans();
-                    }
-                    else
+                    eParamType = NONE;
+                    if ( pReqArgs->HasItem( FN_PARAM_2, &pHeight ) )
+                        eParamType = OLD;
+                    else if ( pReqArgs->HasItem( FID_ROW_HEIGHT, &pHeight ) )
+                        eParamType = NEW;
+
+                    if ( eParamType != NONE )
                     {
-                        aRanges.push_back(sc::ColRowSpan(nRow, nRow));
-                    }
+                        std::vector<sc::ColRowSpan> aRanges;
+                        SCCOLROW nRow = static_cast<const SfxInt32Item*>(pRow)->GetValue() - 1;
+                        nHeight = static_cast<const SfxUInt16Item*>(pHeight)->GetValue();
+                        ScMarkData& rMark = GetViewData()->GetMarkData();
+
+                        if ( rMark.IsRowMarked( static_cast<SCROW>(nRow) ) )
+                        {
+                            aRanges = rMark.GetMarkedRowSpans();
+                        }
+                        else
+                        {
+                            aRanges.push_back(sc::ColRowSpan(nRow, nRow));
+                        }
+
+                        if ( eParamType == NEW )
+                            nHeight = HMMToTwips(nHeight);
 
-                    pTabViewShell->SetWidthOrHeight(false, aRanges, SC_SIZE_DIRECT, HMMToTwips(nHeight));
+                        pTabViewShell->SetWidthOrHeight(false, aRanges, SC_SIZE_DIRECT, nHeight);
+                    }
                 }
                 else if ( pReqArgs && pReqArgs->HasItem( FID_ROW_HEIGHT, &pHeight ) )
                 {
@@ -649,24 +662,37 @@ void ScCellShell::Execute( SfxRequest& rReq )
                 const SfxPoolItem* pWidth;
                 sal_uInt16 nWidth;
 
-                if ( pReqArgs && pReqArgs->HasItem( FID_COL_WIDTH, &pWidth ) &&
-                                 pReqArgs->HasItem( FN_PARAM_1, &pColumn ) )
+                if ( pReqArgs && pReqArgs->HasItem( FN_PARAM_1, &pColumn ) )
                 {
-                    std::vector<sc::ColRowSpan> aRanges;
-                    SCCOLROW nColumn = static_cast<const SfxUInt16Item*>(pColumn)->GetValue() - 1;
-                    nWidth = static_cast<const SfxUInt16Item*>(pWidth)->GetValue();
-                    ScMarkData& rMark = GetViewData()->GetMarkData();
+                    enum { NONE, OLD, NEW } eParamType;
 
-                    if ( rMark.IsColumnMarked( static_cast<SCCOL>(nColumn) ) )
-                    {
-                        aRanges = rMark.GetMarkedColSpans();
-                    }
-                    else
+                    eParamType = NONE;
+                    if ( pReqArgs->HasItem( FN_PARAM_2, &pWidth ) )
+                        eParamType = OLD;
+                    else if ( pReqArgs->HasItem( FID_COL_WIDTH, &pWidth ) )
+                        eParamType = NEW;
+
+                    if ( eParamType != NONE )
                     {
-                        aRanges.push_back(sc::ColRowSpan(nColumn, nColumn));
-                    }
+                        std::vector<sc::ColRowSpan> aRanges;
+                        SCCOLROW nColumn = static_cast<const SfxUInt16Item*>(pColumn)->GetValue() - 1;
+                        nWidth = static_cast<const SfxUInt16Item*>(pWidth)->GetValue();
+                        ScMarkData& rMark = GetViewData()->GetMarkData();
+
+                        if ( rMark.IsColumnMarked( static_cast<SCCOL>(nColumn) ) )
+                        {
+                            aRanges = rMark.GetMarkedColSpans();
+                        }
+                        else
+                        {
+                            aRanges.push_back(sc::ColRowSpan(nColumn, nColumn));
+                        }
+
+                        if ( eParamType == NEW )
+                            nWidth = HMMToTwips(nWidth);
 
-                    pTabViewShell->SetWidthOrHeight(true, aRanges, SC_SIZE_DIRECT, HMMToTwips(nWidth));
+                        pTabViewShell->SetWidthOrHeight(true, aRanges, SC_SIZE_DIRECT, nWidth);
+                    }
                 }
                 else if ( pReqArgs && pReqArgs->HasItem( FID_COL_WIDTH, &pWidth ) )
                 {


More information about the Libreoffice-commits mailing list