diff --git a/tools/cabana/chartswidget.cc b/tools/cabana/chartswidget.cc index a221cbe44..c072f7d25 100644 --- a/tools/cabana/chartswidget.cc +++ b/tools/cabana/chartswidget.cc @@ -358,6 +358,7 @@ bool ChartsWidget::event(QEvent *event) { case QEvent::WindowDeactivate: case QEvent::FocusIn: case QEvent::FocusOut: + case QEvent::Leave: showValueTip(-1); break; default: @@ -618,7 +619,7 @@ void ChartView::updateSeries(const cabana::Signal *sig) { } } updateAxisY(); - resetChartCache(); + chart_pixmap = QPixmap(); } // auto zoom on yaxis @@ -874,9 +875,9 @@ void ChartView::paintEvent(QPaintEvent *event) { const qreal dpr = viewport()->devicePixelRatioF(); chart_pixmap = QPixmap(viewport()->size() * dpr); chart_pixmap.setDevicePixelRatio(dpr); - chart_pixmap.fill(palette().color(QPalette::Base)); QPainter p(&chart_pixmap); p.setRenderHints(QPainter::Antialiasing); + drawBackground(&p, viewport()->rect()); scene()->setSceneRect(viewport()->rect()); scene()->render(&p); } @@ -891,6 +892,10 @@ void ChartView::paintEvent(QPaintEvent *event) { } } +void ChartView::drawBackground(QPainter *painter, const QRectF &rect) { + painter->fillRect(rect, palette().color(QPalette::Base)); +} + void ChartView::drawForeground(QPainter *painter, const QRectF &rect) { // draw time line qreal x = chart()->mapToPosition(QPointF{cur_sec, 0}).x(); diff --git a/tools/cabana/chartswidget.h b/tools/cabana/chartswidget.h index c3af11eb5..771230e9d 100644 --- a/tools/cabana/chartswidget.h +++ b/tools/cabana/chartswidget.h @@ -91,6 +91,7 @@ private: void resetChartCache(); void paintEvent(QPaintEvent *event) override; void drawForeground(QPainter *painter, const QRectF &rect) override; + void drawBackground(QPainter *painter, const QRectF &rect) override; std::tuple getNiceAxisNumbers(qreal min, qreal max, int tick_count); qreal niceNumber(qreal x, bool ceiling); QXYSeries *createSeries(SeriesType type, QColor color);