From 09c9ae94d27da33579a334d040c6139f8ce9e0db Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 29 May 2017 16:51:57 +0100 Subject: [PATCH] Change the vulkan layer warning to be theme-friendly * The hardcoded background color didn't work on light-on-dark themes, so instead just use the tooltip base color, and darken on hover. --- qrenderdoc/Widgets/Extended/RDLabel.cpp | 7 +++ qrenderdoc/Widgets/Extended/RDLabel.h | 2 + qrenderdoc/Windows/Dialogs/CaptureDialog.cpp | 28 +++++++++- qrenderdoc/Windows/Dialogs/CaptureDialog.h | 5 +- qrenderdoc/Windows/Dialogs/CaptureDialog.ui | 55 +++++++------------- 5 files changed, 57 insertions(+), 40 deletions(-) diff --git a/qrenderdoc/Widgets/Extended/RDLabel.cpp b/qrenderdoc/Widgets/Extended/RDLabel.cpp index e0136933e..0f60819cf 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.cpp +++ b/qrenderdoc/Widgets/Extended/RDLabel.cpp @@ -53,3 +53,10 @@ void RDLabel::mouseDoubleClickEvent(QMouseEvent *event) QLabel::mouseDoubleClickEvent(event); } + +void RDLabel::leaveEvent(QEvent *event) +{ + emit(leave()); + + QLabel::leaveEvent(event); +} diff --git a/qrenderdoc/Widgets/Extended/RDLabel.h b/qrenderdoc/Widgets/Extended/RDLabel.h index c85e735b8..fa85678e2 100644 --- a/qrenderdoc/Widgets/Extended/RDLabel.h +++ b/qrenderdoc/Widgets/Extended/RDLabel.h @@ -37,6 +37,7 @@ signals: void clicked(QMouseEvent *event); void doubleClicked(QMouseEvent *event); void mouseMoved(QMouseEvent *event); + void leave(); public slots: @@ -44,4 +45,5 @@ protected: void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; + void leaveEvent(QEvent *event) override; }; diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp index 5bf65d2f0..7b9ae9199 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp @@ -23,6 +23,7 @@ ******************************************************************************/ #include "CaptureDialog.h" +#include #include #include #include "3rdparty/flowlayout/FlowLayout.h" @@ -113,6 +114,31 @@ CaptureDialog::CaptureDialog(ICaptureContext &ctx, OnCaptureMethod captureCallba ui->vulkanLayerWarn->setVisible(RENDERDOC_NeedVulkanLayerRegistration(NULL, NULL, NULL)); + QObject::connect(ui->vulkanLayerWarn, &RDLabel::clicked, this, + &CaptureDialog::vulkanLayerWarn_mouseClick); + + QPalette pal = ui->vulkanLayerWarn->palette(); + + 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)); + + ui->vulkanLayerWarn->setBackgroundRole(QPalette::Window); + + QObject::connect(ui->vulkanLayerWarn, &RDLabel::mouseMoved, [this](QMouseEvent *) { + ui->vulkanLayerWarn->setBackgroundRole(QPalette::Base); + }); + QObject::connect(ui->vulkanLayerWarn, &RDLabel::leave, + [this]() { ui->vulkanLayerWarn->setBackgroundRole(QPalette::Window); }); + + ui->vulkanLayerWarn->setPalette(pal); + ui->vulkanLayerWarn->setAutoFillBackground(true); + + ui->vulkanLayerWarn->setMouseTracking(true); + m_CaptureCallback = captureCallback; m_InjectCallback = injectCallback; @@ -231,7 +257,7 @@ void CaptureDialog::on_exePath_textChanged(const QString &text) UpdateGlobalHook(); } -void CaptureDialog::on_vulkanLayerWarn_clicked() +void CaptureDialog::vulkanLayerWarn_mouseClick() { QString caption = tr("Configure Vulkan layer settings in registry?"); diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.h b/qrenderdoc/Windows/Dialogs/CaptureDialog.h index ceab6df1a..4378e68d3 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.h +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.h @@ -90,10 +90,11 @@ private slots: void on_toggleGlobal_clicked(); - void on_vulkanLayerWarn_clicked(); - void on_CaptureCallstacks_toggled(bool checked); + // manual slots + void vulkanLayerWarn_mouseClick(); + private: Ui::CaptureDialog *ui; ICaptureContext &m_Ctx; diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.ui b/qrenderdoc/Windows/Dialogs/CaptureDialog.ui index 06b1177af..a03a72b92 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.ui +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.ui @@ -7,7 +7,7 @@ 0 0 578 - 939 + 943 @@ -294,50 +294,24 @@ - - - - 0 - 0 - - - - - 0 - 40 - - + PointingHandCursor - - QToolButton { -background-color: #ffffdc; -border: 1px solid black; -} -QToolButton:hover { -background-color: #ddddbe; -} + + QFrame::Box - Warning: Vulkan capture is not configured. -Click here to set up Vulkan capture. + <html><head/><body><table><tr><td valign="middle"><img src=":/information.png"/></td><td><p>Warning: Vulkan capture is not configured.<br/>Click here to set up Vulkan capture.</p></td></tr></table></body></html> - - - :/information.png:/information.png + + Qt::RichText - - QToolButton::DelayedPopup + + :/information.png - - Qt::ToolButtonTextBesideIcon - - - true - - - Qt::NoArrow + + 3 @@ -774,6 +748,13 @@ Click here to set up Vulkan capture. + + + RDLabel + QLabel +
Widgets/Extended/RDLabel.h
+
+