@@ -170,7 +170,7 @@ protected void registerListeners()
170170 boolean validRange = Double .isFinite (new_value ) && Double .isFinite (model_widget .propMaximum ().getValue ());
171171 meter .setRange (new_value , model_widget .propMaximum ().getValue (), validRange );
172172 if (toolkit .isEditMode () && validRange ) {
173- meter .setCurrentValue ((new_value + model_widget .propMaximum ().getValue ()) / 2.0 );
173+ meter .setCurrentValue ((new_value + model_widget .propMaximum ().getValue ()) / 2.0 , true );
174174 }
175175 });
176176
@@ -183,7 +183,7 @@ protected void registerListeners()
183183 boolean validRange = Double .isFinite (new_value ) && Double .isFinite (model_widget .propMinimum ().getValue ());
184184 meter .setRange (model_widget .propMinimum ().getValue (), new_value , validRange );
185185 if (toolkit .isEditMode () && validRange ) {
186- meter .setCurrentValue ((new_value + model_widget .propMinimum ().getValue ()) / 2.0 );
186+ meter .setCurrentValue ((new_value + model_widget .propMinimum ().getValue ()) / 2.0 , true );
187187 }
188188 });
189189
@@ -295,6 +295,7 @@ private void layoutChanged(WidgetProperty<?> property, Object old_value, Object
295295 private void valueChanged (WidgetProperty <?> property , Object old_value , Object new_value ) {
296296 if (new_value instanceof VDouble ) {
297297 meter .withWriteLock (() -> {
298+ boolean linearMeterScaleHasChanged = false ;
298299 VDouble vDouble = ((VDouble ) new_value );
299300 double newValue = vDouble .getValue ();
300301
@@ -327,6 +328,7 @@ private void valueChanged(WidgetProperty<?> property, Object old_value, Object n
327328 && displayRange .getMaximum () - displayRange .getMinimum () > 0.0 ) {
328329 if (meter .linearMeterScale .getValueRange ().getLow () != displayRange .getMinimum () || meter .linearMeterScale .getValueRange ().getHigh () != displayRange .getMaximum () || !meter .getValidRange ()) {
329330 meter .setRange (displayRange .getMinimum (), displayRange .getMaximum (), true );
331+ linearMeterScaleHasChanged = true ;
330332 }
331333 } else {
332334 Range controlRange = display .getControlRange ();
@@ -336,12 +338,15 @@ private void valueChanged(WidgetProperty<?> property, Object old_value, Object n
336338 && controlRange .getMaximum () - controlRange .getMinimum () > 0.0 ) {
337339 if (meter .linearMeterScale .getValueRange ().getLow () != controlRange .getMinimum () || meter .linearMeterScale .getValueRange ().getHigh () != controlRange .getMaximum () || !meter .getValidRange ()) {
338340 meter .setRange (controlRange .getMinimum (), controlRange .getMaximum (), true );
341+ linearMeterScaleHasChanged = true ;
339342 }
340343 } else if (newObservedMinAndMaxValues && !Double .isNaN (observedMin ) && !Double .isNaN (observedMax )) {
341344 meter .setRange (observedMin - 1 , observedMax + 1 , false );
342345 newObservedMinAndMaxValues = false ;
346+ linearMeterScaleHasChanged = true ;
343347 } else if (meter .linearMeterScale .getValueRange ().getLow () != 0.0 || meter .linearMeterScale .getValueRange ().getHigh () != 100 ) {
344348 meter .setRange (0.0 , 100.0 , false );
349+ linearMeterScaleHasChanged = true ;
345350 }
346351 }
347352 }
@@ -352,10 +357,12 @@ private void valueChanged(WidgetProperty<?> property, Object old_value, Object n
352357 if (warningRange != null ) {
353358 if (!Double .isNaN (warningRange .getMinimum ()) && meter .getLow () != warningRange .getMinimum ()) {
354359 meter .setLow (warningRange .getMinimum ());
360+ linearMeterScaleHasChanged = true ;
355361 }
356362
357363 if (!Double .isNaN (warningRange .getMaximum ()) && meter .getHigh () != warningRange .getMaximum ()) {
358364 meter .setHigh (warningRange .getMaximum ());
365+ linearMeterScaleHasChanged = true ;
359366 }
360367 }
361368 }
@@ -365,16 +372,18 @@ private void valueChanged(WidgetProperty<?> property, Object old_value, Object n
365372 if (alarmRange != null ) {
366373 if (!Double .isNaN (alarmRange .getMinimum ()) && meter .getLoLo () != alarmRange .getMinimum ()) {
367374 meter .setLoLo (alarmRange .getMinimum ());
375+ linearMeterScaleHasChanged = true ;
368376 }
369377
370378 if (!Double .isNaN (alarmRange .getMaximum ()) && meter .getHiHi () != alarmRange .getMaximum ()) {
371379 meter .setHiHi (alarmRange .getMaximum ());
380+ linearMeterScaleHasChanged = true ;
372381 }
373382 }
374383 }
375384 }
376385 }
377- meter .setCurrentValue (newValue );
386+ meter .setCurrentValue (newValue , linearMeterScaleHasChanged );
378387 });
379388 }
380389 }
0 commit comments