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(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]() {
timeline = can->getTimeline();
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 y = -thumb.height() - THUMBNAIL_MARGIN - style()->pixelMetric(QStyle::PM_LayoutVerticalSpacing);
thumbnail_label.showPixmap(mapToGlobal({x, y}), utils::formatSeconds(seconds), thumb, alert);
int y = -thumb.height();
thumbnail_label.showPixmap(mapToParent({x, y}), utils::formatSeconds(seconds), thumb, alert);
QSlider::mouseMoveEvent(e);
}
void Slider::leaveEvent(QEvent *event) {
thumbnail_label.hide();
QSlider::leaveEvent(event);
bool Slider::event(QEvent *event) {
switch (event->type()) {
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(QWidget *parent) : QWidget(parent, Qt::Tool | Qt::FramelessWindowHint) {
InfoLabel::InfoLabel(QWidget *parent) : QWidget(parent, Qt::WindowStaysOnTopHint) {
setAttribute(Qt::WA_ShowWithoutActivating);
setVisible(false);
}
@ -288,7 +298,8 @@ void InfoLabel::showPixmap(const QPoint &pt, const QString &sec, const QPixmap &
alert_info = alert;
setVisible(!pm.isNull());
if (isVisible()) {
setGeometry({pt, pm.size()});
resize(pm.size());
move(pt);
update();
}
}

@ -40,7 +40,7 @@ public:
private:
void mousePressEvent(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 paintEvent(QPaintEvent *ev) override;
void streamStarted();

Loading…
Cancel
Save