From 85691c519e029b5ed112e06f517d8e900dde19e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Tue, 9 Apr 2013 18:50:19 +0200 Subject: [PATCH] fix flickable bounds when filtering REVIEW: 105027 BUG: 318096 FIXED-IN: 4.10.3 --- kcmkwin/kwindecoration/kwindecoration.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kcmkwin/kwindecoration/kwindecoration.cpp b/kcmkwin/kwindecoration/kwindecoration.cpp index a42384573d..591a913c40 100644 --- a/kcmkwin/kwindecoration/kwindecoration.cpp +++ b/kcmkwin/kwindecoration/kwindecoration.cpp @@ -157,6 +157,8 @@ void KWinDecorationModule::init() connect(m_ui->configureButtonsButton, SIGNAL(clicked(bool)), this, SLOT(slotConfigureButtons())); connect(m_ui->ghnsButton, SIGNAL(clicked(bool)), SLOT(slotGHNSClicked())); connect(m_ui->searchEdit, SIGNAL(textChanged(QString)), m_proxyModel, SLOT(setFilterFixedString(QString))); + connect(m_ui->searchEdit, SIGNAL(textChanged(QString)), m_ui->decorationList->rootObject(), SLOT(returnToBounds()), Qt::QueuedConnection); + connect(m_ui->searchEdit, SIGNAL(textChanged(QString)), SLOT(updateScrollbarRange()), Qt::QueuedConnection); connect(m_ui->configureDecorationButton, SIGNAL(clicked(bool)), SLOT(slotConfigureDecoration())); m_ui->decorationList->disconnect(m_ui->decorationList->verticalScrollBar()); @@ -527,8 +529,10 @@ void KWinDecorationModule::updatePreviewWidth() void KWinDecorationModule::updateScrollbarRange() { m_ui->decorationList->verticalScrollBar()->blockSignals(true); + const bool atMinimum = m_ui->decorationList->rootObject()->property("atYBeginning").toBool(); const int h = m_ui->decorationList->rootObject()->property("contentHeight").toInt(); - m_ui->decorationList->verticalScrollBar()->setRange(0, h - m_ui->decorationList->height()); + const int y = atMinimum ? m_ui->decorationList->rootObject()->property("contentY").toInt() : 0; + m_ui->decorationList->verticalScrollBar()->setRange(y, y + h - m_ui->decorationList->height()); m_ui->decorationList->verticalScrollBar()->setPageStep(m_ui->decorationList->verticalScrollBar()->maximum()/m_model->rowCount()); m_ui->decorationList->verticalScrollBar()->blockSignals(false); }