diff --git a/src/board/UBDrawingController.h b/src/board/UBDrawingController.h index 06a1a2c1..e40c156f 100644 --- a/src/board/UBDrawingController.h +++ b/src/board/UBDrawingController.h @@ -66,7 +66,7 @@ class UBDrawingController : public QObject UBAbstractDrawRuler* mActiveRuler; - void setInDestopMode(bool mode){ + void setInDesktopMode(bool mode){ mIsDesktopMode = mode; } diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index 04f504af..582bf1c3 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -371,6 +371,7 @@ void UBApplicationController::showBoard() mIsShowingDesktop = false; UBPlatformUtils::setDesktopMode(false); + UBDrawingController::drawingController()->setInDesktopMode(false); mUninoteController->hideWindow(); @@ -473,7 +474,7 @@ void UBApplicationController::showDesktop(bool dontSwitchFrontProcess) UBPlatformUtils::bringPreviousProcessToFront(); } - UBDrawingController::drawingController()->setInDestopMode(true); + UBDrawingController::drawingController()->setInDesktopMode(true); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); } diff --git a/src/frameworks/UBPlatformUtils_mac.mm b/src/frameworks/UBPlatformUtils_mac.mm index 37d5b1b3..f39fccad 100644 --- a/src/frameworks/UBPlatformUtils_mac.mm +++ b/src/frameworks/UBPlatformUtils_mac.mm @@ -90,10 +90,10 @@ void UBPlatformUtils::setDesktopMode(bool desktop) @try { // temporarily disabled due to bug: when switching to desktop mode (and calling this), // openboard switches right back to the board mode. clicking again on desktop mode works. - /*if (desktop) { + if (desktop) { [NSApp setPresentationOptions:NSApplicationPresentationAutoHideMenuBar | NSApplicationPresentationAutoHideDock]; } - else*/ + else [NSApp setPresentationOptions:NSApplicationPresentationHideMenuBar | NSApplicationPresentationHideDock]; } diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index f83540cf..b54d82c8 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -39,6 +39,7 @@ #include "core/UBApplication.h" #include "UBDocumentNavigator.h" #include "board/UBBoardController.h" +#include "board/UBBoardView.h" #include "adaptors/UBThumbnailAdaptor.h" #include "adaptors/UBSvgSubsetAdaptor.h" #include "document/UBDocumentController.h" @@ -354,6 +355,120 @@ void UBDocumentNavigator::mouseReleaseEvent(QMouseEvent *event) mLongPressTimer.stop(); } + +void UBDocumentNavigator::keyPressEvent(QKeyEvent *event) +{ + return; + UBBoardController* controller = UBApplication::boardController; + // send to the scene anyway + QApplication::sendEvent (scene (), event); + + if (!event->isAccepted ()) + { + switch (event->key ()) + { + case Qt::Key_Up: + case Qt::Key_PageUp: + case Qt::Key_Left: + { + controller->previousScene (); + break; + } + + case Qt::Key_Down: + case Qt::Key_PageDown: + case Qt::Key_Right: + case Qt::Key_Space: + { + controller->nextScene (); + break; + } + + case Qt::Key_Home: + { + controller->firstScene (); + break; + } + case Qt::Key_End: + { + controller->lastScene (); + break; + } + case Qt::Key_Insert: + { + controller->addScene (); + break; + } + case Qt::Key_Control: + case Qt::Key_Shift: + { + controller->controlView()->setMultiselection(true); + }break; + } + + + if (event->modifiers () & Qt::ControlModifier) // keep only ctrl/cmd keys + { + switch (event->key ()) + { + case Qt::Key_Plus: + case Qt::Key_I: + { + controller->zoomIn (); + event->accept (); + break; + } + case Qt::Key_Minus: + case Qt::Key_O: + { + controller->zoomOut (); + event->accept (); + break; + } + case Qt::Key_0: + { + controller->zoomRestore (); + event->accept (); + break; + } + case Qt::Key_Left: + { + controller->handScroll (-100, 0); + event->accept (); + break; + } + case Qt::Key_Right: + { + controller->handScroll (100, 0); + event->accept (); + break; + } + case Qt::Key_Up: + { + controller->handScroll (0, -100); + event->accept (); + break; + } + case Qt::Key_Down: + { + controller->handScroll (0, 100); + event->accept (); + break; + } + default: + { + // NOOP + } + } + } + } + + // if ctrl of shift was pressed combined with other keys - we need to disable multiple selection. + if (event->isAccepted()) + controller->controlView()->setMultiselection(false); +} + + void UBDocumentNavigator::longPressTimeout() { if (QApplication::mouseButtons() != Qt::NoButton) diff --git a/src/gui/UBDocumentNavigator.h b/src/gui/UBDocumentNavigator.h index 1ece8536..9e29a2c9 100644 --- a/src/gui/UBDocumentNavigator.h +++ b/src/gui/UBDocumentNavigator.h @@ -72,6 +72,8 @@ protected: virtual void dragMoveEvent(QDragMoveEvent* event); virtual void dropEvent(QDropEvent* event); + virtual void keyPressEvent(QKeyEvent *event); + signals: void mousePressAndHoldEventRequired(); void moveThumbnailRequired(int from, int to);