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/data/CMakeLists.txt | 2 +- src/data/autoscroll.png | Bin 0 -> 1414 bytes src/webview.cpp | 32 +++++++++++++++++++++----------- src/webview.h | 3 ++- 4 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 src/data/autoscroll.png (limited to 'src') diff --git a/src/data/CMakeLists.txt b/src/data/CMakeLists.txt index 6aef22ec..555f5abf 100644 --- a/src/data/CMakeLists.txt +++ b/src/data/CMakeLists.txt @@ -3,7 +3,7 @@ INSTALL( FILES bg2.png bg.png tile.gif category.png button.png busywidget.gif loading.mng - webkit-icon.png + webkit-icon.png autoscroll.png DESTINATION ${DATA_INSTALL_DIR}/rekonq/pics ) diff --git a/src/data/autoscroll.png b/src/data/autoscroll.png new file mode 100644 index 00000000..70e34c61 Binary files /dev/null and b/src/data/autoscroll.png differ 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()); diff --git a/src/webview.h b/src/webview.h index 1fec1ae4..b3db5ce0 100644 --- a/src/webview.h +++ b/src/webview.h @@ -61,12 +61,12 @@ protected: void contextMenuEvent(QContextMenuEvent *event); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); - void enterEvent(QEvent *event); void keyPressEvent(QKeyEvent *event); void wheelEvent(QWheelEvent *event); void dropEvent(QDropEvent *event); void dragEnterEvent(QDragEnterEvent *event); void dragMoveEvent(QDragMoveEvent * event); + void paintEvent(QPaintEvent *event); private Q_SLOTS: void search(); @@ -105,6 +105,7 @@ private: int m_hScrollSpeed; bool m_canEnableAutoScroll; bool m_isAutoScrollEnabled; + QPixmap m_autoScrollIndicator; // Smooth Scroll QTimer *const m_smoothScrollTimer; -- cgit v1.2.1