summaryrefslogtreecommitdiff
path: root/noncore/graphics/opie-eye/lib
Side-by-side diff
Diffstat (limited to 'noncore/graphics/opie-eye/lib') (more/less context) (ignore 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
@@ -2,2 +2,4 @@
+#include <opie2/odebug.h>
+
#include <qimage.h>
@@ -88,2 +90,3 @@ OImageZoomer::~OImageZoomer() {
void OImageZoomer::init() {
+ m_mevent = false;
setFrameStyle( Panel | Sunken );
@@ -197,4 +200,15 @@ 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);
}
@@ -207,2 +221,3 @@ void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) {
if ( m_mouseX != -1 && m_mouseY != -1 ) {
+ m_mevent = false;
int diffx = ( mx - m_mouseX ) * m_imgSize.width() / width();
@@ -210,3 +225,2 @@ void OImageZoomer::mouseMoveEvent( QMouseEvent* ev ) {
emit zoomAreaRel( diffx, diffy );
- emit zoomArea(m_visPt.x()+diffx, m_visPt.y()+diffy );
}
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
@@ -73,3 +73,4 @@ 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
@@ -100,3 +101,3 @@ protected:
*/
- void mousePressEvent( QMouseEvent* ev );
+ virtual void mousePressEvent( QMouseEvent* ev );
/**
@@ -105,3 +106,8 @@ protected:
*/
- void mouseMoveEvent( QMouseEvent* ev );
+ virtual void mouseMoveEvent( QMouseEvent* ev );
+ /**
+ * make sure to call these if you reimplement
+ * @internal
+ */
+ virtual void mouseReleaseEvent( QMouseEvent* ev );
@@ -116,2 +122,3 @@ private:
int m_mouseX, m_mouseY;
+ bool m_mevent;
};