diff --git a/kpdf/kpdf_pagewidget.cc b/kpdf/kpdf_pagewidget.cc index 688abe5df75d9ea454fbfa0a883ec938903de916..a6877d319ec510a3e796313526d8144c944514cc 100644 --- a/kpdf/kpdf_pagewidget.cc +++ b/kpdf/kpdf_pagewidget.cc @@ -46,7 +46,12 @@ namespace KPDF { if (m_doc == 0) return; - if ( e->button() & RightButton ) + if ( e->button() & LeftButton ) + { + m_dragGrabPos = e -> globalPos(); + setCursor( sizeAllCursor ); + } + else if ( e->button() & RightButton ) { emit rightClick(); } @@ -60,11 +65,18 @@ namespace KPDF if (m_doc == 0) return; - LinkAction* action = m_doc->findLink(e->x()/m_ppp, e->y()/m_ppp); - if (action == m_pressedAction) - emit linkClicked(action); + if ( e -> button() & LeftButton ) + { + setCursor( arrowCursor ); + } + else + { + LinkAction* action = m_doc->findLink(e->x()/m_ppp, e->y()/m_ppp); + if (action == m_pressedAction) + emit linkClicked(action); - m_pressedAction = 0; + m_pressedAction = 0; + } } void @@ -72,9 +84,17 @@ namespace KPDF { if (m_doc == 0) return; - - LinkAction* action = m_doc->findLink(e->x()/m_ppp, e->y()/m_ppp); - setCursor(action != 0 ? Qt::PointingHandCursor : Qt::ArrowCursor); + if ( e->state() & LeftButton ) + { + QPoint delta = m_dragGrabPos - e->globalPos(); + scrollBy( delta.x(), delta.y() ); + m_dragGrabPos = e->globalPos(); + } + else + { + LinkAction* action = m_doc->findLink(e->x()/m_ppp, e->y()/m_ppp); + setCursor(action != 0 ? Qt::PointingHandCursor : Qt::ArrowCursor); + } } void PageWidget::drawContents ( QPainter *p, int clipx, int clipy, int clipw, int cliph ) diff --git a/kpdf/kpdf_pagewidget.h b/kpdf/kpdf_pagewidget.h index 131ce93c2c0663adddc42ebc5922edc4df9d25b6..5376a00de85c848b14a71f9a5a35ce818ccedaa1 100644 --- a/kpdf/kpdf_pagewidget.h +++ b/kpdf/kpdf_pagewidget.h @@ -79,7 +79,7 @@ namespace KPDF ZoomMode m_zoomMode; int m_currentPage; - + QPoint m_dragGrabPos; LinkAction* m_pressedAction; }; }