Cabana: fixed form glitches (#26587)

fix visual glitches
old-commit-hash: 6dec92df43
vw-mqb-aeb
Dean Lee 3 years ago committed by GitHub
parent c82a646888
commit 854f930b27
  1. 15
      tools/cabana/detailwidget.cc
  2. 1
      tools/cabana/detailwidget.h
  3. 2
      tools/cabana/signaledit.cc
  4. 5
      tools/cabana/signaledit.h

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

@ -29,7 +29,6 @@ public:
private: private:
void showForm(const Signal *sig); void showForm(const Signal *sig);
void showFormClicked();
void updateChartState(const QString &id, const Signal *sig, bool opened); void updateChartState(const QString &id, const Signal *sig, bool opened);
void showTabBarContextMenu(const QPoint &pt); void showTabBarContextMenu(const QPoint &pt);
void addSignal(int start_bit, int size, bool little_endian); 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->setSingleShot(true);
save_timer->callOnTimeout(this, &SignalEdit::saveSignal); 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) { QObject::connect(plot_btn, &QToolButton::clicked, [this](bool checked) {
emit showChart(msg_id, sig, checked, QGuiApplication::keyboardModifiers() & Qt::ShiftModifier); emit showChart(msg_id, sig, checked, QGuiApplication::keyboardModifiers() & Qt::ShiftModifier);
}); });

@ -36,8 +36,8 @@ public:
void setChartOpened(bool opened); void setChartOpened(bool opened);
void signalHovered(const Signal *sig); void signalHovered(const Signal *sig);
void updateForm(bool show); void updateForm(bool show);
inline bool isFormVisible() const { return form->isVisible(); }
const Signal *sig = nullptr; const Signal *sig = nullptr;
SignalForm *form = nullptr;
QString msg_id; QString msg_id;
signals: signals:
@ -45,14 +45,13 @@ signals:
void showChart(const QString &name, const Signal *sig, bool show, bool merge); void showChart(const QString &name, const Signal *sig, bool show, bool merge);
void remove(const Signal *sig); void remove(const Signal *sig);
void save(const Signal *sig, const Signal &new_sig); void save(const Signal *sig, const Signal &new_sig);
void showFormClicked(); void showFormClicked(const Signal *sig);
protected: protected:
void enterEvent(QEvent *event) override; void enterEvent(QEvent *event) override;
void leaveEvent(QEvent *event) override; void leaveEvent(QEvent *event) override;
void saveSignal(); void saveSignal();
SignalForm *form = nullptr;
ElidedLabel *title; ElidedLabel *title;
QLabel *color_label; QLabel *color_label;
QLabel *icon; QLabel *icon;

Loading…
Cancel
Save