# HG changeset patch # User Michael Pavone # Date 1555950970 25200 # Node ID 7a9e6fd94d616cca04a79ef722f9dd1acde460ae # Parent 5d10b8494b0203464dbf53df7a1df7bb6d40f323 Fix mouse selection of files. Keep keynav from selecting a non-existent widget diff -r 5d10b8494b02 -r 7a9e6fd94d61 nuklear_ui/nuklear.h --- a/nuklear_ui/nuklear.h Fri Apr 19 21:09:46 2019 -0700 +++ b/nuklear_ui/nuklear.h Mon Apr 22 09:36:10 2019 -0700 @@ -14618,7 +14618,7 @@ NK_INTERN int nk_do_selectable(nk_flags *state, struct nk_command_buffer *out, struct nk_rect bounds, const char *str, int len, nk_flags align, int *value, - const struct nk_style_selectable *style, const struct nk_input *in, + const struct nk_style_selectable *style, struct nk_input *in, const struct nk_user_font *font) { int old_value; @@ -14647,6 +14647,8 @@ if (!old_value && !(*value) && in && in->selected_widget == in->widget_counter) { *value = 1; + } else if (!old_value && *value && in) { + in->selected_widget = in->widget_counter; } /* draw selectable */ @@ -20292,14 +20294,17 @@ c.h = (float)((int)c.h); if (is_keynav) { ctx->input.widget_counter++; - if (ctx->input.selected_widget == ctx->input.widget_counter) { - if (ctx->input.keyboard.keys[NK_KEY_UP].clicked && ctx->input.keyboard.keys[NK_KEY_UP].down && ctx->input.selected_widget) { - ctx->input.selected_widget--; - ctx->input.keyboard.keys[NK_KEY_UP].clicked = 0; - } else if (ctx->input.keyboard.keys[NK_KEY_DOWN].clicked && ctx->input.keyboard.keys[NK_KEY_DOWN].down) { - ctx->input.keyboard.keys[NK_KEY_DOWN].clicked = 0; - ctx->input.selected_widget++; - } + if ( + ctx->input.selected_widget == (ctx->input.widget_counter + 1) && + ctx->input.keyboard.keys[NK_KEY_UP].clicked && ctx->input.keyboard.keys[NK_KEY_UP].down + ) { + ctx->input.selected_widget--; + } else if ( + ctx->input.selected_widget == (ctx->input.widget_counter - 1) && + ctx->input.keyboard.keys[NK_KEY_DOWN].clicked && ctx->input.keyboard.keys[NK_KEY_DOWN].down + ) { + ctx->input.keyboard.keys[NK_KEY_DOWN].clicked = 0; + ctx->input.selected_widget++; } } @@ -20895,7 +20900,7 @@ { struct nk_window *win; struct nk_panel *layout; - const struct nk_input *in; + struct nk_input *in; const struct nk_style *style; enum nk_widget_layout_states state;