summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2024-08-29 11:57:10 +0100
committerCaolán McNamara <caolan.mcnamara@collabora.com>2024-08-29 14:22:26 +0200
commitdb92117fae3034dea59c8e589d93756406678427 (patch)
tree3006e9c38755e3f84f17935cda5d0518332974a6
parent5755b5515b8e97b638f2fb1f7553130760f12e94 (diff)
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/+/172591 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
-rw-r--r--svx/source/sidebar/possize/PosSizePropertyPanel.cxx71
-rw-r--r--svx/source/sidebar/possize/PosSizePropertyPanel.hxx6
2 files changed, 65 insertions, 12 deletions
diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
index def1f363b9f7..04844ff1fee2 100644
--- a/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
+++ b/svx/source/sidebar/possize/PosSizePropertyPanel.cxx
@@ -119,6 +119,11 @@ PosSizePropertyPanel::PosSizePropertyPanel(
mbAutoWidth(false),
mbAutoHeight(false),
mbAdjustEnabled(false),
+ mbMtrPosXBlanked(false),
+ mbMtrPosYBlanked(false),
+ mbMtrWidthBlanked(false),
+ mbMtrHeightBlanked(false),
+ mbMtrAngleBlanked(false),
mxSidebar(std::move(xSidebar))
{
Initialize();
@@ -539,11 +544,17 @@ void PosSizePropertyPanel::NotifyItemUpdate(
limitWidth(*mxMtrWidth);
mlOldWidth = lOldWidth1;
mxMtrWidth->save_value();
+ if (mbMtrWidthBlanked)
+ {
+ mxMtrWidth->reformat();
+ mbMtrWidthBlanked = false;
+ }
break;
}
}
- mxMtrWidth->set_text( u""_ustr );
+ mxMtrWidth->set_text(u""_ustr);
+ mbMtrWidthBlanked = true;
break;
case SID_ATTR_TRANSFORM_HEIGHT:
@@ -559,6 +570,11 @@ void PosSizePropertyPanel::NotifyItemUpdate(
limitWidth(*mxMtrHeight);
mlOldHeight = nTmp;
mxMtrHeight->save_value();
+ if (mbMtrHeightBlanked)
+ {
+ mxMtrHeight->reformat();
+ mbMtrHeightBlanked = false;
+ }
break;
}
}
@@ -578,11 +594,17 @@ void PosSizePropertyPanel::NotifyItemUpdate(
SetMetricValue( *mxMtrPosX, nTmp, mePoolUnit );
limitWidth(*mxMtrPosX);
mxMtrPosX->save_value();
+ if (mbMtrPosXBlanked)
+ {
+ mxMtrPosX->reformat();
+ mbMtrPosXBlanked = false;
+ }
break;
}
}
- mxMtrPosX->set_text( u""_ustr );
+ mxMtrPosX->set_text(u""_ustr);
+ mbMtrPosXBlanked = true;
break;
case SID_ATTR_TRANSFORM_POS_Y:
@@ -597,11 +619,17 @@ void PosSizePropertyPanel::NotifyItemUpdate(
SetMetricValue( *mxMtrPosY, nTmp, mePoolUnit );
limitWidth(*mxMtrPosY);
mxMtrPosY->save_value();
+ if (mbMtrPosYBlanked)
+ {
+ mxMtrPosY->reformat();
+ mbMtrPosYBlanked = false;
+ }
break;
}
}
- mxMtrPosY->set_text( u""_ustr );
+ mxMtrPosY->set_text(u""_ustr);
+ mbMtrPosYBlanked = true;
break;
case SID_ATTR_TRANSFORM_ROT_X:
@@ -698,11 +726,18 @@ void PosSizePropertyPanel::NotifyItemUpdate(
mxMtrAngle->set_value(nTmp.get(), FieldUnit::DEGREE);
mxCtrlDial->SetRotation(nTmp);
+ if (mbMtrAngleBlanked)
+ {
+ mxMtrAngle->reformat();
+ mbMtrAngleBlanked = false;
+ }
+
break;
}
}
- mxMtrAngle->set_text( u""_ustr );
+ mxMtrAngle->set_text(u""_ustr);
+ mbMtrAngleBlanked = true;
mxCtrlDial->SetRotation( 0_deg100 );
break;
@@ -898,28 +933,40 @@ void PosSizePropertyPanel::MetricState(SfxItemState eState, const SfxPoolItem* p
if (mxMtrPosX->get_text().isEmpty())
bPosXBlank = true;
SetFieldUnit( *mxMtrPosX, meDlgUnit, true );
- if(bPosXBlank)
- mxMtrPosX->set_text(OUString());
+ if (bPosXBlank)
+ {
+ mxMtrPosX->set_text(u""_ustr);
+ mbMtrPosXBlanked = true;
+ }
if (mxMtrPosY->get_text().isEmpty())
bPosYBlank = true;
SetFieldUnit( *mxMtrPosY, meDlgUnit, true );
- if(bPosYBlank)
- mxMtrPosY->set_text(OUString());
+ if (bPosYBlank)
+ {
+ mxMtrPosY->set_text(u""_ustr);
+ mbMtrPosYBlanked = true;
+ }
SetPosSizeMinMax(rUIScale);
if (mxMtrWidth->get_text().isEmpty())
bWidthBlank = true;
SetFieldUnit( *mxMtrWidth, meDlgUnit, true );
- if(bWidthBlank)
- mxMtrWidth->set_text(OUString());
+ if (bWidthBlank)
+ {
+ mxMtrWidth->set_text(u""_ustr);
+ mbMtrWidthBlanked = true;
+ }
if (mxMtrHeight->get_text().isEmpty())
bHeightBlank = true;
SetFieldUnit( *mxMtrHeight, meDlgUnit, true );
- if(bHeightBlank)
- mxMtrHeight->set_text(OUString());
+ if (bHeightBlank)
+ {
+ mxMtrHeight->set_text(u""_ustr);
+ mbMtrHeightBlanked = true;
+ }
}
diff --git a/svx/source/sidebar/possize/PosSizePropertyPanel.hxx b/svx/source/sidebar/possize/PosSizePropertyPanel.hxx
index e2ccf3cbdcd9..3fb54f8aaf87 100644
--- a/svx/source/sidebar/possize/PosSizePropertyPanel.hxx
+++ b/svx/source/sidebar/possize/PosSizePropertyPanel.hxx
@@ -161,6 +161,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 );