include/svx/strings.hrc                |    3 
 sc/qa/unit/ucalc.cxx                   |   74 ++++++++++++
 svx/inc/bitmaps.hlst                   |    3 
 svx/source/tbxctrls/tbcontrl.cxx       |  199 +++++++++++++++++++++++++--------
 svx/uiconfig/ui/floatingframeborder.ui |   22 +--
 5 files changed, 244 insertions(+), 57 deletions(-)

New commits:
commit 3a9167e1b8a236da2862f4377e2040a8c189c99c
Author:     Bayram Çiçek <m...@bayramcicek.com.tr>
AuthorDate: Wed Jul 14 21:25:05 2021 +0300
Commit:     Muhammet Kara <muhammet.k...@collabora.com>
CommitDate: Mon Aug 23 13:20:26 2021 +0200

    tdf#143919: Calc: add diagonal borders in Toolbar>Borders
    
    In "Table toolbar > Borders" tab;
    
    - Borders UI column size increased to 5
    - diagonal left border icon added to 5th place
    - diagonal right border icon added to 10th place
    - criss-cross border icon added to 15th place
    
    - added diagonal left and diagonal right
    borders feature
    
    - implemented removing diagonal borders
    when set "no border"
    
    - added criss-cross line feature
    
    - added a unit test for diagonal borders
    
    Change-Id: I2dd7ab797b1a191eb650cc6340ee57d39e45a1ca
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118951
    Tested-by: Jenkins
    Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org>
    Reviewed-by: Muhammet Kara <muhammet.k...@collabora.com>

diff --git a/include/svx/strings.hrc b/include/svx/strings.hrc
index e18af6a34981..d9b640774755 100644
--- a/include/svx/strings.hrc
+++ b/include/svx/strings.hrc
@@ -1782,6 +1782,9 @@
 #define RID_SVXSTR_TABLE_PRESET_OUTERVERI           
NC_("RID_SVXSTR_TABLE_PRESET_OUTERVERI", "Set Outer Border and Vertical Lines")
 #define RID_SVXSTR_TABLE_PRESET_OUTERINNER          
