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.c5
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