X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsystemkeyboardinput.cpp;h=f5657bd7d49066d4c854279bfbfde8705ddbd55a;hb=78e05360d70542d343401241ff9ddddfed18c5cd;hp=cedddd1817d170b21c6f34eb3ac7fec07d3951ec;hpb=4b52d16bc895f9d969383d7a7d6a3558c1972cc5;p=libs%2Fgltk.git diff --git a/source/systemkeyboardinput.cpp b/source/systemkeyboardinput.cpp index cedddd1..f5657bd 100644 --- a/source/systemkeyboardinput.cpp +++ b/source/systemkeyboardinput.cpp @@ -16,21 +16,42 @@ SystemKeyboardInput::SystemKeyboardInput(Root &r, Input::Keyboard &k): bool SystemKeyboardInput::key_press(unsigned key) { + if(!root.is_visible()) + return false; + // TODO modifiers if(root.key_press(key, 0)) return true; + switch(key) + { + case Input::KEY_LEFT: return root.navigate(NAV_LEFT); + case Input::KEY_RIGHT: return root.navigate(NAV_RIGHT); + case Input::KEY_UP: return root.navigate(NAV_UP); + case Input::KEY_DOWN: return root.navigate(NAV_DOWN); + case Input::KEY_TAB: return root.navigate(NAV_NEXT); + case Input::KEY_SPACE: return root.navigate(NAV_ACTIVATE); + case Input::KEY_ENTER: return root.navigate(NAV_ACCEPT); + case Input::KEY_ESC: return root.navigate(NAV_CANCEL); + } + return false; } bool SystemKeyboardInput::key_release(unsigned key) { - return root.key_release(key, 0); + if(root.is_visible()) + return root.key_release(key, 0); + else + return false; } bool SystemKeyboardInput::character(StringCodec::unichar ch) { - return root.character(ch); + if(root.is_visible()) + return root.character(ch); + else + return false; } } // namespace GLtk