NC_("RID_SVXSTR_TABLE_PRESET_OUTERINNER", "Set Outer Border Without Changing 
Inner Lines")
 #define RID_SVXSTR_PARA_PRESET_DIAGONAL             
NC_("RID_SVXSTR_PARA_PRESET_DIAGONAL", "Set Diagonal Lines Only")
+#define RID_SVXSTR_PARA_PRESET_DIAGONALLEFT         
NC_("RID_SVXSTR_PARA_PRESET_DIAGONALLEFT", "Set Diagonal Left Border")
+#define RID_SVXSTR_PARA_PRESET_DIAGONALRIGHT        
NC_("RID_SVXSTR_PARA_PRESET_DIAGONALRIGHT", "Set Diagonal Right Border")
+#define RID_SVXSTR_PARA_PRESET_CRISSCROSS           
NC_("RID_SVXSTR_PARA_PRESET_CRISSCROSS", "Set Criss-Cross Border")
 #define RID_SVXSTR_PARA_PRESET_ALL                  
NC_("RID_SVXSTR_PARA_PRESET_ALL", "Set All Four Borders")
 #define RID_SVXSTR_PARA_PRESET_LEFTRIGHT            
NC_("RID_SVXSTR_PARA_PRESET_LEFTRIGHT", "Set Left and Right Borders Only")
 #define RID_SVXSTR_PARA_PRESET_TOPBOTTOM            
NC_("RID_SVXSTR_PARA_PRESET_TOPBOTTOM", "Set Top and Bottom Borders Only")
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index f8ddc85a01a4..48ad56946d93 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -76,6 +76,7 @@
 #include <editeng/eeitem.hxx>
 #include <editeng/wghtitem.hxx>
 #include <editeng/postitem.hxx>
+#include <editeng/lineitem.hxx>
 
 #include <svx/svdpage.hxx>
 #include <svx/svdocirc.hxx>
@@ -179,6 +180,7 @@ public:
     void testSearchCells();
     void testFormulaPosition();
     void testFormulaWizardSubformula();
+    void testDiagonalBorders();
 
     /**
      * Make sure the sheet streams are invalidated properly.
@@ -301,6 +303,7 @@ public:
     CPPUNIT_TEST(testSearchCells);
     CPPUNIT_TEST(testFormulaPosition);
     CPPUNIT_TEST(testFormulaWizardSubformula);
+    CPPUNIT_TEST(testDiagonalBorders);
     CPPUNIT_TEST(testJumpToPrecedentsDependents);
     CPPUNIT_TEST(testSetBackgroundColor);
     CPPUNIT_TEST(testRenameTable);
@@ -5923,6 +5926,77 @@ void Test::testFormulaWizardSubformula()
     m_pDoc->DeleteTab(0);
 }
 
+void Test::testDiagonalBorders()
+{
+    m_pDoc->InsertTab(0, "Diagonal");
+
+    ScAddress aPos;
+    const editeng::SvxBorderLine* pLine;
+    const ScPatternAttr* pPat;
+
+    // diagonal left border
+    ::editeng::SvxBorderLine dLeftBorderLine( nullptr, 1 );
+    SvxLineItem dLeftLineItem( ATTR_BORDER_TLBR );
+    dLeftLineItem.SetLine(&dLeftBorderLine);
+
+    // set diagonal left border to cell(A1)
+    m_pDoc->ApplyAttr(0, 0, 0, dLeftLineItem);
+
+    aPos = { 0, 0, 0 };
+    pPat = m_pDoc->GetPattern(aPos);
+    CPPUNIT_ASSERT(pPat);
+
+    pLine = pPat->GetItem(ATTR_BORDER_TLBR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal left border was expected, but not 
found!", pLine);
+
+    // diagonal right border
+    ::editeng::SvxBorderLine dRightBorderLine( nullptr, 1 );
+    SvxLineItem dRightLineItem( ATTR_BORDER_BLTR );
+    dRightLineItem.SetLine(&dRightBorderLine);
+
+    // set diagonal right border to cell(A2)
+    m_pDoc->ApplyAttr(0, 1, 0, dRightLineItem);
+
+    aPos = { 0, 1, 0 };
+    pPat = m_pDoc->GetPattern(aPos);
+    CPPUNIT_ASSERT(pPat);
+
+    pLine = pPat->GetItem(ATTR_BORDER_BLTR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal right border was expected, but not 
found!", pLine);
+
+    // diagonal left and right border in the same cell (A5)
+    m_pDoc->ApplyAttr(0, 4, 0, dLeftLineItem);
+    m_pDoc->ApplyAttr(0, 4, 0, dRightLineItem);
+
+    // test if both borders are applied successfully in the same cell (A5)
+    aPos = { 0, 4, 0 };
+    pPat = m_pDoc->GetPattern(aPos);
+    CPPUNIT_ASSERT(pPat);
+
+    pLine = pPat->GetItem(ATTR_BORDER_TLBR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal left border was expected, but not 
found!", pLine);
+    pLine = pPat->GetItem(ATTR_BORDER_BLTR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal right border was expected, but not 
found!", pLine);
+
+    // test if both borders are removed successfully
+    dLeftLineItem.SetLine(nullptr);
+    dRightLineItem.SetLine(nullptr);
+
+    // SetLine(nullptr) should remove the lines from (A5)
+    m_pDoc->ApplyAttr(0, 4, 0, dLeftLineItem);
+    m_pDoc->ApplyAttr(0, 4, 0, dRightLineItem);
+
+    pPat = m_pDoc->GetPattern(aPos);
+    CPPUNIT_ASSERT(pPat);
+
+    pLine = pPat->GetItem(ATTR_BORDER_TLBR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal left border was not expected, but is 
found!", !pLine);
+    pLine = pPat->GetItem(ATTR_BORDER_BLTR).GetLine();
+    CPPUNIT_ASSERT_MESSAGE("Diagonal right border was not expected, but is 
found!", !pLine);
+
+    m_pDoc->DeleteTab(0);
+}
+
 void Test::testSetStringAndNote()
 {
     m_pDoc->InsertTab(0, "Test");
diff --git a/svx/inc/bitmaps.hlst b/svx/inc/bitmaps.hlst
index 3bf954339846..78b5509c52f5 100644
--- a/svx/inc/bitmaps.hlst
+++ b/svx/inc/bitmaps.hlst
@@ -272,6 +272,9 @@
 #define RID_SVXBMP_FRAME10                          "svx/res/fr010.png"
 #define RID_SVXBMP_FRAME11                          "svx/res/fr011.png"
 #define RID_SVXBMP_FRAME12                          "svx/res/fr012.png"
+#define RID_SVXBMP_FRAME13                          "svx/res/fr013.png"
+#define RID_SVXBMP_FRAME14                          "svx/res/fr014.png"
+#define RID_SVXBMP_FRAME15                          "svx/res/pr06.png"
 #define RID_SVXBMP_GRAF_RED                         "res/sc10865.png"
 #define RID_SVXBMP_GRAF_GREEN                       "res/sc10866.png"
 #define RID_SVXBMP_GRAF_BLUE                        "res/sc10867.png"
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 2bd7d5fb2e0d..71dcd4ee811d 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -2170,25 +2170,25 @@ 
SvxFrameWindow_Impl::SvxFrameWindow_Impl(SvxFrameToolBoxControl* pControl, weld:
     InitImageList();
 
     /*
-     *  1       2        3         4
-     *  -------------------------------------
-     *  NONE    LEFT     RIGHT     LEFTRIGHT
-     *  TOP     BOTTOM   TOPBOTTOM OUTER
-     *  -------------------------------------
-     *  HOR     HORINNER VERINNER   ALL         <- can be switched of via 
bParagraphMode
+     *  1       2        3         4            5
+     *  ------------------------------------------------------
+     *  NONE    LEFT     RIGHT     LEFTRIGHT    DIAGONALLEFT
+     *  TOP     BOTTOM   TOPBOTTOM OUTER        DIAGONALRIGHT
+     *  ------------------------------------------------------
+     *  HOR     HORINNER VERINNER   ALL         CRISSCROSS      <- can be 
switched of via bParagraphMode
      */
 
     sal_uInt16 i = 0;
 
-    for ( i=1; i<9; i++ )
+    for ( i=1; i<11; i++ )
         mxFrameSet->InsertItem(i, Image(aImgVec[i-1].first), 
aImgVec[i-1].second);
 
     //bParagraphMode should have been set in StateChanged
     if ( !bParagraphMode )
-        for ( i = 9; i < 13; i++ )
+        for ( i = 11; i < 16; i++ )
             mxFrameSet->InsertItem(i, Image(aImgVec[i-1].first), 
aImgVec[i-1].second);
 
-    mxFrameSet->SetColCount( 4 );
+    mxFrameSet->SetColCount( 5 );
     mxFrameSet->SetSelectHdl( LINK( this, SvxFrameWindow_Impl, SelectHdl ) );
     CalcSizeValueSet();
 
@@ -2223,6 +2223,15 @@ IMPL_LINK_NOARG(SvxFrameWindow_Impl, SelectHdl, 
ValueSet*, void)
     SvxBoxItem          aBorderOuter( SID_ATTR_BORDER_OUTER );
     SvxBoxInfoItem      aBorderInner( SID_ATTR_BORDER_INNER );
     SvxBorderLine       theDefLine;
+
+    // diagonal left border
+    SvxBorderLine       dLeftBorderLine( nullptr, 1 );
+    SvxLineItem         dLeftLineItem( SID_ATTR_BORDER_DIAG_TLBR );
+
+    // diagonal right border
+    SvxBorderLine       dRightBorderLine( nullptr, 1 );
+    SvxLineItem         dRightLineItem( SID_ATTR_BORDER_DIAG_BLTR );
+
     SvxBorderLine       *pLeft = nullptr,
                         *pRight = nullptr,
                         *pTop = nullptr,
@@ -2236,6 +2245,9 @@ IMPL_LINK_NOARG(SvxFrameWindow_Impl, SelectHdl, 
ValueSet*, void)
     switch ( nSel )
     {
         case 1: nValidFlags |= FrmValidFlags::AllMask;
+                // set nullptr to remove diagonal lines
+                dLeftLineItem.SetLine(nullptr);
+                dRightLineItem.SetLine(nullptr);
         break;  // NONE
         case 2: pLeft = &theDefLine;
                 nValidFlags |= FrmValidFlags::Left;
@@ -2246,75 +2258,167 @@ IMPL_LINK_NOARG(SvxFrameWindow_Impl, SelectHdl, 
ValueSet*, void)
         case 4: pLeft = pRight = &theDefLine;
                 nValidFlags |=  FrmValidFlags::Right|FrmValidFlags::Left;
         break;  // LEFTRIGHT
-        case 5: pTop = &theDefLine;
+        case 5: dLeftLineItem.SetLine(&dLeftBorderLine);
+        break;  // DIAGONAL LEFT
+        case 6: pTop = &theDefLine;
                 nValidFlags |= FrmValidFlags::Top;
         break;  // TOP
-        case 6: pBottom = &theDefLine;
+        case 7: pBottom = &theDefLine;
                 nValidFlags |= FrmValidFlags::Bottom;
         break;  // BOTTOM
-        case 7: pTop =  pBottom = &theDefLine;
+        case 8: pTop =  pBottom = &theDefLine;
                 nValidFlags |= FrmValidFlags::Bottom|FrmValidFlags::Top;
         break;  // TOPBOTTOM
-        case 8: pLeft = pRight = pTop = pBottom = &theDefLine;
+        case 9: pLeft = pRight = pTop = pBottom = &theDefLine;
                 nValidFlags |= FrmValidFlags::Left | FrmValidFlags::Right | 
FrmValidFlags::Top | FrmValidFlags::Bottom;
         break;  // OUTER
+        case 10:
+                dRightLineItem.SetLine(&dRightBorderLine);
+        break;  // DIAGONAL RIGHT
 
         // Inner Table:
-        case 9: // HOR
+        case 11: // HOR
             pTop = pBottom = &theDefLine;
             aBorderInner.SetLine( &theDefLine, SvxBoxInfoItemLine::HORI );
             aBorderInner.SetLine( nullptr, SvxBoxInfoItemLine::VERT );
             nValidFlags |= 
FrmValidFlags::HInner|FrmValidFlags::Top|FrmValidFlags::Bottom;
             break;
 
-        case 10: // HORINNER
+        case 12: // HORINNER
             pLeft = pRight = pTop = pBottom = &theDefLine;
             aBorderInner.SetLine( &theDefLine, SvxBoxInfoItemLine::HORI );
             aBorderInner.SetLine( nullptr, SvxBoxInfoItemLine::VERT );
             nValidFlags |= 
FrmValidFlags::Right|FrmValidFlags::Left|FrmValidFlags::HInner|FrmValidFlags::Top|FrmValidFlags::Bottom;
             break;
 
-        case 11: // VERINNER
+        case 13: // VERINNER
             pLeft = pRight = pTop = pBottom = &theDefLine;
             aBorderInner.SetLine( nullptr, SvxBoxInfoItemLine::HORI );
             aBorderInner.SetLine( &theDefLine, SvxBoxInfoItemLine::VERT );
             nValidFlags |= 
FrmValidFlags::Right|FrmValidFlags::Left|FrmValidFlags::VInner|FrmValidFlags::Top|FrmValidFlags::Bottom;
         break;
 
-        case 12: // ALL
+        case 14: // ALL
             pLeft = pRight = pTop = pBottom = &theDefLine;
             aBorderInner.SetLine( &theDefLine, SvxBoxInfoItemLine::HORI );
             aBorderInner.SetLine( &theDefLine, SvxBoxInfoItemLine::VERT );
             nValidFlags |= FrmValidFlags::AllMask;
             break;
 
+        case 15:
+            // set both diagonal lines to draw criss-cross line
+            dLeftLineItem.SetLine(&dLeftBorderLine);
+            dRightLineItem.SetLine(&dRightBorderLine);
+            break;  // CRISS-CROSS
+
         default:
         break;
     }
-    aBorderOuter.SetLine( pLeft, SvxBoxItemLine::LEFT );
-    aBorderOuter.SetLine( pRight, SvxBoxItemLine::RIGHT );
-    aBorderOuter.SetLine( pTop, SvxBoxItemLine::TOP );
-    aBorderOuter.SetLine( pBottom, SvxBoxItemLine::BOTTOM );
-
-    if(nModifier == KEY_SHIFT)
-        nValidFlags |= FrmValidFlags::AllMask;
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::TOP,       
bool(nValidFlags&FrmValidFlags::Top ));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::BOTTOM,    
bool(nValidFlags&FrmValidFlags::Bottom ));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::LEFT,      
bool(nValidFlags&FrmValidFlags::Left));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::RIGHT,     
bool(nValidFlags&FrmValidFlags::Right ));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::HORI,      
bool(nValidFlags&FrmValidFlags::HInner ));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::VERT,      
bool(nValidFlags&FrmValidFlags::VInner));
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::DISTANCE );
-    aBorderInner.SetValid( SvxBoxInfoItemValidFlags::DISABLE,   false );
 
