mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-06-29 10:32:10 +08:00
Cabana: fixed form glitches (#26587)
fix visual glitches old-commit-hash: 6dec92df439183ff15155654e558b37ffa861631
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ public:
|
||||
|
||||
private:
|
||||
void showForm(const Signal *sig);
|
||||
void showFormClicked();
|
||||
void updateChartState(const QString &id, const Signal *sig, bool opened);
|
||||
void showTabBarContextMenu(const QPoint &pt);
|
||||
void addSignal(int start_bit, int size, bool little_endian);
|
||||
|
||||
@@ -122,7 +122,7 @@ SignalEdit::SignalEdit(int index, QWidget *parent) : form_idx(index), QWidget(pa
|
||||
save_timer->setSingleShot(true);
|
||||
save_timer->callOnTimeout(this, &SignalEdit::saveSignal);
|
||||
|
||||
QObject::connect(title, &ElidedLabel::clicked, this, &SignalEdit::showFormClicked);
|
||||
QObject::connect(title, &ElidedLabel::clicked, [this]() { emit showFormClicked(sig); });
|
||||
QObject::connect(plot_btn, &QToolButton::clicked, [this](bool checked) {
|
||||
emit showChart(msg_id, sig, checked, QGuiApplication::keyboardModifiers() & Qt::ShiftModifier);
|
||||
});
|
||||
|
||||
@@ -36,8 +36,8 @@ public:
|
||||
void setChartOpened(bool opened);
|
||||
void signalHovered(const Signal *sig);
|
||||
void updateForm(bool show);
|
||||
inline bool isFormVisible() const { return form->isVisible(); }
|
||||
const Signal *sig = nullptr;
|
||||
SignalForm *form = nullptr;
|
||||
QString msg_id;
|
||||
|
||||
signals:
|
||||
@@ -45,14 +45,13 @@ signals:
|
||||
void showChart(const QString &name, const Signal *sig, bool show, bool merge);
|
||||
void remove(const Signal *sig);
|
||||
void save(const Signal *sig, const Signal &new_sig);
|
||||
void showFormClicked();
|
||||
void showFormClicked(const Signal *sig);
|
||||
|
||||
protected:
|
||||
void enterEvent(QEvent *event) override;
|
||||
void leaveEvent(QEvent *event) override;
|
||||
void saveSignal();
|
||||
|
||||
SignalForm *form = nullptr;
|
||||
ElidedLabel *title;
|
||||
QLabel *color_label;
|
||||
QLabel *icon;
|
||||
|
||||
Reference in New Issue
Block a user