svx/source/sidebar/possize/PosSizePropertyPanel.cxx | 55 ++++++++++++++++++-- svx/source/sidebar/possize/PosSizePropertyPanel.hxx | 6 ++ 2 files changed, 57 insertions(+), 4 deletions(-)
New commits: commit 166c08906577150b45c399fe3c54230d81dfa0d9 Author: Caolán McNamara <[email protected]> AuthorDate: Thu Aug 29 11:57:10 2024 +0100 Commit: Adolfo Jayme Barrientos <[email protected]> CommitDate: Fri Aug 30 21:40:19 2024 +0200 Resolves: tdf#160675 reformat 'blanked' metricspinbutton after setting value click on background, set_text sets a blank for the content of the metric spin button, so explicitly reformat when a value is set afterwards. Change-Id: Idac3f805bcf1baad1cdeaa3caa1c48a976f2f738 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172592 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <[email protected]> diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx index 18abfa1160e3..8f26d480f985 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx @@ -113,6 +113,11 @@ PosSizePropertyPanel::PosSizePropertyPanel( mbAutoWidth(false), mbAutoHeight(false), mbAdjustEnabled(false), + mbMtrPosXBlanked(false), + mbMtrPosYBlanked(false), + mbMtrWidthBlanked(false), + mbMtrHeightBlanked(false), + mbMtrAngleBlanked(false), mxSidebar(std::move(xSidebar)) { Initialize(); @@ -519,11 +524,17 @@ void PosSizePropertyPanel::NotifyItemUpdate( limitWidth(*mxMtrWidth); mlOldWidth = lOldWidth1; mxMtrWidth->save_value(); + if (mbMtrWidthBlanked) + { + mxMtrWidth->reformat(); + mbMtrWidthBlanked = false; + } break; } } mxMtrWidth->set_text( "" ); + mbMtrWidthBlanked = true; break; case SID_ATTR_TRANSFORM_HEIGHT: @@ -539,6 +550,11 @@ void PosSizePropertyPanel::NotifyItemUpdate( limitWidth(*mxMtrHeight); mlOldHeight = nTmp; mxMtrHeight->save_value(); + if (mbMtrHeightBlanked) + { + mxMtrHeight->reformat(); + mbMtrHeightBlanked = false; + } break; } } @@ -558,11 +574,17 @@ void PosSizePropertyPanel::NotifyItemUpdate( SetMetricValue( *mxMtrPosX, nTmp, mePoolUnit ); limitWidth(*mxMtrPosX); mxMtrPosX->save_value(); + if (mbMtrPosXBlanked) + { + mxMtrPosX->reformat(); + mbMtrPosXBlanked = false; + } break; } } mxMtrPosX->set_text( "" ); + mbMtrPosXBlanked = true; break; case SID_ATTR_TRANSFORM_POS_Y: @@ -577,11 +599,17 @@ void PosSizePropertyPanel::NotifyItemUpdate( SetMetricValue( *mxMtrPosY, nTmp, mePoolUnit ); limitWidth(*mxMtrPosY); mxMtrPosY->save_value(); + if (mbMtrPosYBlanked) + { + mxMtrPosY->reformat(); + mbMtrPosYBlanked = false; + } break; } } mxMtrPosY->set_text( "" ); + mbMtrPosYBlanked = true; break; case SID_ATTR_TRANSFORM_ROT_X: @@ -678,11 +706,18 @@ void PosSizePropertyPanel::NotifyItemUpdate( mxMtrAngle->set_value(nTmp.get(), FieldUnit::DEGREE); mxCtrlDial->SetRotation(nTmp); + if (mbMtrAngleBlanked) + { + mxMtrAngle->reformat(); + mbMtrAngleBlanked = false; + } + break; } } mxMtrAngle->set_text( "" ); + mbMtrAngleBlanked = true; mxCtrlDial->SetRotation( 0_deg100 ); break; @@ -877,28 +912,40 @@ void PosSizePropertyPanel::MetricState(SfxItemState eState, const SfxPoolItem* p if (mxMtrPosX->get_text().isEmpty()) bPosXBlank = true; SetFieldUnit( *mxMtrPosX, meDlgUnit, true ); - if(bPosXBlank) + if (bPosXBlank) + { mxMtrPosX->set_text(OUString()); + mbMtrPosXBlanked = true; + } if (mxMtrPosY->get_text().isEmpty()) bPosYBlank = true; SetFieldUnit( *mxMtrPosY, meDlgUnit, true ); - if(bPosYBlank) + if (bPosYBlank) + { mxMtrPosY->set_text(OUString()); + mbMtrPosYBlanked = true; + } SetPosSizeMinMax(rUIScale); if (mxMtrWidth->get_text().isEmpty()) bWidthBlank = true; SetFieldUnit( *mxMtrWidth, meDlgUnit, true ); - if(bWidthBlank) + if (bWidthBlank) + { mxMtrWidth->set_text(OUString()); + mbMtrWidthBlanked = true; + } if (mxMtrHeight->get_text().isEmpty()) bHeightBlank = true; SetFieldUnit( *mxMtrHeight, meDlgUnit, true ); - if(bHeightBlank) + if (bHeightBlank) + { mxMtrHeight->set_text(OUString()); + mbMtrHeightBlanked = true; + } } diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.hxx b/svx/source/sidebar/possize/PosSizePropertyPanel.hxx index b57d0bcf7dde..b2a60175ddb8 100644 --- a/svx/source/sidebar/possize/PosSizePropertyPanel.hxx +++ b/svx/source/sidebar/possize/PosSizePropertyPanel.hxx @@ -154,6 +154,12 @@ private: bool mbAutoHeight : 1; bool mbAdjustEnabled : 1; + bool mbMtrPosXBlanked : 1; + bool mbMtrPosYBlanked : 1; + bool mbMtrWidthBlanked : 1; + bool mbMtrHeightBlanked : 1; + bool mbMtrAngleBlanked : 1; + css::uno::Reference<css::ui::XSidebar> mxSidebar; DECL_LINK( ChangePosXHdl, weld::MetricSpinButton&, void );
