diff --git a/src/view/kateviewhelpers.h b/src/view/kateviewhelpers.h --- a/src/view/kateviewhelpers.h +++ b/src/view/kateviewhelpers.h @@ -175,7 +175,6 @@ int m_grooveHeight; QRect m_stdGroveRect; QRect m_mapGroveRect; - QRect m_mapSliderRect; QTimer m_updateTimer; QPoint m_toolTipPos; diff --git a/src/view/kateviewhelpers.cpp b/src/view/kateviewhelpers.cpp --- a/src/view/kateviewhelpers.cpp +++ b/src/view/kateviewhelpers.cpp @@ -192,21 +192,30 @@ // delete text preview hideTextPreview(); - if (m_showMiniMap) { - QMouseEvent eMod(QEvent::MouseButtonPress, - QPoint(6, minimapYToStdY(e->pos().y())), - e->button(), e->buttons(), e->modifiers()); - QScrollBar::mousePressEvent(&eMod); - } else { - QScrollBar::mousePressEvent(e); - } - if (e->button() == Qt::MidButton) { m_middleMouseDown = true; } else if (e->button() == Qt::LeftButton) { m_leftMouseDown = true; } + if (m_showMiniMap) { + // if we show the minimap left-click jumps directly to the selected position + if (m_leftMouseDown) { + int newVal = (e->pos().y()-m_mapGroveRect.top()) / (double)m_mapGroveRect.height() * (double)(maximum()+pageStep()) - pageStep()/2; + newVal = qBound(0, newVal, maximum()); + // Call the regular event handler before setting the new position to enable dragging the slider + QScrollBar::mousePressEvent(e); + setSliderPosition(newVal); + } else { + QMouseEvent eMod(QEvent::MouseButtonPress, + QPoint(6, minimapYToStdY(e->pos().y())), + e->button(), e->buttons(), e->modifiers()); + QScrollBar::mousePressEvent(&eMod); + } + } else { + QScrollBar::mousePressEvent(e); + } + m_toolTipPos = e->globalPos() - QPoint(e->pos().x(), 0); const int fromLine = m_viewInternal->toRealCursor(m_viewInternal->startPos()).line() + 1; const int lastLine = m_viewInternal->toRealCursor(m_viewInternal->endPos()).line() + 1; @@ -657,7 +666,6 @@ QRect visibleRect = docRect; visibleRect.moveTop(visibleStart); visibleRect.setHeight(visibleEnd - visibleStart); - m_mapSliderRect = visibleRect; // calculate colors const QColor backgroundColor = m_view->defaultStyleAttribute(KTextEditor::dsNormal)->background().color();