void kpTool::wheelEvent (QWheelEvent *e) { #if DEBUG_KP_TOOL kdDebug () << "kpTool::wheelEvent() state=" << e->state () << " hasBegunDraw=" << hasBegunDraw () << " delta=" << e->delta () << endl; #endif e->ignore (); // If CTRL not pressed, bye. if ((e->state () & Qt::ControlButton) == 0) return; // If drawing, bye; don't care if a shape in progress though. if (hasBegunDraw ()) return; // Zoom in/out depending on wheel direction. // Moved wheel away from user? if (e->delta () > 0) { m_mainWindow->zoomIn (true/*center under cursor*/); e->accept (); } // Moved wheel towards user? else if (e->delta () < 0) { #if 1 m_mainWindow->zoomOut (true/*center under cursor - make zoom in/out stay under same doc pos*/); #else m_mainWindow->zoomOut (false/*don't center under cursor - as is confusing behaviour when zooming out*/); #endif e->accept (); } }
void kpTool::keyReleaseEvent (QKeyEvent *e) { #if DEBUG_KP_TOOL && 0 kdDebug () << "kpTool::keyReleaseEvent() e->key=" << e->key () << endl; #endif e->ignore (); switch (e->key ()) { case 0: case Qt::Key_unknown: #if DEBUG_KP_TOOL kdDebug () << "kpTool::keyReleaseEvent() picked up unknown key!" << endl; #endif // HACK: around Qt bug: if you hold a modifier before you start the // program and then release it over the view, // Qt reports it as the release of an unknown key // --- fall thru and update all modifiers --- case Qt::Key_Alt: case Qt::Key_Shift: case Qt::Key_Control: keyUpdateModifierState (e); e->accept (); break; case Qt::Key_Escape: if (hasBegunDraw ()) { cancelShapeInternal (); e->accept (); } break; case Qt::Key_Enter: case Qt::Key_Return: case Qt::Key_Insert: case Qt::Key_Clear/*Numpad 5 Key*/: { kpView *view = viewUnderCursor (); if (view) { QMouseEvent me (QEvent::MouseButtonRelease, view->mapFromGlobal (QCursor::pos ()), Qt::LeftButton, Qt::LeftButton); mouseReleaseEvent (&me); e->accept (); } break; }} }
void kpTool::endDrawInternal (const QPoint &thisPoint, const QRect &normalizedRect, bool wantEndShape) { #if DEBUG_KP_TOOL && 1 kdDebug () << "kpTool::endDrawInternal() wantEndShape=" << wantEndShape << endl; #endif if (wantEndShape && !hasBegunShape ()) return; else if (!wantEndShape && !hasBegunDraw ()) return; m_beganDraw = false; if (wantEndShape) { #if DEBUG_KP_TOOL && 0 kdDebug () << "\tcalling endShape()" << endl; #endif endShape (thisPoint, normalizedRect); } else { #if DEBUG_KP_TOOL && 0 kdDebug () << "\tcalling endDraw()" << endl; #endif endDraw (thisPoint, normalizedRect); } m_viewUnderStartPoint = 0; emit endedDraw (m_currentPoint); if (viewUnderCursor ()) hover (m_currentPoint); else { m_currentPoint = KP_INVALID_POINT; m_currentViewPoint = KP_INVALID_POINT; hover (m_currentPoint); } if (returnToPreviousToolAfterEndDraw ()) { kpToolToolBar *tb = mainWindow ()->toolToolBar (); // (don't end up with no tool selected) if (tb->previousTool ()) { // endInternal() will be called by kpMainWindow (thanks to this line) // so we won't have the view anymore tb->selectPreviousTool (); } } }
// protected virtual [base kpAbstractSelectionTool] void kpToolText::keyPressEvent (QKeyEvent *e) { #if DEBUG_KP_TOOL_TEXT qCDebug(kpLogTools) << "kpToolText::keyPressEvent(e->text='" << e->text () << "')"; #endif e->ignore (); if (hasBegunDraw ()) { #if DEBUG_KP_TOOL_TEXT qCDebug(kpLogTools) << "\talready began draw with mouse - passing on event to kpTool"; #endif kpAbstractSelectionTool::keyPressEvent (e); return; } kpTextSelection * const textSel = document ()->textSelection (); if (!textSel) { #if DEBUG_KP_TOOL_TEXT qCDebug(kpLogTools) << "\tno text sel - passing on event to kpTool"; #endif //if (hasBegunShape ()) // endShape (currentPoint (), normalizedRect ()); kpAbstractSelectionTool::keyPressEvent (e); return; } // (All handle.+()'s require this info) const QList <QString> textLines = textSel->textLines (); const int cursorRow = viewManager ()->textCursorRow (); const int cursorCol = viewManager ()->textCursorCol (); // TODO: KTextEdit::keyPressEvent() uses KStandardShortcut instead of hardcoding; same fix for kpTool? switch (e->key ()) { case Qt::Key_Up: handleUpKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Down: handleDownKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Left: handleLeftKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Right: handleRightKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Home: handleHomeKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_End: handleEndKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Backspace: handleBackspaceKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Delete: handleDeleteKeyPress (e, textLines, cursorRow, cursorCol); break; case Qt::Key_Enter: case Qt::Key_Return: handleEnterKeyPress (e, textLines, cursorRow, cursorCol); break; default: handleTextTyped (e, textLines, cursorRow, cursorCol); break; } if (!e->isAccepted ()) { #if DEBUG_KP_TOOL_TEXT qCDebug(kpLogTools) << "\tkey processing did not accept (text was '" << e->text () << "') - passing on event to kpAbstractSelectionTool" << endl; #endif //if (hasBegunShape ()) // endShape (currentPoint (), normalizedRect ()); kpAbstractSelectionTool::keyPressEvent (e); return; } }