diff --git a/qrenderdoc/Widgets/Extended/RDLabel.cpp b/qrenderdoc/Widgets/Extended/RDLabel.cpp index a89234707..046ad3aa5 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.cpp +++ b/qrenderdoc/Widgets/Extended/RDLabel.cpp @@ -108,4 +108,14 @@ void RDLabel::resizeEvent(QResizeEvent *event) setContentsMargins(margin, 0, margin, 0); } } + + QLabel::resizeEvent(event); +} + +void RDLabel::changeEvent(QEvent *event) +{ + if(event->type() == QEvent::PaletteChange || event->type() == QEvent::StyleChange) + emit styleChanged(event); + + QLabel::changeEvent(event); } diff --git a/qrenderdoc/Widgets/Extended/RDLabel.h b/qrenderdoc/Widgets/Extended/RDLabel.h index fb732b5e0..47119e3e8 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.h +++ b/qrenderdoc/Widgets/Extended/RDLabel.h @@ -43,6 +43,7 @@ signals: void doubleClicked(QMouseEvent *event); void mouseMoved(QMouseEvent *event); void leave(); + void styleChanged(QEvent *event); public slots: @@ -52,6 +53,7 @@ protected: void mouseDoubleClickEvent(QMouseEvent *event) override; void leaveEvent(QEvent *event) override; void resizeEvent(QResizeEvent *event) override; + void changeEvent(QEvent *event) override; bool m_preserveRatio = false; }; diff --git a/qrenderdoc/Widgets/ResourcePreview.cpp b/qrenderdoc/Widgets/ResourcePreview.cpp index c55b45ba8..275a679b9 100644 --- a/qrenderdoc/Widgets/ResourcePreview.cpp +++ b/qrenderdoc/Widgets/ResourcePreview.cpp @@ -42,18 +42,20 @@ ResourcePreview::ResourcePreview(ICaptureContext &c, IReplayOutput *output, QWid ui->thumbnail = thumb; ui->gridLayout->addWidget(ui->thumbnail, 0, 0, 1, 2); - QPalette Pal(ui->slotLabel->palette()); + setBackgroundRole(QPalette::Background); + setForegroundRole(QPalette::Highlight); - QWidget tmp; - - Pal.setColor(ui->slotLabel->foregroundRole(), tmp.palette().color(QPalette::Foreground)); - Pal.setColor(ui->slotLabel->backgroundRole(), tmp.palette().color(QPalette::Dark)); + setSelected(false); + ui->slotLabel->setPalette(palette()); + ui->slotLabel->setBackgroundRole(QPalette::Dark); + ui->slotLabel->setForegroundRole(QPalette::Foreground); ui->slotLabel->setAutoFillBackground(true); - ui->slotLabel->setPalette(Pal); ui->slotLabel->setFont(Formatter::PreferredFont()); + ui->descriptionLabel->setPalette(palette()); ui->descriptionLabel->setAutoFillBackground(true); - ui->descriptionLabel->setPalette(Pal); + ui->descriptionLabel->setBackgroundRole(QPalette::Dark); + ui->descriptionLabel->setForegroundRole(QPalette::Foreground); ui->descriptionLabel->setFont(Formatter::PreferredFont()); QObject::connect(ui->thumbnail, &CustomPaintWidget::clicked, this, &ResourcePreview::clickEvent); @@ -102,13 +104,21 @@ void ResourcePreview::setSize(QSize s) void ResourcePreview::setSelected(bool sel) { + m_Selected = sel; + QPalette Pal(palette()); - Pal.setColor(QPalette::Foreground, sel ? Qt::red : Qt::black); + Pal.setColor(QPalette::Highlight, sel ? QColor(Qt::red) : Pal.color(QPalette::Foreground)); setPalette(Pal); } +void ResourcePreview::changeEvent(QEvent *event) +{ + if(event->type() == QEvent::PaletteChange || event->type() == QEvent::StyleChange) + setSelected(m_Selected); +} + WId ResourcePreview::thumbWinId() { return ui->thumbnail->winId(); diff --git a/qrenderdoc/Widgets/ResourcePreview.h b/qrenderdoc/Widgets/ResourcePreview.h index b705e72c1..1fc903fcf 100644 --- a/qrenderdoc/Widgets/ResourcePreview.h +++ b/qrenderdoc/Widgets/ResourcePreview.h @@ -68,8 +68,12 @@ public: void setSelected(bool sel); +protected: + void changeEvent(QEvent *event) override; + private: Ui::ResourcePreview *ui; bool m_Active; + bool m_Selected = false; }; diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp index 469277cfe..e960b222c 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp @@ -68,22 +68,29 @@ void CaptureDialog::initWarning(RDLabel *warning) if(warning->devicePixelRatio() >= 2) warning->setText(warning->text().replace(lit(".png"), lit("@2x.png"))); - QPalette pal = warning->palette(); + auto calcPaletteFromStyle = [warning](QEvent *) { + QPalette pal = warning->palette(); - QColor base = pal.color(QPalette::ToolTipBase); + QColor base = pal.color(QPalette::ToolTipBase); - pal.setColor(QPalette::Foreground, pal.color(QPalette::ToolTipText)); - pal.setColor(QPalette::Window, base); - pal.setColor(QPalette::Base, base.darker(120)); + pal.setColor(QPalette::Foreground, pal.color(QPalette::ToolTipText)); + pal.setColor(QPalette::Window, base); + pal.setColor(QPalette::Base, base.darker(120)); + + warning->setPalette(pal); + }; + + calcPaletteFromStyle(NULL); warning->setBackgroundRole(QPalette::Window); + warning->setForegroundRole(QPalette::Foreground); QObject::connect(warning, &RDLabel::mouseMoved, - [this, warning](QMouseEvent *) { warning->setBackgroundRole(QPalette::Base); }); + [warning](QMouseEvent *) { warning->setBackgroundRole(QPalette::Base); }); QObject::connect(warning, &RDLabel::leave, - [this, warning]() { warning->setBackgroundRole(QPalette::Window); }); + [warning]() { warning->setBackgroundRole(QPalette::Window); }); + QObject::connect(warning, &RDLabel::styleChanged, calcPaletteFromStyle); - warning->setPalette(pal); warning->setAutoFillBackground(true); warning->setMouseTracking(true); warning->setVisible(false);