From b5345a5be80a29616d3433ccbda034de80a47734 Mon Sep 17 00:00:00 2001 From: Felix Rohrbach Date: Mon, 11 Apr 2011 20:03:58 +0200 Subject: firefox-like autoscroll look MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an icon to indicate the origin of an autoscroll action. Patch by Johannes Tröscher, thanks! REVIEW: 101068 --- src/webview.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'src/webview.cpp') diff --git a/src/webview.cpp b/src/webview.cpp index f72041bf..7c02ee06 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -72,6 +72,7 @@ WebView::WebView(QWidget* parent) , m_hScrollSpeed(0) , m_canEnableAutoScroll(true) , m_isAutoScrollEnabled(false) + , m_autoScrollIndicator(QPixmap(KStandardDirs::locate("appdata" , "pics/autoscroll.png"))) , m_smoothScrollTimer(new QTimer(this)) , m_smoothScrolling(false) , m_dy(0) @@ -354,11 +355,11 @@ void WebView::mousePressEvent(QMouseEvent *event) { if (m_isAutoScrollEnabled) { - setCursor(Qt::ArrowCursor); m_vScrollSpeed = 0; m_hScrollSpeed = 0; m_autoScrollTimer->stop(); m_isAutoScrollEnabled = false; + update(); return; } @@ -384,9 +385,9 @@ void WebView::mousePressEvent(QMouseEvent *event) if (!page()->currentFrame()->scrollBarGeometry(Qt::Horizontal).isNull() || !page()->currentFrame()->scrollBarGeometry(Qt::Vertical).isNull()) { - setCursor(KIcon("transform-move").pixmap(32)); m_clickPos = event->pos(); m_isAutoScrollEnabled = true; + update(); } } break; @@ -430,15 +431,6 @@ void WebView::mouseMoveEvent(QMouseEvent *event) } -void WebView::enterEvent(QEvent *event) -{ - if (m_isAutoScrollEnabled) - setCursor(KIcon("transform-move").pixmap(32)); - - KWebView::enterEvent(event); -} - - void WebView::dropEvent(QDropEvent *event) { bool isEditable = page()->frameAt(event->pos())->hitTestContent(event->pos()).isContentEditable(); @@ -475,6 +467,24 @@ void WebView::dropEvent(QDropEvent *event) } } + +void WebView::paintEvent(QPaintEvent* event) +{ + KWebView::paintEvent(event); + + if (m_isAutoScrollEnabled) + { + QPoint centeredPoint = m_clickPos; + centeredPoint.setX(centeredPoint.x() - m_autoScrollIndicator.width() / 2); + centeredPoint.setY(centeredPoint.y() - m_autoScrollIndicator.height() / 2); + + QPainter painter(this); + painter.setOpacity(0.8); + painter.drawPixmap(centeredPoint, m_autoScrollIndicator); + } +} + + void WebView::search() { KAction *a = qobject_cast(sender()); -- cgit v1.2.1