Skip to content

Commit

Permalink
Do the same for all other kind of panel
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuukk authored Sep 29, 2024
1 parent efc5411 commit a4590db
Showing 1 changed file with 79 additions and 0 deletions.
79 changes: 79 additions & 0 deletions src/nuklear_panel.c
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan
nk_unify(&clip, &win->buffer.clip, layout->clip.x, layout->clip.y,
layout->clip.x + layout->clip.w, layout->clip.y + layout->clip.h);


if (panel_type == NK_PANEL_WINDOW)
{
/* extend clipping area to allow borders to be properly drawn */
Expand All @@ -333,6 +334,84 @@ nk_panel_begin(struct nk_context *ctx, const char *title, enum nk_panel_type pan
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_GROUP)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.group_padding.x;
clip.y -= style->window.group_padding.y;
clip.w += style->window.group_padding.x*2;
clip.h += style->window.group_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_POPUP)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.popup_padding.x;
clip.y -= style->window.popup_padding.y;
clip.w += style->window.popup_padding.x*2;
clip.h += style->window.popup_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_CONTEXTUAL)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.contextual_padding.x;
clip.y -= style->window.contextual_padding.y;
clip.w += style->window.contextual_padding.x*2;
clip.h += style->window.contextual_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_MENU)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.menu_padding.x;
clip.y -= style->window.menu_padding.y;
clip.w += style->window.menu_padding.x*2;
clip.h += style->window.menu_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_TOOLTIP)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.tooltip_padding.x;
clip.y -= style->window.tooltip_padding.y;
clip.w += style->window.tooltip_padding.x*2;
clip.h += style->window.tooltip_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}
else if (panel_type == NK_PANEL_COMBO)
{
/* extend clipping area to allow borders to be properly drawn */
clip.x -= style->window.combo_padding.x;
clip.y -= style->window.combo_padding.y;
clip.w += style->window.combo_padding.x*2;
clip.h += style->window.combo_padding.y*2;
/* ensure clipping area doesn't exceed window bounds */
clip.x = NK_MAX(clip.x, win->bounds.x);
clip.w = NK_MIN(clip.w, win->bounds.w);
clip.y = NK_MAX(clip.y, win->bounds.y+layout->header_height);
clip.h = NK_MIN(clip.h, win->bounds.h-layout->header_height);
}

nk_push_scissor(out, clip);
layout->clip = clip;}
Expand Down

0 comments on commit a4590db

Please sign in to comment.