Skip to content

Commit 35fdd9a

Browse files
committed
Fix wrong blockSignals() assignment.
Before this fix, some UI children widgets did emit signals, so there was useless signals, and a useless callback by the connected QWidget. Now, all the QWidget's signals are blocked, especially those emited by the QWidget's children. This bugfix should significantly reduce the QEvent's load.
1 parent db05c18 commit 35fdd9a

File tree

5 files changed

+48
-12
lines changed

5 files changed

+48
-12
lines changed

src/widgets/appliedloadwidget.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,17 @@ Tensor AppliedLoadWidget::appliedLoad() const
6969

7070
void AppliedLoadWidget::setAppliedLoad(const Tensor &appliedLoad)
7171
{
72-
bool blocked = this->signalsBlocked();
73-
this->blockSignals(true);
72+
bool fx_blocked = ui->fx->blockSignals(true);
73+
bool fy_blocked = ui->fy->blockSignals(true);
74+
bool tz_blocked = ui->tz->blockSignals(true);
75+
7476
ui->fx->setValue( appliedLoad.force_x.value() );
7577
ui->fy->setValue( appliedLoad.force_y.value() );
7678
ui->tz->setValue( appliedLoad.torque_z.value() );
77-
this->blockSignals(blocked);
79+
80+
ui->fx->blockSignals(fx_blocked);
81+
ui->fy->blockSignals(fy_blocked);
82+
ui->tz->blockSignals(tz_blocked);
7883

7984
model()->setAppliedLoad(appliedLoad);
8085
}

src/widgets/designvariablewidget.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,10 @@ void DesignVariableWidget::updateSelection()
162162
Q_ASSERT(!m_tableTimer->isActive());
163163
m_selectionTimer->stop();
164164

165-
bool blocked = ui->tableWidget->blockSignals(true);
165+
bool blocked1 = ui->tableWidget->blockSignals(true);
166+
bool blocked2 = m_selectionTimer->blockSignals(true);
167+
bool blocked3 = m_tableTimer->blockSignals(true);
168+
166169
QSet<int> set = model()->selectedFastenerIndexes();
167170
int row = ui->tableWidget->rowCount();
168171
while (row>0) {
@@ -172,5 +175,8 @@ void DesignVariableWidget::updateSelection()
172175
ui->tableWidget->item(row, col)->setSelected( selected );
173176
}
174177
}
175-
ui->tableWidget->blockSignals(blocked);
178+
179+
ui->tableWidget->blockSignals(blocked1);
180+
m_selectionTimer->blockSignals(blocked2);
181+
m_tableTimer->blockSignals(blocked3);
176182
}

src/widgets/fastenertablewidget.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ void FastenerTableWidget::updateSelection()
174174
Q_ASSERT(!m_tableTimer->isActive());
175175
m_selectionTimer->stop();
176176

177-
bool blocked = ui->tableWidget->blockSignals(true);
177+
bool blocked1 = ui->tableWidget->blockSignals(true);
178+
bool blocked2 = m_selectionTimer->blockSignals(true);
179+
bool blocked3 = m_tableTimer->blockSignals(true);
180+
178181
QSet<int> set = model()->selectedFastenerIndexes();
179182
int row = ui->tableWidget->rowCount();
180183
while (row>0) {
@@ -184,5 +187,8 @@ void FastenerTableWidget::updateSelection()
184187
ui->tableWidget->item(row, col)->setSelected( selected );
185188
}
186189
}
187-
ui->tableWidget->blockSignals(blocked);
190+
191+
ui->tableWidget->blockSignals(blocked1);
192+
m_selectionTimer->blockSignals(blocked2);
193+
m_tableTimer->blockSignals(blocked3);
188194
}

src/widgets/fastenerwidget.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,29 @@ Fastener FastenerWidget::fastener() const
144144

145145
void FastenerWidget::setFastener(const Fastener &fastener)
146146
{
147-
bool blocked = this->signalsBlocked();
148-
this->blockSignals(true);
147+
bool blocked_nameEdit = ui->nameEdit->blockSignals(true);
148+
bool blocked_positionX = ui->positionX->blockSignals(true);
149+
bool blocked_positionY = ui->positionY->blockSignals(true);
150+
bool blocked_thickness = ui->thickness->blockSignals(true);
151+
bool blocked_diameter = ui->diameter->blockSignals(true);
152+
bool blocked_dof_X = ui->dof_X->blockSignals(true);
153+
bool blocked_dof_Y = ui->dof_Y->blockSignals(true);
154+
149155
ui->nameEdit->setText( fastener.name );
150156
ui->positionX->setValue( fastener.positionX.value() *1000); // mm !
151157
ui->positionY->setValue( fastener.positionY.value() *1000); // mm !
152158
ui->thickness->setValue( fastener.thickness.value() *1000); // mm !
153159
ui->diameter->setValue( fastener.diameter.value() *1000); // mm !
154160
ui->dof_X->setChecked( Fastener::DOFtoBool( fastener.DoF_X ));
155161
ui->dof_Y->setChecked( Fastener::DOFtoBool( fastener.DoF_Y ));
156-
this->blockSignals(blocked);
162+
163+
ui->nameEdit->blockSignals(blocked_nameEdit);
164+
ui->positionX->blockSignals(blocked_positionX);
165+
ui->positionY->blockSignals(blocked_positionY);
166+
ui->thickness->blockSignals(blocked_thickness);
167+
ui->diameter->blockSignals(blocked_diameter);
168+
ui->dof_X->blockSignals(blocked_dof_X);
169+
ui->dof_Y->blockSignals(blocked_dof_Y);
157170

158171
model()->setFastener(m_currentIndex, fastener);
159172
}

src/widgets/resultwidget.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,10 @@ void ResultWidget::updateSelection()
119119
Q_ASSERT(!m_resultTimer->isActive());
120120
m_selectionTimer->stop();
121121

122-
bool blocked = ui->tableWidget->blockSignals(true);
122+
bool blocked1 = ui->tableWidget->blockSignals(true);
123+
bool blocked2 = m_selectionTimer->blockSignals(true);
124+
bool blocked3 = m_resultTimer->blockSignals(true);
125+
123126
QSet<int> set = model()->selectedFastenerIndexes();
124127
int row = ui->tableWidget->rowCount();
125128
while (row>0) {
@@ -129,7 +132,10 @@ void ResultWidget::updateSelection()
129132
ui->tableWidget->item(row, col)->setSelected( selected );
130133
}
131134
}
132-
ui->tableWidget->blockSignals(blocked);
135+
136+
ui->tableWidget->blockSignals(blocked1);
137+
m_selectionTimer->blockSignals(blocked2);
138+
m_resultTimer->blockSignals(blocked3);
133139
}
134140

135141

0 commit comments

Comments
 (0)