[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Junior job - zooming tool doesn't zoom out
From: Hans Bakker <hansmbakker () gmail ! com>
Date: 2009-09-05 10:04:42
Message-ID: 761dc76c0909050304g2c3e43fagc5ed2c633407674c () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Hi all,
I made a beginning of the closing of bug 171976 <http://bugs.kde.org/171976>.
The patch is attached, but there are still some things left to do that I'd
like some help with:
- when pressing Ctrl, sometimes the cursor is only updated when moving
the mouse. Right now at the key*Event methods, event->ignore(); is called.
- the birdEyeLabel is not used / updated yet.
Kind regards,
Hans Bakker
[Attachment #5 (text/html)]
Hi all,<div><br></div><div>I made a beginning of the closing of <a \
href="http://bugs.kde.org/171976" target="_blank">bug 171976</a>. The patch is \
attached, but there are still some things left to do that I'd like some help \
with:</div>
<div><ul><li>when pressing Ctrl, sometimes the cursor is only updated when moving the \
mouse. Right now at the key*Event methods, event->ignore(); is called.</li><li>the \
birdEyeLabel is not used / updated yet.</li></ul>
<div>Kind regards,</div><div><br></div><div>Hans Bakker</div></div>
--0015175885840a03070472d1c0e0--
["bug171976_juniorjob.patch" (application/octet-stream)]
Index: libs/flake/tools/KoZoomStrategy.h
===================================================================
--- libs/flake/tools/KoZoomStrategy.h (revision 1019773)
+++ libs/flake/tools/KoZoomStrategy.h (working copy)
@@ -41,6 +41,7 @@
KoZoomStrategy(KoZoomTool *tool, KoCanvasController *controller, const QPointF &clicked);
void forceZoomOut();
+ void forceZoomIn();
/// Execute the zoom
virtual void finishInteraction(Qt::KeyboardModifiers modifiers);
Index: libs/flake/tools/KoZoomTool.cpp
===================================================================
--- libs/flake/tools/KoZoomTool.cpp (revision 1019773)
+++ libs/flake/tools/KoZoomTool.cpp (working copy)
@@ -31,7 +31,7 @@
KoZoomTool::KoZoomTool(KoCanvasBase *canvas)
: KoInteractionTool(canvas),
- m_temporary(false)
+ m_temporary(false), m_zoomInMode(true)
{
QPixmap inPixmap, outPixmap;
inPixmap.load(KStandardDirs::locate("data", "koffice/icons/zoom_in_cursor.png"));
@@ -56,9 +56,19 @@
void KoZoomTool::mouseMoveEvent(KoPointerEvent *event)
{
if (event->modifiers() & Qt::ControlModifier)
- useCursor(m_outCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_outCursor);
+ else
+ useCursor(m_inCursor);
+ }
else
- useCursor(m_inCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_inCursor);
+ else
+ useCursor(m_outCursor);
+ }
if (m_currentStrategy)
m_currentStrategy->handleMouseMove(event->point, event->modifiers());
@@ -69,9 +79,19 @@
event->ignore();
if (event->modifiers() & Qt::ControlModifier)
- useCursor(m_outCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_outCursor);
+ else
+ useCursor(m_inCursor);
+ }
else
- useCursor(m_inCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_inCursor);
+ else
+ useCursor(m_outCursor);
+ }
}
void KoZoomTool::keyReleaseEvent(QKeyEvent *event)
@@ -79,16 +99,29 @@
event->ignore();
if (event->modifiers() & Qt::ControlModifier)
- useCursor(m_outCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_outCursor);
+ else
+ useCursor(m_inCursor);
+ }
else
- useCursor(m_inCursor);
+ {
+ if(m_zoomInMode)
+ useCursor(m_inCursor);
+ else
+ useCursor(m_outCursor);
+ }
KoInteractionTool::keyReleaseEvent(event);
}
void KoZoomTool::activate(bool temporary)
{
m_temporary = temporary;
- useCursor(m_inCursor, true);
+ if(m_zoomInMode)
+ useCursor(m_inCursor, true);
+ else
+ useCursor(m_outCursor, true);
}
void KoZoomTool::mouseDoubleClickEvent(KoPointerEvent *event)
@@ -100,13 +133,33 @@
{
KoZoomStrategy *zs = new KoZoomStrategy(this, m_controller, event->point);
if (event->button() == Qt::RightButton)
- zs->forceZoomOut();
+ {
+ if(m_zoomInMode)
+ zs->forceZoomOut();
+ else
+ zs->forceZoomIn();
+ }
+ else
+ {
+ if(m_zoomInMode)
+ zs->forceZoomIn();
+ else
+ zs->forceZoomOut();
+ }
return zs;
}
QWidget* KoZoomTool::createOptionWidget()
{
- //return new KoZoomToolWidget(this);
- return 0;
+ return new KoZoomToolWidget(this);
+ //return 0;
}
+void KoZoomTool::setZoomInMode(bool zoomIn)
+{
+ m_zoomInMode = zoomIn;
+ if(m_zoomInMode)
+ useCursor(m_inCursor);
+ else
+ useCursor(m_outCursor);
+}
Index: libs/flake/tools/KoZoomStrategy.cpp
===================================================================
--- libs/flake/tools/KoZoomStrategy.cpp (revision 1019773)
+++ libs/flake/tools/KoZoomStrategy.cpp (working copy)
@@ -36,12 +36,39 @@
{
QRect pixelRect = m_controller->canvas()->viewConverter()->documentToView(selectRect()).toRect();
pixelRect.translate(m_controller->canvas()->documentOrigin());
+ /*
if (m_forceZoomOut || modifiers & Qt::ControlModifier)
m_controller->zoomOut(pixelRect.center());
else if (pixelRect.width() > 5 && pixelRect.height() > 5)
m_controller->zoomTo(pixelRect);
else
m_controller->zoomIn(pixelRect.center());
+ */
+
+ if (modifiers & Qt::ControlModifier)
+ {
+ if(m_forceZoomOut)
+ {
+ if (pixelRect.width() > 5 && pixelRect.height() > 5)
+ m_controller->zoomTo(pixelRect);
+ else
+ m_controller->zoomIn(pixelRect.center());
+ }
+ else
+ m_controller->zoomOut(pixelRect.center());
+ }
+ else
+ {
+ if(m_forceZoomOut)
+ m_controller->zoomOut(pixelRect.center());
+ else
+ {
+ if (pixelRect.width() > 5 && pixelRect.height() > 5)
+ m_controller->zoomTo(pixelRect);
+ else
+ m_controller->zoomIn(pixelRect.center());
+ }
+ }
}
void KoZoomStrategy::cancelInteraction()
@@ -54,3 +81,8 @@
{
m_forceZoomOut = true;
}
+
+void KoZoomStrategy::forceZoomIn()
+{
+ m_forceZoomOut = false;
+}
Index: libs/flake/tools/KoZoomToolWidget.cpp
===================================================================
--- libs/flake/tools/KoZoomToolWidget.cpp (revision 1019773)
+++ libs/flake/tools/KoZoomToolWidget.cpp (working copy)
@@ -21,6 +21,7 @@
#include <QPainter>
#include <QMouseEvent>
#include <kicon.h>
+#include "KoZoomTool.h"
KoZoomToolWidget::KoZoomToolWidget(KoZoomTool* tool, QWidget* parent)
: QWidget(parent), m_tool(tool)
@@ -31,6 +32,9 @@
zoomInButton->setIcon(KIcon("zoom-in"));
zoomOutButton->setIcon(KIcon("zoom-out"));
+
+ connect(zoomInButton, SIGNAL(toggled(bool)), this, SLOT(changeZoomMode()));
+ connect(zoomOutButton, SIGNAL(toggled(bool)), this, SLOT(changeZoomMode()));
}
KoZoomToolWidget::~KoZoomToolWidget()
@@ -78,6 +82,7 @@
void KoZoomToolWidget::changeZoomMode()
{
+ m_tool->setZoomInMode(zoomInButton->isChecked());
}
#include <KoZoomToolWidget.moc>
Index: libs/flake/tools/KoZoomTool.h
===================================================================
--- libs/flake/tools/KoZoomTool.h (revision 1019773)
+++ libs/flake/tools/KoZoomTool.h (working copy)
@@ -57,6 +57,8 @@
m_controller = controller;
}
+ void setZoomInMode(bool zoomIn);
+
protected:
QWidget* createOptionWidget();
@@ -67,6 +69,7 @@
QCursor m_inCursor;
QCursor m_outCursor;
bool m_temporary;
+ bool m_zoomInMode;
};
#endif
_______________________________________________
koffice-devel mailing list
koffice-devel@kde.org
https://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic