Fixed group inside group scrolling

This commit deactivates scrolling for each parent group and window
of a panel to only allow exactly *one* active scrollbar.
This commit is contained in:
vurtun 2016-06-16 20:25:26 +02:00
parent 30087c41ef
commit 848d35ea68

View File

@ -15931,14 +15931,21 @@ nk_panel_end(struct nk_context *ctx)
/* only allow scrolling if parent window is active */
scroll_has_scrolling = 0;
if (!(root->flags & NK_WINDOW_ROM)) {
/* and groups is being hovered and inside clip rect*/
if (!(root->flags & NK_WINDOW_ROM) && layout->has_scrolling) {
/* and group is being hovered and inside clip rect*/
if (nk_input_is_mouse_hovering_rect(in, layout->bounds) &&
NK_INTERSECT(layout->bounds.x, layout->bounds.y, layout->bounds.w, layout->bounds.h,
root->clip.x, root->clip.y, root->clip.w, root->clip.h))
{
scroll_has_scrolling = nk_true;
/* deactivate all parent scrolling */
struct nk_panel *root;
root = window->layout;
while (root->parent) {
root->has_scrolling = nk_false;
root = root->parent;
}
root->has_scrolling = nk_false;
scroll_has_scrolling = nk_true;
}
}
} else if (!(window->flags & NK_WINDOW_SUB)) {
@ -15963,7 +15970,7 @@ nk_panel_end(struct nk_context *ctx)
if (layout->flags & NK_WINDOW_SUB) {
bounds.h = scrollbar_size.x;
bounds.y = (layout->flags & NK_WINDOW_BORDER) ?
layout->bounds.y + 1 : layout->bounds.y;
layout->bounds.y + layout->border : layout->bounds.y;
bounds.y += layout->header_h + layout->menu.h + layout->height;
bounds.w = layout->width;
} else if (layout->flags & NK_WINDOW_DYNAMIC) {