diff options
Diffstat (limited to 'src/tk/window.c')
-rw-r--r-- | src/tk/window.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/tk/window.c b/src/tk/window.c index 64040bf..651a37b 100644 --- a/src/tk/window.c +++ b/src/tk/window.c @@ -49,6 +49,7 @@ mftk_window_new(struct mftk_widget *root) mftk_widget_index(w->root, w); w->focus = w->first; w->focus->focused = SDL_TRUE; + mftk_widget_focus(w->focus); return w; } @@ -80,12 +81,14 @@ mftk_window_event(struct mftk_window *w, SDL_Event *e) switch (e->key.keysym.sym) { case SDLK_TAB: w->focus->focused = SDL_FALSE; + mftk_widget_defocus(w->focus); if (e->key.keysym.mod & KMOD_SHIFT) { w->focus = w->focus->prev; } else { w->focus = w->focus->next; } w->focus->focused = SDL_TRUE; + mftk_widget_focus(w->focus); break; default: return mftk_widget_key_event(w->focus, @@ -105,8 +108,10 @@ void mftk_window_focus(struct mftk_window *win, struct mftk_widget *wid) { win->focus->focused = SDL_FALSE; + mftk_widget_defocus(win->focus); win->focus = wid; win->focus->focused = SDL_TRUE; + mftk_widget_focus(win->focus); } int |