Fix focusing null view

This commit is contained in:
Versus Void 2017-10-05 21:30:31 +00:00
parent d74a6d254f
commit 1b1346462e

View file

@ -128,6 +128,12 @@ static void set_view_focus(struct roots_input *input,
if (input->active_view == view) { if (input->active_view == view) {
return; return;
} }
input->active_view = view;
input->mode = ROOTS_CURSOR_PASSTHROUGH;
if (!view) {
return;
}
size_t index = 0; size_t index = 0;
for (size_t i = 0; i < desktop->views->length; ++i) { for (size_t i = 0; i < desktop->views->length; ++i) {
struct roots_view *_view = desktop->views->items[i]; struct roots_view *_view = desktop->views->items[i];
@ -136,8 +142,6 @@ static void set_view_focus(struct roots_input *input,
index = i; index = i;
} }
} }
input->active_view = view;
input->mode = ROOTS_CURSOR_PASSTHROUGH;
// TODO: list_swap // TODO: list_swap
list_del(desktop->views, index); list_del(desktop->views, index);
list_add(desktop->views, view); list_add(desktop->views, view);
@ -219,8 +223,7 @@ static void do_cursor_button_press(struct roots_input *input,
int i; int i;
switch (state) { switch (state) {
case WLR_BUTTON_RELEASED: case WLR_BUTTON_RELEASED:
input->active_view = NULL; set_view_focus(input, desktop, NULL);
input->mode = ROOTS_CURSOR_PASSTHROUGH;
break; break;
case WLR_BUTTON_PRESSED: case WLR_BUTTON_PRESSED:
i = input->input_events_idx; i = input->input_events_idx;