@@ -19,7 +19,10 @@ GuiScanningDialog::GuiScanningDialog(GuiContainer* owner, string id)
1919 setSize (GuiElement::GuiSizeMax, GuiElement::GuiSizeMax);
2020
2121 box = new GuiPanel (this , id + " _BOX" );
22- box->setSize (500 , 545 )->setPosition (0 , 0 , sp::Alignment::Center);
22+ box
23+ ->setSize (500 .0f , 545 .0f )
24+ ->setPosition (0 .0f , 0 .0f , sp::Alignment::Center)
25+ ->hide ();
2326
2427 signal_label = new GuiLabel (box, id + " _LABEL" , tr (" scanning" , " Electric signature" ), 30 );
2528 signal_label->addBackground ()->setPosition (0 , 20 , sp::Alignment::TopCenter)->setSize (450 , 50 );
@@ -111,6 +114,10 @@ void GuiScanningDialog::setupParameters()
111114{
112115 auto [complexity, depth] = getScanComplexityDepth ();
113116
117+ // Reset lock state when setting up new scan parameters
118+ locked = false ;
119+ lock_start_time = 0 .0f ;
120+
114121 for (int n=0 ; n<max_sliders; n++)
115122 {
116123 if (n < complexity)
@@ -120,12 +127,13 @@ void GuiScanningDialog::setupParameters()
120127 }
121128 box->setSize (500 , 265 + 70 * complexity);
122129
123- for (int n= 0 ; n< max_sliders; n++)
130+ for (int n = 0 ; n < max_sliders; n++)
124131 {
125- target[n] = random (0.0 , 1.0 );
126- sliders[n]->setValue (random (0.0 , 1.0 ));
127- while (fabsf (target[n] - sliders[n]->getValue ()) < 0 .2f )
128- sliders[n]->setValue (random (0.0 , 1.0 ));
132+ target[n] = random (0 .0f , 1 .0f );
133+ float slider_value = random (0 .0f , 1 .0f );
134+ while (fabsf (target[n] - slider_value) < 0 .2f )
135+ slider_value = random (0 .0f , 1 .0f );
136+ sliders[n]->setValue (slider_value);
129137 }
130138 updateSignal ();
131139
@@ -153,6 +161,7 @@ void GuiScanningDialog::updateSignal()
153161 float noise = 0.0 ;
154162 float period = 0.0 ;
155163 float phase = 0.0 ;
164+ int visible_slider_count = 0 ;
156165
157166 for (int n=0 ; n<max_sliders; n++)
158167 {
@@ -161,9 +170,11 @@ void GuiScanningDialog::updateSignal()
161170 noise += fabsf (target[n] - sliders[n]->getValue ());
162171 period += fabsf (target[n] - sliders[n]->getValue ());
163172 phase += fabsf (target[n] - sliders[n]->getValue ());
173+ visible_slider_count++;
164174 }
165175 }
166- if (noise < 0 .05f && period < 0 .05f && phase < 0 .05f )
176+ // Only check for lock if there are visible sliders (i.e., scan is active)
177+ if (visible_slider_count > 0 && noise < 0 .05f && period < 0 .05f && phase < 0 .05f )
167178 {
168179 if (!locked)
169180 {
0 commit comments