framework/source/uielement/generictoolbarcontroller.cxx |    8 ++++++++
 sw/sdi/_tabsh.sdi                                       |    4 ++--
 sw/sdi/swriter.sdi                                      |    4 ++--
 sw/source/uibase/shells/tabsh.cxx                       |   10 ++++++++++
 4 files changed, 22 insertions(+), 4 deletions(-)

New commits:
commit b0a3245c63a2f77ce761ebd11820b341969a48b4
Author:     Maxim Monastirsky <momonas...@gmail.com>
AuthorDate: Tue Jul 5 01:03:07 2022 +0300
Commit:     Maxim Monastirsky <momonas...@gmail.com>
CommitDate: Tue Jul 5 13:40:53 2022 +0200

    tdf#149741 Mirror insert column icons for RTL tables
    
    The usual approach of setting the respective property
    in *Commands.xcu won't work here, as that works with
    the paragraph direction, which doesn't have to be the
    same as the table direction.
    
    Change-Id: I9c4d49a5c553a8a74e7760d257167a0be42c89c3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136818
    Tested-by: Jenkins
    Reviewed-by: Maxim Monastirsky <momonas...@gmail.com>

diff --git a/framework/source/uielement/generictoolbarcontroller.cxx 
b/framework/source/uielement/generictoolbarcontroller.cxx
index 25f2e0157e9e..e8e49cb30933 100644
--- a/framework/source/uielement/generictoolbarcontroller.cxx
+++ b/framework/source/uielement/generictoolbarcontroller.cxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/frame/ControlCommand.hpp>
 
 #include <comphelper/propertyvalue.hxx>
+#include <svl/imageitm.hxx>
 #include <vcl/commandinfoprovider.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/toolbox.hxx>
@@ -218,6 +219,7 @@ void GenericToolbarController::statusChanged( const 
FeatureStateEvent& Event )
     ItemStatus      aItemState;
     Visibility      aItemVisibility;
     ControlCommand  aControlCommand;
+    SfxImageItem    aImageItem;
 
     if (( Event.State >>= bValue ) && !m_bEnumCommand )
     {
@@ -293,6 +295,12 @@ void GenericToolbarController::statusChanged( const 
FeatureStateEvent& Event )
         if ( m_bMadeInvisible )
             m_xToolbar->ShowItem( m_nID );
     }
+    else if ( aImageItem.PutValue( Event.State, 0 ) )
+    {
+        m_xToolbar->SetItemImageMirrorMode( m_nID, aImageItem.IsMirrored() );
+        if ( m_bMadeInvisible )
+            m_xToolbar->ShowItem( m_nID );
+    }
     else if ( m_bMadeInvisible )
         m_xToolbar->ShowItem( m_nID );
 
diff --git a/sw/sdi/_tabsh.sdi b/sw/sdi/_tabsh.sdi
index 5d4017b4790d..e4b6b9a2dd6c 100644
--- a/sw/sdi/_tabsh.sdi
+++ b/sw/sdi/_tabsh.sdi
@@ -141,7 +141,7 @@ interface BaseTextTable
     FN_TABLE_INSERT_COL_BEFORE // status(final|play)
     [
         ExecMethod = Execute ;
-        StateMethod = NoState ;
+        StateMethod = GetState ;
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
 
@@ -156,7 +156,7 @@ interface BaseTextTable
     FN_TABLE_INSERT_COL_AFTER // status(final|play)
     [
         ExecMethod = Execute ;
-        StateMethod = NoState ;
+        StateMethod = GetState ;
         DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
     ]
 
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index bf4ed3ec8b25..49fa8f2bb4e6 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -2643,7 +2643,7 @@ SfxVoidItem InsertColumnDialog FN_TABLE_INSERT_COL_DLG
     GroupId = SfxGroupId::Table;
 ]
 
-SfxVoidItem InsertColumnsBefore FN_TABLE_INSERT_COL_BEFORE
+SfxImageItem InsertColumnsBefore FN_TABLE_INSERT_COL_BEFORE
 ()
 [
     AutoUpdate = FALSE,
@@ -2680,7 +2680,7 @@ SfxVoidItem InsertColumns FN_TABLE_INSERT_COL
     GroupId = SfxGroupId::Table;
 ]
 
-SfxVoidItem InsertColumnsAfter FN_TABLE_INSERT_COL_AFTER
+SfxImageItem InsertColumnsAfter FN_TABLE_INSERT_COL_AFTER
 ()
 [
     AutoUpdate = FALSE,
diff --git a/sw/source/uibase/shells/tabsh.cxx 
b/sw/source/uibase/shells/tabsh.cxx
index 3cbea6b77389..88a4c3e10c15 100644
--- a/sw/source/uibase/shells/tabsh.cxx
+++ b/sw/source/uibase/shells/tabsh.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <hintids.hxx>
+#include <svl/imageitm.hxx>
 #include <svl/numformat.hxx>
 #include <svl/zforlist.hxx>
 #include <svl/stritem.hxx>
@@ -1358,6 +1359,15 @@ void SwTableShell::GetState(SfxItemSet &rSet)
                 }
                 break;
             }
+            case FN_TABLE_INSERT_COL_BEFORE:
+            case FN_TABLE_INSERT_COL_AFTER:
+            {
+                SfxImageItem aImageItem(nSlot);
+                if (pFormat->GetFrameDir().GetValue() == 
SvxFrameDirection::Horizontal_RL_TB)
+                    aImageItem.SetMirrored(true);
+                rSet.Put(aImageItem);
+                break;
+            }
             case FN_TABLE_INSERT_ROW:
             case FN_TABLE_INSERT_ROW_AFTER:
             case FN_TABLE_INSERT_ROW_DLG:

Reply via email to