From 3bdd6311463dbb3683f25fc0b1235cb98d6c8813 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 10 Oct 2016 13:58:15 +0200 Subject: [PATCH] Fix scrollbar positions not updating properly --- qrenderdoc/Windows/TextureViewer.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index 64aa60287..33dcbfe1d 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -2082,11 +2082,15 @@ void TextureViewer::setScrollPosition(const QPoint &pos) if(ScrollUpdateScrollbars) { + ScrollUpdateScrollbars = false; + if(ui->renderHScroll->isEnabled()) - ui->renderHScroll->setValue(qBound(0, int(m_TexDisplay.offx), ui->renderHScroll->maximum())); + ui->renderHScroll->setValue(qBound(0, -int(m_TexDisplay.offx), ui->renderHScroll->maximum())); if(ui->renderVScroll->isEnabled()) - ui->renderVScroll->setValue(qBound(0, int(m_TexDisplay.offy), ui->renderVScroll->maximum())); + ui->renderVScroll->setValue(qBound(0, -int(m_TexDisplay.offy), ui->renderVScroll->maximum())); + + ScrollUpdateScrollbars = true; } INVOKE_MEMFN(RT_UpdateAndDisplay); @@ -2114,6 +2118,7 @@ void TextureViewer::UI_CalcScrollbars() ui->renderHScroll->setMaximum( (int)ceil(size.width() * m_TexDisplay.scale - (float)ui->render->width())); ui->renderHScroll->setPageStep(qMax(1, ui->renderHScroll->maximum() / 6)); + ui->renderHScroll->setSingleStep(int(m_TexDisplay.scale)); } if((int)floor(size.height() * m_TexDisplay.scale) <= ui->render->height()) @@ -2127,11 +2132,15 @@ void TextureViewer::UI_CalcScrollbars() ui->renderVScroll->setMaximum( (int)ceil(size.height() * m_TexDisplay.scale - (float)ui->render->height())); ui->renderVScroll->setPageStep(qMax(1, ui->renderVScroll->maximum() / 6)); + ui->renderVScroll->setSingleStep(int(m_TexDisplay.scale)); } } void TextureViewer::on_renderHScroll_valueChanged(int position) { + if(!ScrollUpdateScrollbars) + return; + ScrollUpdateScrollbars = false; { @@ -2144,6 +2153,9 @@ void TextureViewer::on_renderHScroll_valueChanged(int position) void TextureViewer::on_renderVScroll_valueChanged(int position) { + if(!ScrollUpdateScrollbars) + return; + ScrollUpdateScrollbars = false; {