Commit a2189937 authored by Antti Savolainen's avatar Antti Savolainen Committed by Nicolas Fella
Browse files

kfilewidget: jump to the closest sliderstep value

When the difference between the sliderstep and the icon size is more than 1px, use lower_bound to find the closest step

(cherry picked from commit b65ad9c7)
parent 2b7a2ffc
Loading
Loading
Loading
Loading
Loading
+12 −4
Changes for src/filewidgets/kfilewidget.cpp: 12 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -2274,11 +2274,19 @@ void KFileWidgetPrivate::activateUrlNavigator()

void KFileWidgetPrivate::slotDirOpIconSizeChanged(int size)
{
    if (size == m_stdIconSizes[m_iconSizeSlider->value()])
    int sliderValue = m_iconSizeSlider->value();
    short currentIconSliderSize = m_stdIconSizes[sliderValue];
    Q_ASSERT(sliderValue < m_stdIconSizes.size());
    if (size == currentIconSliderSize)
        return;
    m_iconSizeSlider->triggerAction(size < m_stdIconSizes[m_iconSizeSlider->value()] ? QSlider::SliderSingleStepSub : QSlider::SliderSingleStepAdd);
    m_zoomOutAction->setDisabled(m_iconSizeSlider->value() == m_iconSizeSlider->minimum());
    m_zoomInAction->setDisabled(m_iconSizeSlider->value() == m_iconSizeSlider->maximum());
    if (std::abs(size - currentIconSliderSize) != 1) {
        auto it = std::lower_bound(m_stdIconSizes.cbegin(), m_stdIconSizes.cend(), size);
        m_iconSizeSlider->setValue(it - m_stdIconSizes.cbegin());
        return;
    }
    m_iconSizeSlider->triggerAction(size < currentIconSliderSize ? QSlider::SliderSingleStepSub : QSlider::SliderSingleStepAdd);
    m_zoomOutAction->setDisabled(sliderValue == m_iconSizeSlider->minimum());
    m_zoomInAction->setDisabled(sliderValue == m_iconSizeSlider->maximum());
}

void KFileWidgetPrivate::changeIconsSize(ZoomState zoom)