summaryrefslogtreecommitdiff
path: root/svx/source/dialog/dialcontrol.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/dialog/dialcontrol.cxx')
-rw-r--r--svx/source/dialog/dialcontrol.cxx19
1 files changed, 15 insertions, 4 deletions
diff --git a/svx/source/dialog/dialcontrol.cxx b/svx/source/dialog/dialcontrol.cxx
index 8d127e518dd3..66ef7d827dd4 100644
--- a/svx/source/dialog/dialcontrol.cxx
+++ b/svx/source/dialog/dialcontrol.cxx
@@ -394,10 +394,14 @@ void DialControl::SetLinkedField( NumericField* pField, sal_Int32 nDecimalPlaces
// remove modify handler from old linked field
ImplSetFieldLink( Link<>() );
+ if( mpImpl->mpLinkField )
+ mpImpl->mpLinkField->SetLoseFocusHdl( Link<Control&,void>() );
// remember the new linked field
mpImpl->mpLinkField = pField;
// set modify handler at new linked field
ImplSetFieldLink( LINK( this, DialControl, LinkedFieldModifyHdl ) );
+ if( mpImpl->mpLinkField )
+ mpImpl->mpLinkField->SetLoseFocusHdl( LINK( this, DialControl, LinkedFieldFocusHdl ) );
}
void DialControl::SaveValue()
@@ -472,7 +476,6 @@ void DialControl::ImplSetFieldLink( const Link<>& rLink )
rField.SetDownHdl( rLink );
rField.SetFirstHdl( rLink );
rField.SetLastHdl( rLink );
- rField.SetLoseFocusHdl( rLink );
}
}
@@ -506,12 +509,20 @@ void DialControl::HandleEscapeEvent()
}
}
-IMPL_LINK( DialControl, LinkedFieldModifyHdl, NumericField*, pField )
+IMPL_LINK( DialControl, LinkedFieldModifyHdl, NumericField*, /*pField*/ )
{
- if( pField )
- SetRotation( static_cast< sal_Int32 >( pField->GetValue() * mpImpl->mnLinkedFieldValueMultiplyer ), false );
+ LinkedFieldModifyHdl();
return 0;
}
+IMPL_LINK_NOARG_TYPED( DialControl, LinkedFieldFocusHdl, Control&, void )
+{
+ LinkedFieldModifyHdl();
+}
+void DialControl::LinkedFieldModifyHdl()
+{
+ if( mpImpl->mpLinkField )
+ SetRotation( static_cast< sal_Int32 >( mpImpl->mpLinkField->GetValue() * mpImpl->mnLinkedFieldValueMultiplyer ), false );
+}