Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/screen/area.c
| Show First 20 Lines • Show All 793 Lines • ▼ Show 20 Lines | if (str) { | ||||
| BLI_strncpy(workspace->status_text, str, UI_MAX_DRAW_STR); | BLI_strncpy(workspace->status_text, str, UI_MAX_DRAW_STR); | ||||
| } | } | ||||
| else if (workspace->status_text) { | else if (workspace->status_text) { | ||||
| MEM_freeN(workspace->status_text); | MEM_freeN(workspace->status_text); | ||||
| workspace->status_text = NULL; | workspace->status_text = NULL; | ||||
| } | } | ||||
| /* Redraw status bar. */ | /* Redraw status bar. */ | ||||
| for (ScrArea *area = win->global_areas.areabase.first; area; area = area->next) { | LISTBASE_FOREACH (ScrArea *, area, &win->global_areas.areabase) { | ||||
| if (area->spacetype == SPACE_STATUSBAR) { | if (area->spacetype == SPACE_STATUSBAR) { | ||||
| ED_area_tag_redraw(area); | ED_area_tag_redraw(area); | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* ************************************************************ */ | /* ************************************************************ */ | ||||
| ▲ Show 20 Lines • Show All 1,008 Lines • ▼ Show 20 Lines | void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *area) | ||||
| /* region rect sizes */ | /* region rect sizes */ | ||||
| rect = area->totrct; | rect = area->totrct; | ||||
| overlap_rect = rect; | overlap_rect = rect; | ||||
| region_rect_recursive(area, area->regionbase.first, &rect, &overlap_rect, 0); | region_rect_recursive(area, area->regionbase.first, &rect, &overlap_rect, 0); | ||||
| /* Dynamically sized regions may have changed region sizes, so we have to force azone update. */ | /* Dynamically sized regions may have changed region sizes, so we have to force azone update. */ | ||||
| area_azone_initialize(win, screen, area); | area_azone_initialize(win, screen, area); | ||||
| for (ARegion *region = area->regionbase.first; region; region = region->next) { | LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { | ||||
| region_subwindow(region); | region_subwindow(region); | ||||
| /* region size may have changed, init does necessary adjustments */ | /* region size may have changed, init does necessary adjustments */ | ||||
| if (region->type->init) { | if (region->type->init) { | ||||
| region->type->init(wm, region); | region->type->init(wm, region); | ||||
| } | } | ||||
| /* Some AZones use View2D data which is only updated in region init, so call that first! */ | /* Some AZones use View2D data which is only updated in region init, so call that first! */ | ||||
| ▲ Show 20 Lines • Show All 335 Lines • ▼ Show 20 Lines | else { | ||||
| BLI_listbase_clear(&sl->regionbase); | BLI_listbase_clear(&sl->regionbase); | ||||
| } | } | ||||
| } | } | ||||
| /* Sync header alignment. */ | /* Sync header alignment. */ | ||||
| if (sync_header_alignment) { | if (sync_header_alignment) { | ||||
| /* Spaces with footer. */ | /* Spaces with footer. */ | ||||
| if (st->spaceid == SPACE_TEXT) { | if (st->spaceid == SPACE_TEXT) { | ||||
| for (ARegion *region = area->regionbase.first; region; region = region->next) { | LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { | ||||
| if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) { | if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) { | ||||
| region->alignment = header_alignment; | region->alignment = header_alignment; | ||||
| } | } | ||||
| if (region->regiontype == RGN_TYPE_FOOTER) { | if (region->regiontype == RGN_TYPE_FOOTER) { | ||||
| int footer_alignment = (header_alignment == RGN_ALIGN_BOTTOM) ? RGN_ALIGN_TOP : | int footer_alignment = (header_alignment == RGN_ALIGN_BOTTOM) ? RGN_ALIGN_TOP : | ||||
| RGN_ALIGN_BOTTOM; | RGN_ALIGN_BOTTOM; | ||||
| region->alignment = footer_alignment; | region->alignment = footer_alignment; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| for (ARegion *region = area->regionbase.first; region; region = region->next) { | LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { | ||||
| if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) { | if (ELEM(region->regiontype, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER)) { | ||||
| region->alignment = header_alignment; | region->alignment = header_alignment; | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 234 Lines • ▼ Show 20 Lines | if (yco != 0) { | ||||
| h = -yco + 2 * style->panelspace; | h = -yco + 2 * style->panelspace; | ||||
| } | } | ||||
| } | } | ||||
| UI_block_end(C, block); | UI_block_end(C, block); | ||||
| /* Draw child panels. */ | /* Draw child panels. */ | ||||
| if (open) { | if (open) { | ||||
| for (LinkData *link = pt->children.first; link; link = link->next) { | LISTBASE_FOREACH (LinkData *, link, &pt->children) { | ||||
| PanelType *child_pt = link->data; | PanelType *child_pt = link->data; | ||||
| Panel *child_panel = UI_panel_find_by_type(&panel->children, child_pt); | Panel *child_panel = UI_panel_find_by_type(&panel->children, child_pt); | ||||
| if (child_pt->draw && (!child_pt->poll || child_pt->poll(C, child_pt))) { | if (child_pt->draw && (!child_pt->poll || child_pt->poll(C, child_pt))) { | ||||
| ed_panel_draw(C, area, region, &panel->children, child_pt, child_panel, w, em, vertical); | ed_panel_draw(C, area, region, &panel->children, child_pt, child_panel, w, em, vertical); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 399 Lines • ▼ Show 20 Lines | |||||
| int ED_area_headersize(void) | int ED_area_headersize(void) | ||||
| { | { | ||||
| /* Accommodate widget and padding. */ | /* Accommodate widget and padding. */ | ||||
| return U.widget_unit + (int)(UI_DPI_FAC * HEADER_PADDING_Y); | return U.widget_unit + (int)(UI_DPI_FAC * HEADER_PADDING_Y); | ||||
| } | } | ||||
| int ED_area_header_alignment_or_fallback(const ScrArea *area, int fallback) | int ED_area_header_alignment_or_fallback(const ScrArea *area, int fallback) | ||||
| { | { | ||||
| for (ARegion *region = area->regionbase.first; region; region = region->next) { | LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { | ||||
| if (region->regiontype == RGN_TYPE_HEADER) { | if (region->regiontype == RGN_TYPE_HEADER) { | ||||
| return region->alignment; | return region->alignment; | ||||
| } | } | ||||
| } | } | ||||
| return fallback; | return fallback; | ||||
| } | } | ||||
| int ED_area_header_alignment(const ScrArea *area) | int ED_area_header_alignment(const ScrArea *area) | ||||
| { | { | ||||
| return ED_area_header_alignment_or_fallback( | return ED_area_header_alignment_or_fallback( | ||||
| area, (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP); | area, (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP); | ||||
| } | } | ||||
| int ED_area_footersize(void) | int ED_area_footersize(void) | ||||
| { | { | ||||
| return ED_area_headersize(); | return ED_area_headersize(); | ||||
| } | } | ||||
| int ED_area_footer_alignment_or_fallback(const ScrArea *area, int fallback) | int ED_area_footer_alignment_or_fallback(const ScrArea *area, int fallback) | ||||
| { | { | ||||
| for (ARegion *region = area->regionbase.first; region; region = region->next) { | LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { | ||||
| if (region->regiontype == RGN_TYPE_FOOTER) { | if (region->regiontype == RGN_TYPE_FOOTER) { | ||||
| return region->alignment; | return region->alignment; | ||||
| } | } | ||||
| } | } | ||||
| return fallback; | return fallback; | ||||
| } | } | ||||
| int ED_area_footer_alignment(const ScrArea *area) | int ED_area_footer_alignment(const ScrArea *area) | ||||
| ▲ Show 20 Lines • Show All 742 Lines • Show Last 20 Lines | |||||