From 3bd6adddc89c08db0cfb13f37ac758c6fe853d20 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 10 May 2017 16:51:24 +0100 Subject: [PATCH] Implement right-click-to-toggle on channels buttons --- qrenderdoc/Windows/TextureViewer.cpp | 45 ++++++++++++++++++++++------ qrenderdoc/Windows/TextureViewer.h | 1 + qrenderdoc/Windows/TextureViewer.ui | 23 ++++++++------ 3 files changed, 51 insertions(+), 18 deletions(-) diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index 42172ef7a..5b23d6b21 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -504,14 +504,6 @@ TextureViewer::TextureViewer(ICaptureContext &ctx, QWidget *parent) QObject::connect(ui->stencilDisplay, &QToolButton::toggled, this, &TextureViewer::channelsWidget_toggled); QObject::connect(ui->flip_y, &QToolButton::toggled, this, &TextureViewer::channelsWidget_toggled); - QObject::connect(ui->channelRed, &QToolButton::toggled, this, - &TextureViewer::channelsWidget_toggled); - QObject::connect(ui->channelGreen, &QToolButton::toggled, this, - &TextureViewer::channelsWidget_toggled); - QObject::connect(ui->channelBlue, &QToolButton::toggled, this, - &TextureViewer::channelsWidget_toggled); - QObject::connect(ui->channelAlpha, &QToolButton::toggled, this, - &TextureViewer::channelsWidget_toggled); QObject::connect(ui->gammaDisplay, &QToolButton::toggled, this, &TextureViewer::channelsWidget_toggled); QObject::connect(ui->channels, OverloadedSlot::of(&QComboBox::currentIndexChanged), this, @@ -532,6 +524,15 @@ TextureViewer::TextureViewer(ICaptureContext &ctx, QWidget *parent) QObject::connect(ui->rangeWhite, &RDLineEdit::leave, this, &TextureViewer::rangePoint_leave); QObject::connect(ui->rangeWhite, &RDLineEdit::keyPress, this, &TextureViewer::rangePoint_keyPress); + for(RDToolButton *butt : {ui->channelRed, ui->channelGreen, ui->channelBlue, ui->channelAlpha}) + { + QObject::connect(butt, &RDToolButton::toggled, this, &TextureViewer::channelsWidget_toggled); + QObject::connect(butt, &RDToolButton::mouseClicked, this, + &TextureViewer::channelsWidget_mouseClicked); + QObject::connect(butt, &RDToolButton::doubleClicked, this, + &TextureViewer::channelsWidget_mouseClicked); + } + QWidget *renderContainer = ui->renderContainer; ui->dockarea->addToolWindow(ui->renderContainer, ToolWindowManager::EmptySpace); @@ -2866,6 +2867,32 @@ void TextureViewer::on_overlay_currentIndexChanged(int index) INVOKE_MEMFN(RT_UpdateAndDisplay); } +void TextureViewer::channelsWidget_mouseClicked(QMouseEvent *event) +{ + RDToolButton *s = qobject_cast(QObject::sender()); + + if(event->button() == Qt::RightButton && s) + { + bool checkd = false; + + RDToolButton *butts[] = {ui->channelRed, ui->channelGreen, ui->channelBlue, ui->channelAlpha}; + + for(RDToolButton *b : butts) + { + if(b->isChecked() && b != s) + checkd = true; + if(!b->isChecked() && b == s) + checkd = true; + } + + ui->channelRed->setChecked(!checkd); + ui->channelGreen->setChecked(!checkd); + ui->channelBlue->setChecked(!checkd); + ui->channelAlpha->setChecked(!checkd); + s->setChecked(checkd); + } +} + void TextureViewer::range_rangeUpdated() { m_TexDisplay.rangemin = ui->rangeHistogram->blackPoint(); @@ -3766,4 +3793,4 @@ void TextureViewer::customShaderModified(const QString &path) QThread::msleep(15); reloadCustomShaders(QString()); -} \ No newline at end of file +} diff --git a/qrenderdoc/Windows/TextureViewer.h b/qrenderdoc/Windows/TextureViewer.h index 1cd57d08c..246ddc20c 100644 --- a/qrenderdoc/Windows/TextureViewer.h +++ b/qrenderdoc/Windows/TextureViewer.h @@ -200,6 +200,7 @@ private slots: void customShaderModified(const QString &path); + void channelsWidget_mouseClicked(QMouseEvent *event); void channelsWidget_toggled(bool checked) { UI_UpdateChannels(); } void channelsWidget_selected(int index) { UI_UpdateChannels(); } private: diff --git a/qrenderdoc/Windows/TextureViewer.ui b/qrenderdoc/Windows/TextureViewer.ui index 17bbd8537..c70b2f48b 100644 --- a/qrenderdoc/Windows/TextureViewer.ui +++ b/qrenderdoc/Windows/TextureViewer.ui @@ -688,7 +688,7 @@ - + Show Red (Right click to toggle solo) @@ -707,7 +707,7 @@ - + Show Green (Right click to toggle solo) @@ -726,7 +726,7 @@ - + Show Blue (Right click to toggle solo) @@ -748,7 +748,7 @@ - + Show Alpha (Right click to toggle solo) @@ -1266,11 +1266,6 @@ See FAQ on "Gamma display of linear data" - - RDLineEdit - QLineEdit -
Widgets/Extended/RDLineEdit.h
-
ToolWindowManager QWidget @@ -1281,6 +1276,11 @@ See FAQ on "Gamma display of linear data" QWidget
Widgets/CustomPaintWidget.h
+ + RDLineEdit + QLineEdit +
Widgets/Extended/RDLineEdit.h
+
ThumbnailStrip QWidget @@ -1298,6 +1298,11 @@ See FAQ on "Gamma display of linear data"
Widgets/RangeHistogram.h
1
+ + RDToolButton + QToolButton +
Widgets/Extended/RDToolButton.h
+