From 331420a4c787f21864abb836fe2d6bcbc6bda816 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Fri, 06 Aug 2021 08:45:44 -0400 Subject: tk: Implement focus switching --- (limited to 'src/tk/window.c') 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 -- cgit v0.9.1