-    Any a;
-    Sequence< PropertyValue > aArgs( 2 );
-    aArgs[0].Name = "OuterBorder";
-    aBorderOuter.QueryValue( a );
-    aArgs[0].Value = a;
-    aArgs[1].Name = "InnerBorder";
-    aBorderInner.QueryValue( a );
-    aArgs[1].Value = a;
+    if (nSel == 5)
+    {
+        // apply diagonal left border
+        Any a;
+        Sequence< PropertyValue > aArgs( 1 );
+        aArgs[0].Name = "BorderTLBR";
+        dLeftLineItem.QueryValue( a );
+        aArgs[0].Value = a;
+
+        mxControl->dispatchCommand( ".uno:BorderTLBR", aArgs );
+    }
+    else if (nSel == 10)
+    {
+        // apply diagonal right border
+        Any a;
+        Sequence< PropertyValue > aArgs( 1 );
+        aArgs[0].Name = "BorderBLTR";
+        dRightLineItem.QueryValue( a );
+        aArgs[0].Value = a;
+
+        mxControl->dispatchCommand( ".uno:BorderBLTR", aArgs );
+    }
+    else if (nSel == 15)
+    {
+        // to draw criss-cross line,
+        // we need to set diagonal left and
+        // diagonal right border together
+
+        // apply diagonal left border (TLBR)
+        Any aLeft;
+        Sequence< PropertyValue > aArgsTLBR( 1 );
+        aArgsTLBR[0].Name = "BorderTLBR";
+        dLeftLineItem.QueryValue( aLeft );
+        aArgsTLBR[0].Value = aLeft;
+
+        // apply diagonal right border (BLTR)
+        Any aRight;
+        Sequence< PropertyValue > aArgsBLTR( 1 );
+        aArgsBLTR[0].Name = "BorderBLTR";
+        dRightLineItem.QueryValue( aRight );
+        aArgsBLTR[0].Value = aRight;
+
+        // execute dispatchCommand for both of them
+        mxControl->dispatchCommand( ".uno:BorderTLBR", aArgsTLBR );
+        mxControl->dispatchCommand( ".uno:BorderBLTR", aArgsBLTR );
+    }
+    else
+    {
+        aBorderOuter.SetLine( pLeft, SvxBoxItemLine::LEFT );
+        aBorderOuter.SetLine( pRight, SvxBoxItemLine::RIGHT );
+        aBorderOuter.SetLine( pTop, SvxBoxItemLine::TOP );
+        aBorderOuter.SetLine( pBottom, SvxBoxItemLine::BOTTOM );
+
+        if(nModifier == KEY_SHIFT)
+            nValidFlags |= FrmValidFlags::AllMask;
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::TOP,       
bool(nValidFlags&FrmValidFlags::Top ));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::BOTTOM,    
bool(nValidFlags&FrmValidFlags::Bottom ));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::LEFT,      
bool(nValidFlags&FrmValidFlags::Left));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::RIGHT,     
bool(nValidFlags&FrmValidFlags::Right ));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::HORI,      
bool(nValidFlags&FrmValidFlags::HInner ));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::VERT,      
bool(nValidFlags&FrmValidFlags::VInner));
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::DISTANCE );
+        aBorderInner.SetValid( SvxBoxInfoItemValidFlags::DISABLE,   false );
+
+        // if nSel == 1, we should remove all lines from the cell.
+        // additionally, we should remove diagonal borders here,
+        // because diagonal left and right borders are NOT
+        // the member of aBorderOuter and aBorderInner.
+        if (nSel == 1)
+        {
+            // remove left diagonal line
+            {
+                Any a;
+                Sequence< PropertyValue > aArgs( 1 );
+                aArgs[0].Name = "BorderTLBR";
+                dLeftLineItem.QueryValue( a );
+                aArgs[0].Value = a;
+
+                mxControl->dispatchCommand( ".uno:BorderTLBR", aArgs );
+            }
+
+            // remove right diagonal line
+            {
+                Any a;
+                Sequence< PropertyValue > aArgs( 1 );
+                aArgs[0].Name = "BorderBLTR";
+                dRightLineItem.QueryValue( a );
+                aArgs[0].Value = a;
+
+                mxControl->dispatchCommand( ".uno:BorderBLTR", aArgs );
+            }
+        }
+
+        Any a;
+        Sequence< PropertyValue > aArgs( 2 );
+        aArgs[0].Name = "OuterBorder";
+        aBorderOuter.QueryValue( a );
+        aArgs[0].Value = a;
+        aArgs[1].Name = "InnerBorder";
+        aBorderInner.QueryValue( a );
+        aArgs[1].Value = a;
+
+        mxControl->dispatchCommand( ".uno:SetBorderStyle", aArgs );
+    }
 
     if (mxFrameSet)
     {
@@ -2324,8 +2428,6 @@ IMPL_LINK_NOARG(SvxFrameWindow_Impl, SelectHdl, 
ValueSet*, void)
         mxFrameSet->SetNoSelection();
     }
 
