summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-05-14 13:42:52 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2020-05-26 16:55:01 +0200
commit671cca13e11e48112ec18e6d3f90efff6c177804 (patch)
tree713bd0cd2783ab6f0e27f2bad2ebba7dbda405f4
parent3c60b9cced6d5deebc1ca46933d3e3dbac923675 (diff)
tdf#132169 we always get the value in MapUnit::Map100thMM
but must set it in the core metric of the target application since... commit f7c751439d4616f43509301d71af92b13b576a84 Date: Thu Nov 7 15:53:49 2019 +0100 jsdialog: consume .uno:LineWidth double value added parameters for online, but with parameters its no longer considered a simple slot and for non-simple slots the auto-conversion of values to/from twips isn't done. there's probably a much and older deeper bug here, but lets get this known broken line width working Change-Id: I8683431f02d2d14936411d35ba070944b9b80e1f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94200 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94820 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r--include/svx/itemwin.hxx4
-rw-r--r--include/svx/linectrl.hxx2
-rw-r--r--svx/source/tbxctrls/itemwin.cxx14
-rw-r--r--svx/source/tbxctrls/linectrl.cxx10
4 files changed, 20 insertions, 10 deletions
diff --git a/include/svx/itemwin.hxx b/include/svx/itemwin.hxx
index 62a479b870be..03e74fdc5f5f 100644
--- a/include/svx/itemwin.hxx
+++ b/include/svx/itemwin.hxx
@@ -60,7 +60,7 @@ class SVX_DLLPUBLIC SvxMetricField : public MetricField
using Window::Update;
OUString aCurTxt;
- MapUnit ePoolUnit;
+ MapUnit eDestPoolUnit;
FieldUnit eDlgUnit;
Size aLogicalSize;
css::uno::Reference< css::frame::XFrame > mxFrame;
@@ -79,7 +79,7 @@ public:
const css::uno::Reference< css::frame::XFrame >& rFrame );
void Update( const XLineWidthItem* pItem );
- void SetCoreUnit( MapUnit eUnit );
+ void SetDestCoreUnit( MapUnit eUnit );
void RefreshDlgUnit();
};
diff --git a/include/svx/linectrl.hxx b/include/svx/linectrl.hxx
index a2b1a484e18a..37dc0750bc35 100644
--- a/include/svx/linectrl.hxx
+++ b/include/svx/linectrl.hxx
@@ -62,6 +62,8 @@ public:
class SVX_DLLPUBLIC SvxLineWidthToolBoxControl : public SfxToolBoxControl
{
+ static MapUnit GetCoreMetric();
+
public:
SFX_DECL_TOOLBOX_CONTROL();
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx
index 5dd5ae966506..2db377a6b57d 100644
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
@@ -242,7 +242,7 @@ SvxMetricField::SvxMetricField(
vcl::Window* pParent, const Reference< XFrame >& rFrame )
: MetricField(pParent, WB_BORDER | WB_SPIN | WB_REPEAT)
, aCurTxt()
- , ePoolUnit(MapUnit::MapCM)
+ , eDestPoolUnit(MapUnit::Map100thMM)
, mxFrame(rFrame)
{
Size aSize( CalcMinimumSize() );
@@ -265,8 +265,10 @@ void SvxMetricField::Update( const XLineWidthItem* pItem )
{
if ( pItem )
{
- if ( pItem->GetValue() != GetCoreValue( *this, ePoolUnit ) )
- SetMetricValue( *this, pItem->GetValue(), ePoolUnit );
+ // tdf#132169 we always get the value in MapUnit::Map100thMM but have
+ // to set it in the core metric of the target application
+ if ( pItem->GetValue() != GetCoreValue( *this, MapUnit::Map100thMM ) )
+ SetMetricValue( *this, pItem->GetValue(), MapUnit::Map100thMM );
}
else
SetText( "" );
@@ -276,7 +278,7 @@ void SvxMetricField::Update( const XLineWidthItem* pItem )
void SvxMetricField::Modify()
{
MetricField::Modify();
- long nTmp = GetCoreValue( *this, ePoolUnit );
+ long nTmp = GetCoreValue( *this, eDestPoolUnit );
XLineWidthItem aLineWidthItem( nTmp );
Any a;
@@ -300,9 +302,9 @@ void SvxMetricField::ReleaseFocus_Impl()
}
}
-void SvxMetricField::SetCoreUnit( MapUnit eUnit )
+void SvxMetricField::SetDestCoreUnit( MapUnit eUnit )
{
- ePoolUnit = eUnit;
+ eDestPoolUnit = eUnit;
}
void SvxMetricField::RefreshDlgUnit()
diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx
index fa67f56f7fb5..b0e6c81ff21e 100644
--- a/svx/source/tbxctrls/linectrl.cxx
+++ b/svx/source/tbxctrls/linectrl.cxx
@@ -223,10 +223,9 @@ void SvxLineWidthToolBoxControl::StateChanged(
{
DBG_ASSERT( dynamic_cast<const XLineWidthItem*>( pState) != nullptr, "wrong ItemType" );
- // Core-Unit handed over to MetricField
// Should not happen in CreateItemWin ()!
// CD!!! GetCoreMetric();
- pFld->SetCoreUnit( MapUnit::Map100thMM );
+ pFld->SetDestCoreUnit(GetCoreMetric());
pFld->Update( static_cast<const XLineWidthItem*>(pState) );
}
@@ -236,6 +235,13 @@ void SvxLineWidthToolBoxControl::StateChanged(
}
}
+MapUnit SvxLineWidthToolBoxControl::GetCoreMetric()
+{
+ SfxObjectShell* pSh = SfxObjectShell::Current();
+ SfxItemPool& rPool = pSh ? pSh->GetPool() : SfxGetpApp()->GetPool();
+ sal_uInt16 nWhich = rPool.GetWhich(SID_ATTR_LINE_WIDTH);
+ return rPool.GetMetric(nWhich);
+}
VclPtr<vcl::Window> SvxLineWidthToolBoxControl::CreateItemWindow( vcl::Window *pParent )
{