Cleanup: Use LISTBASE_FOREACH in interface_panel.c

This commit is contained in:
Hans Goudey 2020-06-15 21:38:16 -04:00
parent 4db63b6486
commit a76542cbbf
1 changed files with 23 additions and 39 deletions

View File

@ -592,9 +592,8 @@ static void panels_collapse_all(const bContext *C,
const char *category = has_category_tabs ? UI_panel_category_active_get(region, false) : NULL;
const int flag = ((panel_aligned(area, region) == BUT_HORIZONTAL) ? PNL_CLOSEDX : PNL_CLOSEDY);
const PanelType *from_pt = from_panel->type;
Panel *panel;
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
PanelType *pt = panel->type;
/* close panels with headers in the same context */
@ -621,10 +620,9 @@ static bool panel_type_context_poll(PanelType *panel_type, const char *context)
Panel *UI_panel_find_by_type(ListBase *lb, PanelType *pt)
{
Panel *panel;
const char *idname = pt->idname;
for (panel = lb->first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, lb) {
if (STREQLEN(panel->panelname, idname, sizeof(panel->panelname))) {
return panel;
}
@ -643,7 +641,7 @@ Panel *UI_panel_begin(ScrArea *area,
Panel *panel,
bool *r_open)
{
Panel *panel_last, *panel_next;
Panel *panel_last;
const char *drawname = CTX_IFACE_(pt->translation_context, pt->label);
const char *idname = pt->idname;
const bool newpanel = (panel == NULL);
@ -704,7 +702,7 @@ Panel *UI_panel_begin(ScrArea *area,
if (newpanel) {
panel->sortorder = (panel_last) ? panel_last->sortorder + 1 : 0;
for (panel_next = lb->first; panel_next; panel_next = panel_next->next) {
LISTBASE_FOREACH (Panel *, panel_next, lb) {
if (panel_next != panel && panel_next->sortorder >= panel->sortorder) {
panel_next->sortorder++;
}
@ -1399,14 +1397,13 @@ static void align_sub_panels(Panel *panel)
/* returns 1 when it did something */
static bool uiAlignPanelStep(ScrArea *area, ARegion *region, const float fac, const bool drag)
{
Panel *panel;
PanelSort *ps, *panelsort, *psnext;
int a, tot = 0;
bool done;
int align = panel_aligned(area, region);
/* count active, not tabbed panels */
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
if (panel->runtime_flag & PNL_ACTIVE) {
tot++;
}
@ -1417,7 +1414,7 @@ static bool uiAlignPanelStep(ScrArea *area, ARegion *region, const float fac, co
}
/* extra; change close direction? */
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
if (panel->runtime_flag & PNL_ACTIVE) {
if ((panel->flag & PNL_CLOSEDX) && (align == BUT_VERTICAL)) {
panel->flag ^= PNL_CLOSED;
@ -1432,7 +1429,7 @@ static bool uiAlignPanelStep(ScrArea *area, ARegion *region, const float fac, co
panelsort = MEM_callocN(tot * sizeof(PanelSort), "panelsort");
ps = panelsort;
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
if (panel->runtime_flag & PNL_ACTIVE) {
ps->panel = MEM_dupallocN(panel);
ps->orig = panel;
@ -1512,7 +1509,7 @@ static bool uiAlignPanelStep(ScrArea *area, ARegion *region, const float fac, co
}
/* set locations for tabbed and sub panels */
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
if (panel->runtime_flag & PNL_ACTIVE) {
if (panel->children.first) {
align_sub_panels(panel);
@ -1531,13 +1528,12 @@ static bool uiAlignPanelStep(ScrArea *area, ARegion *region, const float fac, co
static void ui_panels_size(ScrArea *area, ARegion *region, int *r_x, int *r_y)
{
Panel *panel;
int align = panel_aligned(area, region);
int sizex = 0;
int sizey = 0;
/* compute size taken up by panels, for setting in view2d */
for (panel = region->panels.first; panel; panel = panel->next) {
LISTBASE_FOREACH (Panel *, panel, &region->panels) {
if (panel->runtime_flag & PNL_ACTIVE) {
int pa_sizex, pa_sizey;
@ -1623,11 +1619,10 @@ void UI_panels_begin(const bContext *UNUSED(C), ARegion *region)
void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
{
ScrArea *area = CTX_wm_area(C);
uiBlock *block;
Panel *panel, *panel_first;
/* offset contents */
for (block = region->uiblocks.first; block; block = block->next) {
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
if (block->active && block->panel) {
ui_offset_panel_block(block);
}
@ -1645,7 +1640,7 @@ void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
/* tag first panel */
panel_first = NULL;
for (block = region->uiblocks.first; block; block = block->next) {
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
if (block->active && block->panel) {
if (!panel_first || block->panel->sortorder < panel_first->sortorder) {
panel_first = block->panel;
@ -1663,8 +1658,6 @@ void UI_panels_end(const bContext *C, ARegion *region, int *r_x, int *r_y)
void UI_panels_draw(const bContext *C, ARegion *region)
{
uiBlock *block;
if (region->alignment != RGN_ALIGN_FLOAT) {
UI_ThemeClearColor(TH_BACK);
}
@ -1672,13 +1665,13 @@ void UI_panels_draw(const bContext *C, ARegion *region)
/* Draw panels, selected on top. Also in reverse order, because
* UI blocks are added in reverse order and we need child panels
* to draw on top. */
for (block = region->uiblocks.last; block; block = block->prev) {
LISTBASE_FOREACH_BACKWARD (uiBlock *, block, &region->uiblocks) {
if (block->active && block->panel && !(block->panel->flag & PNL_SELECT)) {
UI_block_draw(C, block);
}
}
for (block = region->uiblocks.last; block; block = block->prev) {
LISTBASE_FOREACH_BACKWARD (uiBlock *, block, &region->uiblocks) {
if (block->active && block->panel && (block->panel->flag & PNL_SELECT)) {
UI_block_draw(C, block);
}
@ -1687,15 +1680,12 @@ void UI_panels_draw(const bContext *C, ARegion *region)
void UI_panels_scale(ARegion *region, float new_width)
{
uiBlock *block;
uiBut *but;
for (block = region->uiblocks.first; block; block = block->next) {
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
if (block->panel) {
float fac = new_width / (float)block->panel->sizex;
block->panel->sizex = new_width;
for (but = block->buttons.first; but; but = but->next) {
LISTBASE_FOREACH (uiBut *, but, &block->buttons) {
but->rect.xmin *= fac;
but->rect.xmax *= fac;
}
@ -1851,10 +1841,9 @@ static void ui_panel_drag_collapse(bContext *C,
{
ScrArea *area = CTX_wm_area(C);
ARegion *region = CTX_wm_region(C);
uiBlock *block;
Panel *panel;
for (block = region->uiblocks.first; block; block = block->next) {
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
float xy_a_block[2] = {UNPACK2(dragcol_data->xy_init)};
float xy_b_block[2] = {UNPACK2(xy_dst)};
rctf rect = block->rect;
@ -2166,9 +2155,7 @@ void UI_panel_category_active_set_default(ARegion *region, const char *idname)
const char *UI_panel_category_active_get(ARegion *region, bool set_fallback)
{
PanelCategoryStack *pc_act;
for (pc_act = region->panels_category_active.first; pc_act; pc_act = pc_act->next) {
LISTBASE_FOREACH (PanelCategoryStack *, pc_act, &region->panels_category_active) {
if (UI_panel_category_find(region, pc_act->idname)) {
return pc_act->idname;
}
@ -2187,9 +2174,7 @@ const char *UI_panel_category_active_get(ARegion *region, bool set_fallback)
PanelCategoryDyn *UI_panel_category_find_mouse_over_ex(ARegion *region, const int x, const int y)
{
PanelCategoryDyn *ptd;
for (ptd = region->panels_category.first; ptd; ptd = ptd->next) {
LISTBASE_FOREACH (PanelCategoryDyn *, ptd, &region->panels_category) {
if (BLI_rcti_isect_pt(&ptd->rect, x, y)) {
return ptd;
}
@ -2357,7 +2342,6 @@ void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
const uiFontStyle *fstyle = &style->widget;
const int fontid = fstyle->uifont_id;
short fstyle_points = fstyle->points;
PanelCategoryDyn *pc_dyn;
const float aspect = ((uiBlock *)region->uiblocks.first)->aspect;
const float zoom = 1.0f / aspect;
const int px = max_ii(1, round_fl_to_int(U.pixelsize));
@ -2434,7 +2418,8 @@ void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
}
/* calculate tab rect's and check if we need to scale down */
for (pc_dyn = region->panels_category.first; pc_dyn; pc_dyn = pc_dyn->next) {
LISTBASE_FOREACH (PanelCategoryDyn *, pc_dyn, &region->panels_category) {
rcti *rct = &pc_dyn->rect;
const char *category_id = pc_dyn->idname;
const char *category_id_draw = IFACE_(category_id);
@ -2452,7 +2437,7 @@ void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
if (y_ofs > BLI_rcti_size_y(&v2d->mask)) {
scaletabs = (float)BLI_rcti_size_y(&v2d->mask) / (float)y_ofs;
for (pc_dyn = region->panels_category.first; pc_dyn; pc_dyn = pc_dyn->next) {
LISTBASE_FOREACH (PanelCategoryDyn *, pc_dyn, &region->panels_category) {
rcti *rct = &pc_dyn->rect;
rct->ymin = ((rct->ymin - v2d->mask.ymax) * scaletabs) + v2d->mask.ymax;
rct->ymax = ((rct->ymax - v2d->mask.ymax) * scaletabs) + v2d->mask.ymax;
@ -2497,7 +2482,7 @@ void UI_panel_category_draw_all(ARegion *region, const char *category_id_active)
const int divider_xmax = is_left ? (v2d->mask.xmin + category_tabs_width) :
(v2d->mask.xmax - (category_tabs_width + px)) + px;
for (pc_dyn = region->panels_category.first; pc_dyn; pc_dyn = pc_dyn->next) {
LISTBASE_FOREACH (PanelCategoryDyn *, pc_dyn, &region->panels_category) {
const rcti *rct = &pc_dyn->rect;
const char *category_id = pc_dyn->idname;
const char *category_id_draw = IFACE_(category_id);
@ -2693,7 +2678,6 @@ int ui_handler_panel_region(bContext *C,
ARegion *region,
const uiBut *active_but)
{
uiBlock *block;
Panel *panel;
int retval, mx, my;
bool has_category_tabs = UI_panel_category_is_visible(region);
@ -2732,7 +2716,7 @@ int ui_handler_panel_region(bContext *C,
return retval;
}
for (block = region->uiblocks.last; block; block = block->prev) {
LISTBASE_FOREACH (uiBlock *, block, &region->uiblocks) {
uiPanelMouseState mouse_state;
mx = event->x;