summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/lib
Side-by-side diff
Diffstat (limited to 'noncore/graphics/opie-eye/lib') (more/less context) (show whitespace changes)
-rw-r--r--noncore/graphics/opie-eye/lib/oimagezoomer.cpp18
-rw-r--r--noncore/graphics/opie-eye/lib/oimagezoomer.h13
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,4 +1,6 @@
#include "oimagezoomer.h"
+#include <opie2/odebug.h>
+
#include <qimage.h>
#include <qpixmap.h>
@@ -87,4 +89,5 @@ OImageZoomer::~OImageZoomer() {
void OImageZoomer::init() {
+ m_mevent = false;
setFrameStyle( Panel | Sunken );
}
@@ -196,6 +199,17 @@ void OImageZoomer::drawContents( QPainter* p ) {
}
-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);
}
@@ -206,8 +220,8 @@ void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) {
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;
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
@@ -72,5 +72,6 @@ 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
*
@@ -99,10 +100,15 @@ protected:
* @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:
@@ -115,4 +121,5 @@ private:
QPoint m_visPt;
int m_mouseX, m_mouseY;
+ bool m_mevent;
};