cabana: fix thumbnail position issue (#27852)

* fix thumbnail position issue on WSL

* continue

* remove Qt::tool

* set parent
old-commit-hash: 7fff874755
beeps
Dean Lee 2 years ago committed by GitHub
parent c635bf8723
commit a9f0e50aba
  1. 27
      tools/cabana/videowidget.cc
  2. 2
      tools/cabana/videowidget.h

@ -153,7 +153,7 @@ void VideoWidget::updatePlayBtnState() {
} }
// Slider // Slider
Slider::Slider(QWidget *parent) : timer(this), thumbnail_label(this), QSlider(Qt::Horizontal, parent) { Slider::Slider(QWidget *parent) : timer(this), thumbnail_label(parent), QSlider(Qt::Horizontal, parent) {
timer.callOnTimeout([this]() { timer.callOnTimeout([this]() {
timeline = can->getTimeline(); timeline = can->getTimeline();
std::sort(timeline.begin(), timeline.end(), sortTimelineBasedOnEventPriority); std::sort(timeline.begin(), timeline.end(), sortTimelineBasedOnEventPriority);
@ -265,19 +265,29 @@ void Slider::mouseMoveEvent(QMouseEvent *e) {
} }
} }
int x = std::clamp(e->pos().x() - thumb.width() / 2, THUMBNAIL_MARGIN, rect().right() - thumb.width() - THUMBNAIL_MARGIN); int x = std::clamp(e->pos().x() - thumb.width() / 2, THUMBNAIL_MARGIN, rect().right() - thumb.width() - THUMBNAIL_MARGIN);
int y = -thumb.height() - THUMBNAIL_MARGIN - style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing); int y = -thumb.height();
thumbnail_label.showPixmap(mapToGlobal({x, y}), utils::formatSeconds(seconds), thumb, alert); thumbnail_label.showPixmap(mapToParent({x, y}), utils::formatSeconds(seconds), thumb, alert);
QSlider::mouseMoveEvent(e); QSlider::mouseMoveEvent(e);
} }
void Slider::leaveEvent(QEvent *event) { bool Slider::event(QEvent *event) {
thumbnail_label.hide(); switch (event->type()) {
QSlider::leaveEvent(event); case QEvent::WindowActivate:
case QEvent::WindowDeactivate:
case QEvent::FocusIn:
case QEvent::FocusOut:
case QEvent::Leave:
thumbnail_label.hide();
break;
default:
break;
}
return QSlider::event(event);
} }
// InfoLabel // InfoLabel
InfoLabel::InfoLabel(QWidget *parent) : QWidget(parent, Qt::Tool | Qt::FramelessWindowHint) { InfoLabel::InfoLabel(QWidget *parent) : QWidget(parent, Qt::WindowStaysOnTopHint) {
setAttribute(Qt::WA_ShowWithoutActivating); setAttribute(Qt::WA_ShowWithoutActivating);
setVisible(false); setVisible(false);
} }
@ -288,7 +298,8 @@ void InfoLabel::showPixmap(const QPoint &pt, const QString &sec, const QPixmap &
alert_info = alert; alert_info = alert;
setVisible(!pm.isNull()); setVisible(!pm.isNull());
if (isVisible()) { if (isVisible()) {
setGeometry({pt, pm.size()}); resize(pm.size());
move(pt);
update(); update();
} }
} }

@ -40,7 +40,7 @@ public:
private: private:
void mousePressEvent(QMouseEvent *e) override; void mousePressEvent(QMouseEvent *e) override;
void mouseMoveEvent(QMouseEvent *e) override; void mouseMoveEvent(QMouseEvent *e) override;
void leaveEvent(QEvent *event) override; bool event(QEvent *event) override;
void sliderChange(QAbstractSlider::SliderChange change) override; void sliderChange(QAbstractSlider::SliderChange change) override;
void paintEvent(QPaintEvent *ev) override; void paintEvent(QPaintEvent *ev) override;
void streamStarted(); void streamStarted();

Loading…
Cancel
Save