cabana: fixed chat tool tips was displayed outside of the viewport (#27770)

pull/27772/head
Dean Lee 2 years ago committed by GitHub
parent 15a4b60ee6
commit aa3b8e5f30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      tools/cabana/chartswidget.cc
  2. 2
      tools/cabana/chartswidget.h

@ -71,13 +71,13 @@ ChartsWidget::ChartsWidget(QWidget *parent) : align_timer(this), QFrame(parent)
charts_layout = new QGridLayout(); charts_layout = new QGridLayout();
charts_layout->setSpacing(10); charts_layout->setSpacing(10);
QWidget *charts_container = new QWidget(this); charts_container = new QWidget(this);
QVBoxLayout *charts_main_layout = new QVBoxLayout(charts_container); QVBoxLayout *charts_main_layout = new QVBoxLayout(charts_container);
charts_main_layout->setContentsMargins(0, 0, 0, 0); charts_main_layout->setContentsMargins(0, 0, 0, 0);
charts_main_layout->addLayout(charts_layout); charts_main_layout->addLayout(charts_layout);
charts_main_layout->addStretch(0); charts_main_layout->addStretch(0);
QScrollArea *charts_scroll = new QScrollArea(this); charts_scroll = new QScrollArea(this);
charts_scroll->setFrameStyle(QFrame::NoFrame); charts_scroll->setFrameStyle(QFrame::NoFrame);
charts_scroll->setWidgetResizable(true); charts_scroll->setWidgetResizable(true);
charts_scroll->setWidget(charts_container); charts_scroll->setWidget(charts_container);
@ -159,8 +159,13 @@ void ChartsWidget::zoomUndo() {
} }
void ChartsWidget::showValueTip(double sec) { void ChartsWidget::showValueTip(double sec) {
const QRect visible_rect(-charts_container->pos(), charts_scroll->viewport()->size());
for (auto c : charts) { for (auto c : charts) {
sec >= 0 ? c->showTip(sec) : c->hideTip(); if (sec >= 0 && visible_rect.contains(QRect(c->mapTo(charts_container, QPoint(0, 0)), c->size()))) {
c->showTip(sec);
} else {
c->hideTip();
}
} }
} }

@ -164,6 +164,8 @@ private:
QAction *remove_all_btn; QAction *remove_all_btn;
QGridLayout *charts_layout; QGridLayout *charts_layout;
QList<ChartView *> charts; QList<ChartView *> charts;
QWidget *charts_container;
QScrollArea *charts_scroll;
uint32_t max_chart_range = 0; uint32_t max_chart_range = 0;
bool is_zoomed = false; bool is_zoomed = false;
std::pair<double, double> display_range; std::pair<double, double> display_range;

Loading…
Cancel
Save