From a0f75bd5d9072a967460bce6ec16a5d8e88ee86a Mon Sep 17 00:00:00 2001 From: ands Date: Fri, 10 Jun 2016 19:33:47 +0200 Subject: [PATCH 1/2] don't depend on the title in nk_tree_push_hashed if a hash is already specified to allow editing it from inside the node/tab. --- nuklear.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/nuklear.h b/nuklear.h index d2194ef..4939c67 100644 --- a/nuklear.h +++ b/nuklear.h @@ -16621,7 +16621,7 @@ nk_tree_base(struct nk_context *ctx, enum nk_tree_type type, nk_flags ws = 0; int title_len = 0; - nk_hash title_hash = 0; + nk_hash tree_hash = 0; nk_uint *state = 0; enum nk_widget_layout_states widget_state; @@ -16657,12 +16657,15 @@ nk_tree_base(struct nk_context *ctx, enum nk_tree_type type, } else text.background = style->window.background; /* find, create or set tab persistent state (open/closed) */ - title_len = (int)nk_strlen(title); - title_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)type); - if (hash) title_hash += nk_murmur_hash(hash, len, (nk_hash)line); - state = nk_find_value(win, title_hash); + if (hash) { + tree_hash = nk_murmur_hash(hash, len, (nk_hash)line); + } else { + title_len = (int)nk_strlen(title); + tree_hash = nk_murmur_hash(title, (int)title_len, (nk_hash)line); + } + state = nk_find_value(win, tree_hash); if (!state) { - state = nk_add_value(ctx, win, title_hash, 0); + state = nk_add_value(ctx, win, tree_hash, 0); *state = initial_state; } From 6e41aa6ce3ac6cd17a1940d150ea5c1c2e883729 Mon Sep 17 00:00:00 2001 From: ands Date: Fri, 10 Jun 2016 21:34:21 +0200 Subject: [PATCH 2/2] Fixed a NULL dereferencing bug. --- nuklear.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nuklear.h b/nuklear.h index 4939c67..4a40c51 100644 --- a/nuklear.h +++ b/nuklear.h @@ -15226,7 +15226,7 @@ nk_window_is_any_hovered(struct nk_context *ctx) return 1; } /* check if window popup is being hovered */ - if (iter->popup.active && nk_input_is_mouse_hovering_rect(&ctx->input, iter->popup.win->bounds)) + if (iter->popup.active && iter->popup.win && nk_input_is_mouse_hovering_rect(&ctx->input, iter->popup.win->bounds)) return 1; iter = iter->next; }