Author: alg
Date: Thu Mar 20 14:36:21 2014
New Revision: 1579639

URL: http://svn.apache.org/r1579639
Log:
i124409 use slot SID_ATTR_METRIC to retrive the UI unit, not GetModuleFieldUnit

Modified:
    openoffice/trunk/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx

Modified: 
openoffice/trunk/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx?rev=1579639&r1=1579638&r2=1579639&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx 
(original)
+++ openoffice/trunk/main/svx/source/sidebar/possize/PosSizePropertyPanel.cxx 
Thu Mar 20 14:36:21 2014
@@ -91,7 +91,10 @@ PosSizePropertyPanel::PosSizePropertyPan
     mlRotY(0),
     maUIScale(),
     mePoolUnit(),
-    meDlgUnit(),
+
+    // #124409# init with fallback default
+    meDlgUnit(FUNIT_INCH), 
+
     maTransfPosXControl(SID_ATTR_TRANSFORM_POS_X, *pBindings, *this),
     maTransfPosYControl(SID_ATTR_TRANSFORM_POS_Y, *pBindings, *this),
     maTransfWidthControl(SID_ATTR_TRANSFORM_WIDTH, *pBindings, *this),
@@ -313,11 +316,15 @@ void PosSizePropertyPanel::Initialize()
     }
     
     mePoolUnit = maTransfWidthControl.GetCoreMetric();
-    meDlgUnit = GetModuleFieldUnit();
-    SetFieldUnit( *mpMtrPosX, meDlgUnit, true );
-    SetFieldUnit( *mpMtrPosY, meDlgUnit, true );
-    SetFieldUnit( *mpMtrWidth, meDlgUnit, true );
-    SetFieldUnit( *mpMtrHeight, meDlgUnit, true );
+
+    // #124409# no need to do this, the mpBindings->Update( SID_ATTR_METRIC )
+    // call in the constructor will trigger MetricState and will get the 
correct unit
+    //
+    // meDlgUnit = GetModuleFieldUnit();
+    // SetFieldUnit( *mpMtrPosX, meDlgUnit, true );
+    // SetFieldUnit( *mpMtrPosY, meDlgUnit, true );
+    // SetFieldUnit( *mpMtrWidth, meDlgUnit, true );
+    // SetFieldUnit( *mpMtrHeight, meDlgUnit, true );
 }
 
 
@@ -784,7 +791,13 @@ void PosSizePropertyPanel::NotifyItemUpd
     // Pool unit and dialog unit may have changed, make sure that we
     // have the current values.
     mePoolUnit = maTransfWidthControl.GetCoreMetric();
-    meDlgUnit = GetModuleFieldUnit();
+
+    // #124409# do not change; GetModuleFieldUnit uses 
SfxModule::GetCurrentFieldUnit()
+    // which uses GetActiveModule() and if no items are set there (which is 
the case e.g.
+    // for writer), will just return the system fallback of FUNIT_INCH which 
is wrong.
+    // Anyways, with multiple open views the static call GetActiveModule is 
ambigious
+    //
+    // meDlgUnit = GetModuleFieldUnit();
 
     switch (nSID)
     {
@@ -1202,6 +1215,9 @@ void PosSizePropertyPanel::MetricState( 
     bool bWidthBlank = false;
     bool bHeightBlank = false;
     String sNull = String::CreateFromAscii("");
+
+    // #124409# use the given Item to get the correct UI unit and initialize it
+    // and the Fields using it
     meDlgUnit = GetCurrentUnit(eState,pState);
 
     if( mpMtrPosX->GetText() == sNull )


Reply via email to