diff Applications/Qt/QCairoWidget.cpp @ 327:8716176ff7f0 am-2

added support for arrow keys
author am@osimis.io
date Tue, 16 Oct 2018 15:25:21 +0200
parents 3a4ca166fafa
children 557c8ff1db5c
line wrap: on
line diff
--- a/Applications/Qt/QCairoWidget.cpp	Tue Oct 16 12:57:38 2018 +0200
+++ b/Applications/Qt/QCairoWidget.cpp	Tue Oct 16 15:25:21 2018 +0200
@@ -138,9 +138,27 @@
 
 void QCairoWidget::keyPressEvent(QKeyEvent *event)
 {
+  using namespace OrthancStone;
+
   OrthancStone::KeyboardModifiers stoneModifiers = GetKeyboardModifiers(event);
 
-  context_->GetCentralViewport().KeyPressed(event->text()[0].toLatin1(), stoneModifiers);
+  OrthancStone::KeyboardKeys keyType = OrthancStone::KeyboardKeys_Generic;
+  char keyChar = event->text()[0].toLatin1();
+
+#define CASE_QT_KEY_TO_ORTHANC(qt, o) case qt: keyType = o; break;
+  if (keyChar == 0)
+  {
+    switch (event->key())
+    {
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Up, KeyboardKeys_Up);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Down, KeyboardKeys_Down);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Left, KeyboardKeys_Left);
+      CASE_QT_KEY_TO_ORTHANC(Qt::Key_Right, KeyboardKeys_Right);
+    default:
+      break;
+    }
+  }
+  context_->GetCentralViewport().KeyPressed(keyType, keyChar, stoneModifiers);
 }