summaryrefslogtreecommitdiffstats
path: root/src/tk/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tk/window.c')
-rw-r--r--src/tk/window.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/tk/window.c b/src/tk/window.c
index b87e7c0..61c017f 100644
--- a/src/tk/window.c
+++ b/src/tk/window.c
@@ -48,6 +48,7 @@ mftk_window_new(struct mftk_widget *root)
mftk_widget_layout(w->root);
mftk_widget_index(w->root, w);
w->focus = w->first;
+ w->focus->focused = SDL_TRUE;
return w;
}
@@ -74,7 +75,29 @@ mftk_window_index(struct mftk_window *win, struct mftk_widget *wid)
int
mftk_window_event(struct mftk_window *w, SDL_Event *e)
{
- return mftk_widget_event(w->root, e, 0, 0);
+ switch (e->type) {
+ case SDL_KEYDOWN:
+ switch (e->key.keysym.sym) {
+ case SDLK_TAB:
+ w->focus->focused = SDL_FALSE;
+ if (e->key.keysym.mod & KMOD_SHIFT) {
+ w->focus = w->focus->prev;
+ } else {
+ w->focus = w->focus->next;
+ }
+ w->focus->focused = SDL_TRUE;
+ break;
+ default:
+ break;
+ }
+ break;
+ case SDL_MOUSEBUTTONUP:
+ return mftk_widget_event(w->root, e, 0, 0);
+ default:
+ break;
+ }
+
+ return 0;
}
int