wl_list_for_each(input, &display->input_list, link) {
if (input->pointer_focus == window)
input->pointer_focus = NULL;
- if (input->focus_widget &&
- input->focus_widget->window == window)
- input->focus_widget = NULL;
if (input->keyboard_focus == window)
input->keyboard_focus = NULL;
}
void
widget_destroy(struct widget *widget)
{
+ struct display *display = widget->window->display;
+ struct input *input;
+
+ wl_list_for_each(input, &display->input_list, link) {
+ if (input->focus_widget == widget)
+ input->focus_widget = NULL;
+ }
+
wl_list_remove(&widget->link);
free(widget);
}