-    mxControl->dispatchCommand( ".uno:SetBorderStyle", aArgs );
-
     mxControl->EndPopupMode();
 }
 
@@ -2343,18 +2445,18 @@ void SvxFrameWindow_Impl::statusChanged( const 
css::frame::FeatureStateEvent& rE
     if(!mxFrameSet->GetItemCount())
         return;
 
-    bool bTableMode = ( mxFrameSet->GetItemCount() == 12 );
+    bool bTableMode = ( mxFrameSet->GetItemCount() == 15 );
     bool bResize    = false;
 
     if ( bTableMode && bParagraphMode )
     {
-        for ( sal_uInt16 i = 9; i < 13; i++ )
+        for ( sal_uInt16 i = 11; i < 16; i++ )
             mxFrameSet->RemoveItem(i);
         bResize = true;
     }
     else if ( !bTableMode && !bParagraphMode )
     {
-        for ( sal_uInt16 i = 9; i < 13; i++ )
+        for ( sal_uInt16 i = 11; i < 16; i++ )
             mxFrameSet->InsertItem(i, Image(aImgVec[i-1].first), 
aImgVec[i-1].second);
         bResize = true;
     }
@@ -2382,14 +2484,19 @@ void SvxFrameWindow_Impl::InitImageList()
         {BitmapEx(RID_SVXBMP_FRAME2), 
SvxResId(RID_SVXSTR_PARA_PRESET_ONLYLEFT)},
         {BitmapEx(RID_SVXBMP_FRAME3), 
SvxResId(RID_SVXSTR_PARA_PRESET_ONLYRIGHT)},
         {BitmapEx(RID_SVXBMP_FRAME4), 
SvxResId(RID_SVXSTR_PARA_PRESET_LEFTRIGHT)},
+        {BitmapEx(RID_SVXBMP_FRAME14), 
SvxResId(RID_SVXSTR_PARA_PRESET_DIAGONALLEFT)}, // diagonal left border
+
         {BitmapEx(RID_SVXBMP_FRAME5), 
SvxResId(RID_SVXSTR_PARA_PRESET_ONLYTOP)},
         {BitmapEx(RID_SVXBMP_FRAME6), 
SvxResId(RID_SVXSTR_PARA_PRESET_ONLYTBOTTOM)},
         {BitmapEx(RID_SVXBMP_FRAME7), 
SvxResId(RID_SVXSTR_PARA_PRESET_TOPBOTTOM)},
         {BitmapEx(RID_SVXBMP_FRAME8), 
SvxResId(RID_SVXSTR_TABLE_PRESET_ONLYOUTER)},
+        {BitmapEx(RID_SVXBMP_FRAME13), 
SvxResId(RID_SVXSTR_PARA_PRESET_DIAGONALRIGHT)}, // diagonal right border
+
         {BitmapEx(RID_SVXBMP_FRAME9), 
SvxResId(RID_SVXSTR_PARA_PRESET_TOPBOTTOMHORI)},
         {BitmapEx(RID_SVXBMP_FRAME10), 
SvxResId(RID_SVXSTR_TABLE_PRESET_OUTERHORI)},
         {BitmapEx(RID_SVXBMP_FRAME11), 
SvxResId(RID_SVXSTR_TABLE_PRESET_OUTERVERI)},
-        {BitmapEx(RID_SVXBMP_FRAME12), 
SvxResId(RID_SVXSTR_TABLE_PRESET_OUTERALL)}
+        {BitmapEx(RID_SVXBMP_FRAME12), 
SvxResId(RID_SVXSTR_TABLE_PRESET_OUTERALL)},
+        {BitmapEx(RID_SVXBMP_FRAME15), 
SvxResId(RID_SVXSTR_PARA_PRESET_CRISSCROSS)} // criss-cross border
     };
 }
 
