diff options
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/view/drtxtob.cxx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx index 089964333274..2c7df774cbf6 100644 --- a/sd/source/ui/view/drtxtob.cxx +++ b/sd/source/ui/view/drtxtob.cxx @@ -44,6 +44,9 @@ #include <editeng/writingmodeitem.hxx> #include <editeng/frmdiritem.hxx> #include <editeng/fhgtitem.hxx> +#include <comphelper/lok.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> +#include <editeng/itemtype.hxx> #include <sfx2/objface.hxx> @@ -479,14 +482,38 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet ) nEndPara = pOLV->GetOutliner()->GetParagraphCount() - 1; } long nUpper = 0; + OUString sUpper, sLower; + // TODO: set correct unit + MapUnit eTargetUnit = MapUnit::MapInch; + for( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ ) { const SfxItemSet& rItems = pOLV->GetOutliner()->GetParaAttribs( nPara ); const SvxULSpaceItem& rItem = rItems.Get( EE_PARA_ULSPACE ); nUpper = std::max( nUpper, static_cast<long>(rItem.GetUpper()) ); + + if (nPara == nStartPara) + { + sUpper = GetMetricText(rItem.GetUpper(), + MapUnit::MapTwip, eTargetUnit, nullptr); + } + if (nPara == nEndPara) + { + sLower = GetMetricText(rItem.GetLower(), + MapUnit::MapTwip, eTargetUnit, nullptr); + } } if( nUpper == 0 ) rSet.DisableItem( SID_PARASPACE_DECREASE ); + + if (comphelper::LibreOfficeKit::isActive()) + { + OUString sPayload = ".uno:ULSpacing={\"upper\": \"" + sUpper + + "\", \"lower\": \"" + sLower + "\"}"; + + GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); + } } else { @@ -589,6 +616,29 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet ) aLRSpace.SetWhich(SID_ATTR_PARA_LRSPACE); rSet.Put(aLRSpace); Invalidate(SID_ATTR_PARA_LRSPACE); + + if (comphelper::LibreOfficeKit::isActive()) + { + // TODO: set correct unit + MapUnit eTargetUnit = MapUnit::MapInch; + + OUString sLeft = GetMetricText(aLRSpace.GetLeft(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sRight = GetMetricText(aLRSpace.GetRight(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sFirstline = GetMetricText(aLRSpace.GetTextFirstLineOfst(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sPayload = ".uno:LeftRightParaMargin={\"left\": \"" + sLeft + + "\", \"right\": \"" + sRight + + "\", \"firstline\": \"" + sFirstline + "\"}"; + + GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); + } + //Added by xuxu SfxItemState eState = aAttrSet.GetItemState( EE_PARA_LRSPACE ); if ( eState == SfxItemState::DONTCARE ) |