-rw-r--r-- | noncore/graphics/opie-eye/lib/oimagezoomer.cpp | 18 | ||||
-rw-r--r-- | noncore/graphics/opie-eye/lib/oimagezoomer.h | 13 |
2 files changed, 26 insertions, 5 deletions
diff --git a/noncore/graphics/opie-eye/lib/oimagezoomer.cpp b/noncore/graphics/opie-eye/lib/oimagezoomer.cpp index 00b93e2..d1eec67 100644 --- a/noncore/graphics/opie-eye/lib/oimagezoomer.cpp +++ b/noncore/graphics/opie-eye/lib/oimagezoomer.cpp @@ -1,5 +1,7 @@ #include "oimagezoomer.h" +#include <opie2/odebug.h> + #include <qimage.h> #include <qpixmap.h> #include <qpainter.h> @@ -86,6 +88,7 @@ OImageZoomer::~OImageZoomer() { } void OImageZoomer::init() { + m_mevent = false; setFrameStyle( Panel | Sunken ); } @@ -195,8 +198,19 @@ void OImageZoomer::drawContents( QPainter* p ) { p->drawRect( x, y, w, h ); } -void OImageZoomer::mousePressEvent( QMouseEvent* ) { +void OImageZoomer::mousePressEvent( QMouseEvent*ev) { m_mouseX = m_mouseY = -1; + m_mevent = true; +} + +void OImageZoomer::mouseReleaseEvent( QMouseEvent*ev) { + if (!m_mevent) return; + int mx, my; + mx = ev->x(); + my = ev->y(); + int diffx = (mx) * m_imgSize.width() / width(); + int diffy = (my) * m_imgSize.height() / height(); + emit zoomArea(diffx,diffy); } void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) { @@ -205,10 +219,10 @@ void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) { my = ev->y(); if ( m_mouseX != -1 && m_mouseY != -1 ) { + m_mevent = false; int diffx = ( mx - m_mouseX ) * m_imgSize.width() / width(); int diffy = ( my - m_mouseY ) * m_imgSize.height() / height(); emit zoomAreaRel( diffx, diffy ); - emit zoomArea(m_visPt.x()+diffx, m_visPt.y()+diffy ); } m_mouseX = mx; m_mouseY = my; diff --git a/noncore/graphics/opie-eye/lib/oimagezoomer.h b/noncore/graphics/opie-eye/lib/oimagezoomer.h index 2516c61..0b356c9 100644 --- a/noncore/graphics/opie-eye/lib/oimagezoomer.h +++ b/noncore/graphics/opie-eye/lib/oimagezoomer.h @@ -71,7 +71,8 @@ signals: /** * Here you get absolute coordinates. - * This slot will be emitted from within the mouseMoveEvent of this widget. + * This slot will be emitted from within the mouseReleaseEvent of this widget. + * if no mouse move where done. * So you may not delete this widget * * @param x The absolute X Coordinate to scroll to. @@ -98,12 +99,17 @@ protected: * make sure to call these if you reimplememt * @internal */ - void mousePressEvent( QMouseEvent* ev ); + virtual void mousePressEvent( QMouseEvent* ev ); /** * make sure to call these if you reimplement * @internal */ - void mouseMoveEvent( QMouseEvent* ev ); + virtual void mouseMoveEvent( QMouseEvent* ev ); + /** + * make sure to call these if you reimplement + * @internal + */ + virtual void mouseReleaseEvent( QMouseEvent* ev ); private: /** @@ -114,6 +120,7 @@ private: QSize m_imgSize, m_visSize; QPoint m_visPt; int m_mouseX, m_mouseY; + bool m_mevent; }; /** |