diff --git a/svx/uiconfig/ui/floatingframeborder.ui 
b/svx/uiconfig/ui/floatingframeborder.ui
index 36236939e6e9..66e11a863b77 100644
--- a/svx/uiconfig/ui/floatingframeborder.ui
+++ b/svx/uiconfig/ui/floatingframeborder.ui
@@ -1,34 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
+<!-- Generated with glade 3.38.2 -->
 <interface domain="svx">
   <requires lib="gtk+" version="3.20"/>
   <object class="GtkPopover" id="FloatingFrameBorder">
-    <property name="can_focus">False</property>
-    <property name="no_show_all">True</property>
-    <property name="border_width">4</property>
+    <property name="can-focus">False</property>
+    <property name="no-show-all">True</property>
+    <property name="border-width">5</property>
     <child>
       <object class="GtkBox" id="container">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="orientation">vertical</property>
         <property name="spacing">6</property>
         <child>
           <object class="GtkScrolledWindow" id="valuesetwin">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
+            <property name="can-focus">True</property>
             <property name="hexpand">True</property>
             <property name="vexpand">True</property>
-            <property name="hscrollbar_policy">never</property>
-            <property name="vscrollbar_policy">never</property>
-            <property name="shadow_type">in</property>
+            <property name="hscrollbar-policy">never</property>
+            <property name="vscrollbar-policy">never</property>
+            <property name="shadow-type">in</property>
             <child>
               <object class="GtkViewport">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
+                <property name="can-focus">False</property>
                 <child>
                   <object class="GtkDrawingArea" id="valueset">
                     <property name="visible">True</property>
-                    <property name="can_focus">True</property>
+                    <property name="can-focus">True</property>
                     <property name="events">GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | 
GDK_STRUCTURE_MASK</property>
                     <property name="hexpand">True</property>
                     <property name="vexpand">True</property>

Reply via email to