|  |  |  | @ -153,10 +153,10 @@ void DetailWidget::dbcMsgChanged(int show_form_idx) { | 
			
		
	
		
			
				
					|  |  |  |  |     for (auto sig : msg->getSignals()) { | 
			
		
	
		
			
				
					|  |  |  |  |       SignalEdit *form = i < signal_list.size() ? signal_list[i] : nullptr; | 
			
		
	
		
			
				
					|  |  |  |  |       if (!form) { | 
			
		
	
		
			
				
					|  |  |  |  |         form = new SignalEdit(i); | 
			
		
	
		
			
				
					|  |  |  |  |         form = new SignalEdit(i, this); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::remove, this, &DetailWidget::removeSignal); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::save, this, &DetailWidget::saveSignal); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::showFormClicked, this, &DetailWidget::showFormClicked); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::showFormClicked, this, &DetailWidget::showForm); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::highlight, binary_view, &BinaryView::highlight); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(binary_view, &BinaryView::signalHovered, form, &SignalEdit::signalHovered); | 
			
		
	
		
			
				
					|  |  |  |  |         QObject::connect(form, &SignalEdit::showChart, charts, &ChartsWidget::showChart); | 
			
		
	
	
		
			
				
					|  |  |  | @ -196,16 +196,13 @@ void DetailWidget::updateState(const QHash<QString, CanData> * msgs) { | 
			
		
	
		
			
				
					|  |  |  |  |     history_log->updateState(); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void DetailWidget::showFormClicked() { | 
			
		
	
		
			
				
					|  |  |  |  |   auto s = qobject_cast<SignalEdit *>(sender()); | 
			
		
	
		
			
				
					|  |  |  |  |   showForm(s->sig); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | void DetailWidget::showForm(const Signal *sig) { | 
			
		
	
		
			
				
					|  |  |  |  |   setUpdatesEnabled(false); | 
			
		
	
		
			
				
					|  |  |  |  |   for (auto f : signal_list) { | 
			
		
	
		
			
				
					|  |  |  |  |     f->updateForm(f->sig == sig && !f->isFormVisible()); | 
			
		
	
		
			
				
					|  |  |  |  |     if (f->sig == sig) scroll->ensureWidgetVisible(f); | 
			
		
	
		
			
				
					|  |  |  |  |     f->updateForm(f->sig == sig && !f->form->isVisible()); | 
			
		
	
		
			
				
					|  |  |  |  |     if (f->sig == sig && f->form->isVisible()) { | 
			
		
	
		
			
				
					|  |  |  |  |       QTimer::singleShot(0, [=]() { scroll->ensureWidgetVisible(f); }); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |   } | 
			
		
	
		
			
				
					|  |  |  |  |   setUpdatesEnabled(true); | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |