From 25f1f961113e5b4b3eb92c56f43968214a62b4d8 Mon Sep 17 00:00:00 2001 From: JackBurton Date: Sun, 1 Apr 2012 22:05:27 +0200 Subject: [PATCH] Move the view when hitting the space key. This shows that GLView in direct mode can't correctly handle the view being moved. --- .../kits/opengl/direct_mode/GLDirectMode.cpp | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/tests/kits/opengl/direct_mode/GLDirectMode.cpp b/src/tests/kits/opengl/direct_mode/GLDirectMode.cpp index e81a54363a..66fa5099d6 100644 --- a/src/tests/kits/opengl/direct_mode/GLDirectMode.cpp +++ b/src/tests/kits/opengl/direct_mode/GLDirectMode.cpp @@ -18,6 +18,7 @@ public: virtual void AttachedToWindow(void); virtual void FrameResized(float newWidth, float newHeight); virtual void MessageReceived(BMessage * msg); + virtual void KeyDown(const char* bytes, int32 numBytes); void Render(void); @@ -132,6 +133,7 @@ void SampleGLView::AttachedToWindow(void) gInit(); gReshape(width, height); UnlockGL(); + MakeFocus(); } @@ -247,7 +249,24 @@ void SampleGLView::MessageReceived(BMessage * msg) } } - +void SampleGLView::KeyDown(const char *bytes, int32 numBytes) +{ + static bool moved = false; + switch (bytes[0]) { + case B_SPACE: + if (moved) { + MoveBy(-30, -30); + moved = false; + } else { + MoveBy(30, 30); + moved = true; + } + break; + default: + BView::KeyDown(bytes, numBytes); + break; + } +} int main(int argc, char *argv[]) {