[Uml-devel] kdesdk/umbrello/umbrello
Oliver Kellogg
okellogg at users.sourceforge.net
Wed Sep 22 14:11:23 UTC 2004
CVS commit by okellogg:
Patch by Pekka <pjaaskel_AT_cs.tut.fi> for the cursor keys:
- Set the UMLDoc modified
- Refactor the key handling code
M +37 -27 uml.cpp 1.115
M +5 -0 uml.h 1.39
--- kdesdk/umbrello/umbrello/uml.h #1.38:1.39
@@ -295,4 +295,9 @@ protected:
/**
+ * Helper method for handling cursor key release events (refactoring).
+ */
+ void handleCursorKeyReleaseEvent(QKeyEvent* e);
+
+ /**
* Save general Options like all bar positions and status
* as well as the geometry and the recent file list to
--- kdesdk/umbrello/umbrello/uml.cpp #1.114:1.115
@@ -1415,4 +1415,40 @@ void UMLApp::keyPressEvent(QKeyEvent *e)
}
+void UMLApp::handleCursorKeyReleaseEvent(QKeyEvent* e) {
+ // in case we have selected something in the diagram, move it by one pixel
+ // to the direction pointed by the cursor key
+ if (m_view && m_view->getSelectCount()) {
+ int dx = 0;
+ int dy = 0;
+ switch (e->key()) {
+ case Qt::Key_Left:
+ dx = -1;
+ break;
+ case Qt::Key_Right:
+ dx = 1;
+ break;
+ case Qt::Key_Up:
+ dy = -1;
+ break;
+ case Qt::Key_Down:
+ dy = 1;
+ break;
+ default:
+ e->ignore();
+ return;
+ }
+ m_view->moveSelectedBy(dx, dy);
+
+ // notify about modification only at the first key release of possible sequence of auto repeat key releases,
+ // this reduces the slow down caused by setModified() and makes the cursor moving of widgets smoother
+ if (!e->isAutoRepeat()) {
+ m_doc->setModified();
+ }
+ e->accept();
+ } else {
+ e->ignore();
+ }
+}
+
void UMLApp::keyReleaseEvent(QKeyEvent *e) {
switch(e->key()) {
@@ -1427,34 +1463,8 @@ void UMLApp::keyReleaseEvent(QKeyEvent *
break;
case Qt::Key_Left:
- if (m_view && m_view->getSelectCount()) {
- m_view->moveSelectedBy(-1, 0 );
- e->accept();
- } else {
- e->ignore();
- }
- break;
case Qt::Key_Right:
- if (m_view && m_view->getSelectCount()) {
- m_view->moveSelectedBy( 1, 0 );
- e->accept();
- } else {
- e->ignore();
- }
- break;
case Qt::Key_Up:
- if (m_view && m_view->getSelectCount()) {
- m_view->moveSelectedBy( 0, -1 );
- e->accept();
- } else {
- e->ignore();
- }
- break;
case Qt::Key_Down:
- if (m_view && m_view->getSelectCount()) {
- m_view->moveSelectedBy( 0, 1 );
- e->accept();
- } else {
- e->ignore();
- }
+ handleCursorKeyReleaseEvent(e);
break;
default:
More information about the umbrello-devel
mailing list