Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions
area.c File Reference
#include <stdio.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BLI_blenlib.h"
#include "BLI_linklist_stack.h"
#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_utildefines.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_image.h"
#include "BKE_screen.h"
#include "BKE_workspace.h"
#include "RNA_access.h"
#include "RNA_types.h"
#include "WM_api.h"
#include "WM_message.h"
#include "WM_toolsystem.h"
#include "WM_types.h"
#include "ED_buttons.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
#include "ED_space_api.h"
#include "ED_time_scrub_ui.h"
#include "GPU_framebuffer.h"
#include "GPU_immediate.h"
#include "GPU_immediate_util.h"
#include "GPU_matrix.h"
#include "GPU_state.h"
#include "BLF_api.h"
#include "IMB_imbuf_types.h"
#include "IMB_metadata.h"
#include "UI_interface.h"
#include "UI_interface_icons.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "screen_intern.h"

Go to the source code of this file.

Classes

struct  RegionTypeAlignInfo
 
struct  MetadataPanelDrawContext
 

Macros

#define AZONEPAD_EDGE   (0.1f * U.widget_unit)
 
#define AZONEPAD_ICON   (0.45f * U.widget_unit)
 

Typedefs

typedef struct MetadataPanelDrawContext MetadataPanelDrawContext
 

Enumerations

enum  RegionEmbossSide {
  REGION_EMBOSS_LEFT = (1 << 0) , REGION_EMBOSS_TOP = (1 << 1) , REGION_EMBOSS_BOTTOM = (1 << 2) , REGION_EMBOSS_RIGHT = (1 << 3) ,
  REGION_EMBOSS_ALL
}
 

Functions

static void region_draw_emboss (const ARegion *region, const rcti *scirct, int sides)
 
void ED_region_pixelspace (const ARegion *region)
 
void ED_region_do_listen (wmRegionListenerParams *params)
 
void ED_area_do_listen (wmSpaceTypeListenerParams *params)
 
void ED_area_do_refresh (bContext *C, ScrArea *area)
 
static void area_draw_azone_fullscreen (short UNUSED(x1), short UNUSED(y1), short x2, short y2, float alpha)
 Corner widget use for quitting fullscreen. More...
 
static void area_draw_azone (short UNUSED(x1), short UNUSED(y1), short UNUSED(x2), short UNUSED(y2))
 Corner widgets use for dragging and splitting the view. More...
 
static void draw_azone_arrow (float x1, float y1, float x2, float y2, AZEdge edge)
 Edge widgets to show hidden panels such as the toolbar and headers. More...
 
static void region_draw_azone_tab_arrow (ScrArea *area, ARegion *region, AZone *az)
 
static void area_azone_tag_update (ScrArea *area)
 
static void region_draw_azones (ScrArea *area, ARegion *region)
 
static void region_draw_status_text (ScrArea *area, ARegion *region)
 
void ED_region_do_msg_notify_tag_redraw (bContext *UNUSED(C), wmMsgSubscribeKey *UNUSED(msg_key), wmMsgSubscribeValue *msg_val)
 
void ED_area_do_msg_notify_tag_refresh (bContext *UNUSED(C), wmMsgSubscribeKey *UNUSED(msg_key), wmMsgSubscribeValue *msg_val)
 
void ED_area_do_mgs_subscribe_for_tool_header (const wmRegionMessageSubscribeParams *params)
 
void ED_area_do_mgs_subscribe_for_tool_ui (const wmRegionMessageSubscribeParams *params)
 
static bool area_is_pseudo_minimized (const ScrArea *area)
 
void ED_region_do_layout (bContext *C, ARegion *region)
 
void ED_region_do_draw (bContext *C, ARegion *region)
 
void ED_region_tag_redraw (ARegion *region)
 
void ED_region_tag_redraw_cursor (ARegion *region)
 
void ED_region_tag_redraw_no_rebuild (ARegion *region)
 
void ED_region_tag_refresh_ui (ARegion *region)
 
void ED_region_tag_redraw_editor_overlays (struct ARegion *region)
 
void ED_region_tag_redraw_partial (ARegion *region, const rcti *rct, bool rebuild)
 
void ED_area_tag_redraw (ScrArea *area)
 
void ED_area_tag_redraw_no_rebuild (ScrArea *area)
 
void ED_area_tag_redraw_regiontype (ScrArea *area, int regiontype)
 
void ED_area_tag_refresh (ScrArea *area)
 
const char * ED_area_region_search_filter_get (const ScrArea *area, const ARegion *region)
 
void ED_region_search_filter_update (const ScrArea *area, ARegion *region)
 
void ED_area_status_text (ScrArea *area, const char *str)
 
void ED_workspace_status_text (bContext *C, const char *str)
 
static void area_azone_init (wmWindow *win, const bScreen *screen, ScrArea *area)
 
static void fullscreen_azone_init (ScrArea *area, ARegion *region)
 
static void region_azone_edge (AZone *az, ARegion *region)
 
static void region_azone_tab_plus (ScrArea *area, AZone *az, ARegion *region)
 
static bool region_azone_edge_poll (const ARegion *region, const bool is_fullscreen)
 
static void region_azone_edge_init (ScrArea *area, ARegion *region, AZEdge edge, const bool is_fullscreen)
 
static void region_azone_scrollbar_init (ScrArea *area, ARegion *region, AZScrollDirection direction)
 
static void region_azones_scrollbars_init (ScrArea *area, ARegion *region)
 
static void region_azones_add_edge (ScrArea *area, ARegion *region, const int alignment, const bool is_fullscreen)
 
static void region_azones_add (const bScreen *screen, ScrArea *area, ARegion *region)
 
static int rct_fits (const rcti *rect, const eScreenAxis dir_axis, int size)
 
static void region_overlap_fix (ScrArea *area, ARegion *region)
 
bool ED_region_is_overlap (int spacetype, int regiontype)
 
static void region_rect_recursive (ScrArea *area, ARegion *region, rcti *remainder, rcti *overlap_remainder, int quad)
 
static void area_calc_totrct (ScrArea *area, const rcti *window_rect)
 
static void region_subwindow (ARegion *region)
 
static bool event_in_markers_region (const ARegion *region, const wmEvent *event)
 
static void ed_default_handlers (wmWindowManager *wm, ScrArea *area, ARegion *region, ListBase *handlers, int flag)
 
void ED_area_update_region_sizes (wmWindowManager *wm, wmWindow *win, ScrArea *area)
 
bool ED_area_has_shared_border (struct ScrArea *a, struct ScrArea *b)
 
void ED_area_init (wmWindowManager *wm, wmWindow *win, ScrArea *area)
 
static void area_offscreen_init (ScrArea *area)
 
ScrArea * ED_area_offscreen_create (wmWindow *win, eSpace_Type space_type)
 
static void area_offscreen_exit (wmWindowManager *wm, wmWindow *win, ScrArea *area)
 
void ED_area_offscreen_free (wmWindowManager *wm, wmWindow *win, ScrArea *area)
 
static void region_update_rect (ARegion *region)
 
void ED_region_update_rect (ARegion *region)
 
void ED_region_floating_init (ARegion *region)
 
void ED_region_cursor_set (wmWindow *win, ScrArea *area, ARegion *region)
 
void ED_region_visibility_change_update (bContext *C, ScrArea *area, ARegion *region)
 
void region_toggle_hidden (bContext *C, ARegion *region, const bool do_fade)
 
void ED_region_toggle_hidden (bContext *C, ARegion *region)
 
void ED_area_data_copy (ScrArea *area_dst, ScrArea *area_src, const bool do_free)
 
void ED_area_data_swap (ScrArea *area_dst, ScrArea *area_src)
 
void ED_area_swapspace (bContext *C, ScrArea *sa1, ScrArea *sa2)
 
void ED_area_newspace (bContext *C, ScrArea *area, int type, const bool skip_region_exit)
 
static SpaceLink * area_get_prevspace (ScrArea *area)
 
void ED_area_prevspace (bContext *C, ScrArea *area)
 
int ED_area_header_switchbutton (const bContext *C, uiBlock *block, int yco)
 
static ThemeColorID region_background_color_id (const bContext *C, const ARegion *region)
 
static void region_clear_color (const bContext *C, const ARegion *region, ThemeColorID colorid)
 
BLI_INLINE bool streq_array_any (const char *s, const char *arr[])
 
static void ed_panel_draw (const bContext *C, ARegion *region, ListBase *lb, PanelType *pt, Panel *panel, int w, int em, char *unique_panel_str, const char *search_filter)
 
static bool panel_add_check (const bContext *C, const WorkSpace *workspace, const char *contexts[], const char *category_override, PanelType *panel_type)
 
static bool region_uses_category_tabs (const ScrArea *area, const ARegion *region)
 
static const char * region_panels_collect_categories (ARegion *region, LinkNode *panel_types_stack, bool *use_category_tabs)
 
static int panel_draw_width_from_max_width_get (const ARegion *region, const PanelType *panel_type, const int max_width)
 
void ED_region_panels_layout_ex (const bContext *C, ARegion *region, ListBase *paneltypes, const char *contexts[], const char *category_override)
 
void ED_region_panels_layout (const bContext *C, ARegion *region)
 
void ED_region_panels_draw (const bContext *C, ARegion *region)
 
void ED_region_panels_ex (const bContext *C, ARegion *region, const char *contexts[])
 
void ED_region_panels (const bContext *C, ARegion *region)
 
void ED_region_panels_init (wmWindowManager *wm, ARegion *region)
 
static bool panel_property_search (const bContext *C, ARegion *region, const uiStyle *style, Panel *panel, PanelType *panel_type, const char *search_filter)
 
bool ED_region_property_search (const bContext *C, ARegion *region, ListBase *paneltypes, const char *contexts[], const char *category_override)
 
void ED_region_header_layout (const bContext *C, ARegion *region)
 
void ED_region_header_draw (const bContext *C, ARegion *region)
 
void ED_region_header (const bContext *C, ARegion *region)
 
void ED_region_header_init (ARegion *region)
 
int ED_area_headersize (void)
 
int ED_area_footersize (void)
 
int ED_area_global_size_y (const ScrArea *area)
 
int ED_area_global_min_size_y (const ScrArea *area)
 
int ED_area_global_max_size_y (const ScrArea *area)
 
bool ED_area_is_global (const ScrArea *area)
 
ScrArea * ED_area_find_under_cursor (const bContext *C, int spacetype, const int xy[2])
 
ScrArea * ED_screen_areas_iter_first (const wmWindow *win, const bScreen *screen)
 
ScrArea * ED_screen_areas_iter_next (const bScreen *screen, const ScrArea *area)
 
int ED_region_global_size_y (void)
 
void ED_region_info_draw_multiline (ARegion *region, const char *text_array[], float fill_color[4], const bool full_redraw)
 
void ED_region_info_draw (ARegion *region, const char *text, float fill_color[4], const bool full_redraw)
 
static void metadata_panel_draw_field (const char *field, const char *value, void *ctx_v)
 
void ED_region_image_metadata_panel_draw (ImBuf *ibuf, uiLayout *layout)
 
void ED_region_grid_draw (ARegion *region, float zoomx, float zoomy, float x0, float y0)
 
static void region_visible_rect_calc (ARegion *region, rcti *rect)
 
const rcti * ED_region_visible_rect (ARegion *region)
 
void ED_region_cache_draw_background (ARegion *region)
 
void ED_region_cache_draw_curfra_label (const int framenr, const float x, const float y)
 
void ED_region_cache_draw_cached_segments (ARegion *region, const int num_segments, const int *points, const int sfra, const int efra)
 
void ED_region_message_subscribe (wmRegionMessageSubscribeParams *params)
 
int ED_region_snap_size_test (const ARegion *region)
 
bool ED_region_snap_size_apply (ARegion *region, int snap_flag)
 
Region Alignment Syncing for Space Switching
static void region_align_info_from_area (ScrArea *area, struct RegionTypeAlignInfo *r_align_info)
 
static short region_alignment_from_header_and_tool_header_state (const struct RegionTypeAlignInfo *region_align_info, const short fallback)
 
static void region_align_info_to_area_for_headers (const struct RegionTypeAlignInfo *region_align_info_src, const struct RegionTypeAlignInfo *region_align_info_dst, ARegion *region_by_type[RGN_TYPE_NUM])
 
static void region_align_info_to_area (ScrArea *area, const struct RegionTypeAlignInfo region_align_info_src[RGN_TYPE_NUM])
 

Macro Definition Documentation

◆ AZONEPAD_EDGE

#define AZONEPAD_EDGE   (0.1f * U.widget_unit)

Definition at line 942 of file area.c.

◆ AZONEPAD_ICON

#define AZONEPAD_ICON   (0.45f * U.widget_unit)

Definition at line 943 of file area.c.

Typedef Documentation

◆ MetadataPanelDrawContext

Enumeration Type Documentation

◆ RegionEmbossSide

Enumerator
REGION_EMBOSS_LEFT 
REGION_EMBOSS_TOP 
REGION_EMBOSS_BOTTOM 
REGION_EMBOSS_RIGHT 
REGION_EMBOSS_ALL 

Definition at line 59 of file area.c.

Function Documentation

◆ area_azone_init()

static void area_azone_init ( wmWindow *  win,
const bScreen *  screen,
ScrArea *  area 
)
static

◆ area_azone_tag_update()

static void area_azone_tag_update ( ScrArea *  area)
static

Definition at line 298 of file area.c.

References blender::compositor::area(), and AREA_FLAG_ACTIONZONES_UPDATE.

Referenced by region_draw_azones().

◆ area_calc_totrct()

static void area_calc_totrct ( ScrArea *  area,
const rcti *  window_rect 
)
static

◆ area_draw_azone()

static void area_draw_azone ( short   UNUSEDx1,
short   UNUSEDy1,
short   UNUSEDx2,
short   UNUSEDy2 
)
static

Corner widgets use for dragging and splitting the view.

Definition at line 195 of file area.c.

Referenced by region_draw_azones().

◆ area_draw_azone_fullscreen()

static void area_draw_azone_fullscreen ( short   UNUSEDx1,
short   UNUSEDy1,
short  x2,
short  y2,
float  alpha 
)
static

Corner widget use for quitting fullscreen.

Definition at line 179 of file area.c.

References min_ff(), NULL, UI_icon_draw_ex(), and x2.

Referenced by region_draw_azones().

◆ area_get_prevspace()

static SpaceLink* area_get_prevspace ( ScrArea *  area)
static

◆ area_is_pseudo_minimized()

static bool area_is_pseudo_minimized ( const ScrArea *  area)
static

Although there's no general support for minimizing areas, the status-bar can be snapped to be only a few pixels high. A few pixels rather than 0 so it can be un-minimized again. We consider it pseudo-minimized and don't draw it then.

Definition at line 489 of file area.c.

References blender::compositor::area().

Referenced by ED_region_do_draw(), and ED_region_do_layout().

◆ area_offscreen_exit()

static void area_offscreen_exit ( wmWindowManager *  wm,
wmWindow *  win,
ScrArea *  area 
)
static

◆ area_offscreen_init()

static void area_offscreen_init ( ScrArea *  area)
static

◆ draw_azone_arrow()

static void draw_azone_arrow ( float  x1,
float  y1,
float  x2,
float  y2,
AZEdge  edge 
)
static

◆ ED_area_data_copy()

void ED_area_data_copy ( ScrArea *  area_dst,
ScrArea *  area_src,
bool  do_free 
)

◆ ED_area_data_swap()

void ED_area_data_swap ( ScrArea *  area_dst,
ScrArea *  area_src 
)

◆ ED_area_do_listen()

void ED_area_do_listen ( struct wmSpaceTypeListenerParams *  params)

Only exported for WM.

Definition at line 159 of file area.c.

References params.

Referenced by wm_event_do_notifiers().

◆ ED_area_do_mgs_subscribe_for_tool_header()

void ED_area_do_mgs_subscribe_for_tool_header ( const wmRegionMessageSubscribeParams *  params)

◆ ED_area_do_mgs_subscribe_for_tool_ui()

void ED_area_do_mgs_subscribe_for_tool_ui ( const wmRegionMessageSubscribeParams *  params)

◆ ED_area_do_msg_notify_tag_refresh()

void ED_area_do_msg_notify_tag_refresh ( bContext *  UNUSEDC,
wmMsgSubscribeKey *  UNUSEDmsg_key,
wmMsgSubscribeValue *  msg_val 
)

◆ ED_area_do_refresh()

void ED_area_do_refresh ( struct bContext *  C,
ScrArea *  area 
)

Only exported for WM.

Definition at line 167 of file area.c.

References blender::compositor::area(), and C.

Referenced by wm_event_do_refresh_wm_and_depsgraph(), and wm_handler_fileselect_do().

◆ ED_area_find_under_cursor()

ScrArea* ED_area_find_under_cursor ( const bContext *  C,
int  spacetype,
const int  xy[2] 
)

◆ ED_area_footersize()

int ED_area_footersize ( void  )

Definition at line 3428 of file area.c.

References ED_area_headersize().

Referenced by region_rect_recursive().

◆ ED_area_global_max_size_y()

int ED_area_global_max_size_y ( const ScrArea *  area)

◆ ED_area_global_min_size_y()

int ED_area_global_min_size_y ( const ScrArea *  area)

◆ ED_area_global_size_y()

int ED_area_global_size_y ( const ScrArea *  area)
Returns
the final height of a global area, accounting for DPI.

Definition at line 3433 of file area.c.

References blender::compositor::area(), BLI_assert, ED_area_is_global(), round_fl_to_int(), and UI_DPI_FAC.

Referenced by screen_geom_vertices_scale(), and WM_window_screen_rect_calc().

◆ ED_area_has_shared_border()

bool ED_area_has_shared_border ( struct ScrArea *  a,
struct ScrArea *  b 
)

Definition at line 1897 of file area.c.

References Freestyle::a, area_getorientation(), and usdtokens::b().

Referenced by ED_buttons_should_sync_with_outliner().

◆ ED_area_header_switchbutton()

int ED_area_header_switchbutton ( const bContext *  C,
uiBlock *  block,
int  yco 
)

◆ ED_area_headersize()

int ED_area_headersize ( void  )

◆ ED_area_init()

void ED_area_init ( struct wmWindowManager *  wm,
struct wmWindow *  win,
struct ScrArea *  area 
)

◆ ED_area_is_global()

bool ED_area_is_global ( const ScrArea *  area)

◆ ED_area_newspace()

void ED_area_newspace ( struct bContext *  C,
ScrArea *  area,
int  type,
bool  skip_region_exit 
)

◆ ED_area_offscreen_create()

ScrArea* ED_area_offscreen_create ( wmWindow *  win,
eSpace_Type  space_type 
)

◆ ED_area_offscreen_free()

void ED_area_offscreen_free ( wmWindowManager *  wm,
wmWindow *  win,
ScrArea *  area 
)

◆ ED_area_prevspace()

void ED_area_prevspace ( bContext *  C,
ScrArea *  area 
)

◆ ED_area_region_search_filter_get()

const char* ED_area_region_search_filter_get ( const ScrArea *  area,
const ARegion *  region 
)

◆ ED_area_status_text()

void ED_area_status_text ( ScrArea *  area,
const char *  str 
)

Use NULL to disable it.

Definition at line 792 of file area.c.

References blender::compositor::area(), BLI_str_rstrip(), BLI_strncpy(), ED_region_tag_redraw(), LISTBASE_FOREACH, MEM_mallocN, MEM_SAFE_FREE, NULL, RGN_TYPE_HEADER, str, and UI_MAX_DRAW_STR.

Referenced by applyAlign(), applyBakeTime(), applyBevelWeight(), applyBoneEnvelope(), applyBoneRoll(), applyBoneSize(), applyCrease(), applyCurveShrinkFatten(), applyEdgeSlide(), applyGPOpacity(), applyGPShrinkFatten(), applyMaskShrinkFatten(), applyMirror(), applyNormalRotation(), applyPushPull(), applyResize(), applyRotation(), applySeqSlide(), applyShear(), applyShrinkFatten(), applySkinResize(), applyTilt(), applyTimeScale(), applyTimeSlide(), applyTimeTranslate(), applyToSphere(), applyTrackball(), applyTranslation(), applyVertSlide(), Bend(), ed_marker_move_exit(), ed_marker_move_update_header(), ED_screen_state_toggle(), ED_slider_destroy(), edbm_bevel_exit(), edbm_inset_exit(), edbm_inset_update_header(), gpencil_interpolate_exit(), gpencil_interpolate_modal(), gpencil_interpolate_status_indicators(), gpencil_uv_transform_exit(), gpencil_uv_transform_update_header(), graph_slider_exit(), interactive_value_exit(), interactive_value_update(), minimize_stretch_exit(), minimize_stretch_iteration(), point_normals_cancel(), point_normals_update_header(), pose_slide_draw_status(), pose_slide_modal(), poselib_blend_apply(), poselib_blend_cleanup(), poselib_preview_apply(), poselib_preview_cleanup(), radial_control_cancel(), radial_control_update_header(), sequencer_slip_modal(), sequencer_slip_update_header(), ui_handler_wait_for_input_remove(), viewRedrawPost(), and WM_operator_name_call_ptr_with_depends_on_cursor().

◆ ED_area_swapspace()

void ED_area_swapspace ( bContext *  C,
ScrArea *  sa1,
ScrArea *  sa2 
)

◆ ED_area_tag_redraw()

void ED_area_tag_redraw ( ScrArea *  area)

Definition at line 729 of file area.c.

References blender::compositor::area(), ED_region_tag_redraw(), and LISTBASE_FOREACH.

Referenced by action_listener(), action_refresh(), actkeys_viewall(), area_actionzone_refresh_xy(), area_dupli_invoke(), area_join_modal(), area_move_apply_do(), area_split_apply(), area_split_exit(), area_split_modal(), area_swap_modal(), bookmark_add_exec(), bookmark_cleanup_exec(), bookmark_delete_exec(), bookmark_move_exec(), box_select_exec(), buttons_area_listener(), buttons_area_redraw(), buttons_clear_filter_exec(), clip_listener(), clip_rebuild_proxy_exec(), clip_refresh(), console_clear_exec(), console_clear_line_exec(), console_delete_exec(), console_history_append_exec(), console_history_cycle_exec(), console_indent_exec(), console_insert_exec(), console_modal_select_apply(), console_move_exec(), console_paste_exec(), console_scrollback_append_exec(), console_selectword_invoke(), console_unindent_exec(), do_view3d_region_buttons(), ED_area_newspace(), ED_area_prevspace(), ED_area_swapspace(), ED_area_type_hud_clear(), ED_editors_init(), ED_imbuf_sample_exit(), ED_region_visibility_change_update(), ED_screen_restore_temp_type(), ED_spreadsheet_context_paths_set_geometry_node(), ED_view3d_quadview_update(), ED_workspace_layout_duplicate(), ED_workspace_status_text(), file_draw_check_ex(), file_filenum_exec(), file_highlight_invoke(), file_refresh(), file_rename_exec(), file_select_all_exec(), file_view_selected_exec(), gesture_modal_end(), graph_listener(), graph_refresh(), graphkeys_clear_ghostcurves_exec(), graphkeys_create_ghostcurves_exec(), header_toggle_menus_exec(), image_listener(), image_sample_apply(), image_sample_line_exec(), localview_exec(), nla_listener(), nlaedit_viewall(), blender::ed::space_node::node_area_listener(), outliner_id_remap(), blender::ed::space_node::pick_input_link_by_link_intersect(), previewrange_clear_exec(), proj_paint_add_slot(), redraw_timer_window_swap(), region_blend_end(), region_flip_exec(), region_quadview_exec(), region_scale_modal(), report_delete_exec(), report_replay_exec(), report_select_all_exec(), reset_exec(), reset_recent_exec(), blender::ed::space_node::sample_apply(), blender::ed::space_node::sample_exit(), scroll_exit(), select_report_pick_exec(), seq_build_proxy(), seq_proxy_build_job(), sequencer_listener(), sequencer_preview_add_sound(), sequencer_refresh(), sequencer_sample_apply(), sequencer_thumbnail_init_job(), sequencer_view_all_preview_exec(), template_texture_show(), text_autocomplete_invoke(), text_autocomplete_modal(), text_listener(), text_scroll_apply(), text_scroll_exec(), text_scroll_modal(), toggle_pin_exec(), toggle_xray_exec(), update_context_path_from_context(), update_pinned_context_path_if_outdated(), view_zoomdrag_apply(), view_zoomstep_apply_ex(), viewRedrawForce(), WM_window_cursor_keymap_status_refresh(), and WM_window_status_area_tag_redraw().

◆ ED_area_tag_redraw_no_rebuild()

void ED_area_tag_redraw_no_rebuild ( ScrArea *  area)

◆ ED_area_tag_redraw_regiontype()

void ED_area_tag_redraw_regiontype ( ScrArea *  area,
int  regiontype 
)

◆ ED_area_tag_refresh()

void ED_area_tag_refresh ( ScrArea *  area)

◆ ED_area_update_region_sizes()

void ED_area_update_region_sizes ( wmWindowManager *  wm,
wmWindow *  win,
ScrArea *  area 
)

◆ ed_default_handlers()

static void ed_default_handlers ( wmWindowManager *  wm,
ScrArea *  area,
ARegion *  region,
ListBase *  handlers,
int  flag 
)
static

◆ ed_panel_draw()

static void ed_panel_draw ( const bContext *  C,
ARegion *  region,
ListBase *  lb,
PanelType *  pt,
Panel *  panel,
int  w,
int  em,
char *  unique_panel_str,
const char *  search_filter 
)
static

◆ ED_region_cache_draw_background()

void ED_region_cache_draw_background ( ARegion *  region)

◆ ED_region_cache_draw_cached_segments()

void ED_region_cache_draw_cached_segments ( ARegion *  region,
const int  num_segments,
const int *  points,
const int  sfra,
const int  efra 
)

◆ ED_region_cache_draw_curfra_label()

void ED_region_cache_draw_curfra_label ( const int  framenr,
const float  x,
const float  y 
)

◆ ED_region_cursor_set()

void ED_region_cursor_set ( wmWindow *  win,
ScrArea *  area,
ARegion *  region 
)

◆ ED_region_do_draw()

void ED_region_do_draw ( struct bContext *  C,
struct ARegion *  region 
)

Only exported for WM.

Definition at line 517 of file area.c.

References ARegion::alignment, blender::compositor::area(), area_is_pseudo_minimized(), BLI_thread_frand(), C, color, wmRegionMessageSubscribeParams::context, CTX_data_scene(), CTX_wm_area(), CTX_wm_manager(), CTX_wm_window(), CTX_wm_workspace(), ARegion::do_draw, ARegionType::do_lock, ARegionType::draw, ARegion::drawrct, ED_area_is_global(), ED_region_do_msg_notify_tag_redraw(), ED_region_draw_cb_draw(), ED_region_message_subscribe(), ED_region_pixelspace(), ELEM, fb(), G, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_framebuffer_active_get(), GPU_framebuffer_bind(), GPU_line_width(), GPU_SHADER_2D_UNIFORM_COLOR, GPU_vertformat_attr_add(), ARegion::headerstr, bScreen::id, imm_draw_box_wire_2d(), immBindBuiltinProgram(), immRectf(), immUnbindProgram(), immUniformColor4f(), immUniformColor4fv(), immVertexFormat(), wmWindowManager::message_bus, NULL, wmMsgSubscribeValue::owner, pos, ptr, region_draw_azones(), region_draw_emboss(), REGION_DRAW_POST_PIXEL, region_draw_status_text(), REGION_EMBOSS_LEFT, REGION_EMBOSS_RIGHT, ARegionType::regionid, ARegion::regiontype, RGN_ALIGN_QSPLIT, RGN_DRAWING, RGN_TYPE_CHANNELS, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_WINDOW, RNA_pointer_create(), scene, SCREENFULL, bScreen::state, TH_EDITOR_OUTLINE, ARegion::type, UI_blocklist_free_inactive(), UI_GetThemeColor3fv(), UI_SetTheme(), UI_ThemeClearColor(), ARegion::winrct, WM_msg_subscribe_rna(), WM_msgbus_clear_by_owner(), WM_window_get_active_screen(), wmOrtho2_region_pixelspace(), wmPartialViewport(), rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by ui_region_redraw_immediately(), wm_draw_region_test(), and wm_draw_window_offscreen().

◆ ED_region_do_layout()

void ED_region_do_layout ( struct bContext *  C,
struct ARegion *  region 
)

◆ ED_region_do_listen()

void ED_region_do_listen ( struct wmRegionListenerParams *  params)

◆ ED_region_do_msg_notify_tag_redraw()

void ED_region_do_msg_notify_tag_redraw ( bContext *  UNUSEDC,
wmMsgSubscribeKey *  UNUSEDmsg_key,
wmMsgSubscribeValue *  msg_val 
)

◆ ED_region_floating_init()

void ED_region_floating_init ( struct ARegion *  region)

◆ ED_region_global_size_y()

int ED_region_global_size_y ( void  )

For now we just assume all global areas are made up out of horizontal bars with the same size. A fixed size could be stored in ARegion instead if needed.

Returns
the DPI aware height of a single bar/region in global areas.

Definition at line 3513 of file area.c.

References ED_area_headersize().

Referenced by region_rect_recursive().

◆ ED_region_grid_draw()

void ED_region_grid_draw ( ARegion *  region,
float  zoomx,
float  zoomy,
float  x0,
float  y0 
)

◆ ED_region_header()

void ED_region_header ( const bContext *  C,
ARegion *  region 
)

Definition at line 3410 of file area.c.

References C, ED_region_header_draw(), and ED_region_header_layout().

◆ ED_region_header_draw()

void ED_region_header_draw ( const bContext *  C,
ARegion *  region 
)

◆ ED_region_header_init()

void ED_region_header_init ( ARegion *  region)

◆ ED_region_header_layout()

void ED_region_header_layout ( const bContext *  C,
ARegion *  region 
)

◆ ED_region_image_metadata_panel_draw()

void ED_region_image_metadata_panel_draw ( ImBuf *  ibuf,
uiLayout *  layout 
)

◆ ED_region_info_draw()

void ED_region_info_draw ( ARegion *  region,
const char *  text,
float  fill_color[4],
const bool  full_redraw 
)

Definition at line 3591 of file area.c.

References ED_region_info_draw_multiline(), and NULL.

Referenced by draw_movieclip_notes(), and draw_render_info().

◆ ED_region_info_draw_multiline()

void ED_region_info_draw_multiline ( ARegion *  region,
const char *  text_array[],
float  fill_color[4],
const bool  full_redraw 
)

◆ ED_region_is_overlap()

bool ED_region_is_overlap ( int  spacetype,
int  regiontype 
)

◆ ED_region_message_subscribe()

void ED_region_message_subscribe ( struct wmRegionMessageSubscribeParams *  params)

◆ ED_region_panels()

void ED_region_panels ( const bContext *  C,
ARegion *  region 
)

Definition at line 3146 of file area.c.

References C, ED_region_panels_draw(), and ED_region_panels_layout().

◆ ED_region_panels_draw()

void ED_region_panels_draw ( const bContext *  C,
ARegion *  region 
)

◆ ED_region_panels_ex()

void ED_region_panels_ex ( const bContext *  C,
ARegion *  region,
const char *  contexts[] 
)

◆ ED_region_panels_init()

void ED_region_panels_init ( wmWindowManager *  wm,
ARegion *  region 
)

◆ ED_region_panels_layout()

void ED_region_panels_layout ( const bContext *  C,
ARegion *  region 
)

Definition at line 3088 of file area.c.

References C, ED_region_panels_layout_ex(), NULL, ARegionType::paneltypes, and ARegion::type.

Referenced by ED_region_panels().

◆ ED_region_panels_layout_ex()

void ED_region_panels_layout_ex ( const bContext *  C,
ARegion *  region,
ListBase *  paneltypes,
const char *  contexts[],
const char *  category_override 
)

◆ ED_region_pixelspace()

void ED_region_pixelspace ( const ARegion *  region)

Definition at line 121 of file area.c.

References GPU_matrix_identity_set(), and wmOrtho2_region_pixelspace().

Referenced by ED_region_do_draw().

◆ ED_region_property_search()

bool ED_region_property_search ( const bContext *  C,
ARegion *  region,
ListBase *  paneltypes,
const char *  contexts[],
const char *  category_override 
)

◆ ED_region_search_filter_update()

void ED_region_search_filter_update ( const ScrArea *  area,
ARegion *  region 
)

◆ ED_region_snap_size_apply()

bool ED_region_snap_size_apply ( ARegion *  region,
int  snap_flag 
)

◆ ED_region_snap_size_test()

int ED_region_snap_size_test ( const ARegion *  region)

Definition at line 3857 of file area.c.

References NULL, ARegion::sizex, ARegion::sizey, ARegionType::snap_size, and ARegion::type.

◆ ED_region_tag_redraw()

void ED_region_tag_redraw ( ARegion *  region)

Definition at line 655 of file area.c.

References ARegion::do_draw, ARegion::drawrct, RGN_DRAW, RGN_DRAW_EDITOR_OVERLAYS, RGN_DRAW_NO_REBUILD, RGN_DRAW_PARTIAL, and RGN_DRAWING.

Referenced by action_channel_region_listener(), action_header_region_listener(), action_main_region_listener(), action_refresh(), action_region_listener(), animchannels_select_filter_invoke(), annotation_draw_apply_event(), annotation_draw_modal(), asset_view_listener(), axis_set_view(), blender::ed::space_node::backimage_fit_exec(), blender::ed::space_node::backimage_zoom_exec(), buttons_main_region_listener(), center_current_frame_exec(), clip_header_region_listener(), clip_main_region_listener(), clip_properties_region_listener(), clip_props_region_listener(), colorband_tools_dofunc(), console_main_region_listener(), curve_draw_event_add(), curve_draw_modal(), curvemap_buttons_redraw(), curvemap_buttons_zoom_in(), curvemap_buttons_zoom_out(), curvemap_tools_dofunc(), CurveProfile_buttons_zoom_in(), CurveProfile_buttons_zoom_out(), CurveProfile_presets_dofunc(), CurveProfile_tools_dofunc(), datadropper_id_sample_pt(), datadropper_set_draw_callback_region(), depthdropper_depth_sample_pt(), do_item_rename(), dopesheet_view_all_exec(), drop_color_invoke(), dyntopo_detail_size_edit_invoke(), dyntopo_detail_size_edit_modal(), ED_area_status_text(), ED_area_tag_redraw(), ED_area_tag_redraw_regiontype(), ED_area_type_hud_clear(), ED_area_type_hud_ensure(), ED_region_do_listen(), ED_region_do_msg_notify_tag_redraw(), ED_region_tag_redraw_editor_overlays(), ED_slider_modal(), ED_view3d_smooth_view_ex(), edbm_bevel_cancel(), edbm_inset_cancel(), blender::ed::sculpt_paint::AddOperationExecutor::execute(), blender::ed::sculpt_paint::CombOperationExecutor::execute(), blender::ed::sculpt_paint::CurvesEffectOperationExecutor::execute(), blender::ed::sculpt_paint::DeleteOperationExecutor::execute(), blender::ed::sculpt_paint::DensitySubtractOperationExecutor::execute(), blender::ed::sculpt_paint::PinchOperationExecutor::execute(), blender::ed::sculpt_paint::PuffOperationExecutor::execute(), blender::ed::sculpt_paint::SelectionPaintOperationExecutor::execute(), blender::ed::sculpt_paint::SlideOperationExecutor::execute(), blender::ed::sculpt_paint::SmoothOperationExecutor::execute(), blender::ed::sculpt_paint::SnakeHookOperatorExecutor::execute(), eyedropper_modal(), face_select_all_exec(), face_select_hide_exec(), face_vert_reveal_exec(), file_main_region_listener(), file_smoothscroll_invoke(), file_tool_props_region_listener(), file_tools_region_listener(), file_ui_region_listener(), fly_modal(), gpencil_draw_apply_event(), gpencil_draw_modal(), gpencil_sculpt_brush_invoke(), gpencil_sculpt_brush_modal(), gpencil_transform_fill_cancel(), gpencil_vertexpaint_brush_invoke(), gpencil_vertexpaint_brush_modal(), gpencil_weightpaint_brush_invoke(), gpencil_weightpaint_brush_modal(), grab_clone_apply(), graph_region_listener(), graphkeys_snap_cursor_value_exec(), hide_show_exec(), hud_region_layout(), image_buttons_region_listener(), image_header_region_listener(), image_main_region_listener(), image_tools_region_listener(), image_view_all_exec(), image_view_pan_exec(), image_view_pan_exit(), image_view_selected_exec(), image_view_zoom_border_exec(), image_view_zoom_exec(), image_view_zoom_exit(), image_view_zoom_in_exec(), image_view_zoom_invoke(), image_view_zoom_out_exec(), image_view_zoom_ratio_exec(), image_zoom_apply(), info_header_listener(), info_main_region_listener(), knifetool_exit_ex(), knifetool_init(), knifetool_modal(), knifetool_update_mval(), loopcut_finish(), loopcut_modal(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_invoke(), blender::ed::sculpt_paint::min_distance_edit::min_distance_edit_modal(), nla_channel_region_listener(), nla_main_region_listener(), nla_region_listener(), blender::ed::space_node::node_insert_offset_modal(), blender::ed::space_node::node_link_exit(), blender::ed::space_node::node_link_modal(), blender::ed::space_node::node_region_listener(), blender::ed::space_node::node_resize_modal(), object_transform_axis_target_invoke(), object_transform_axis_target_modal(), outliner_header_region_listener(), outliner_item_do_activate_from_cursor(), outliner_main_region_listener(), outliner_one_level_exec(), outliner_show_hierarchy_exec(), outliner_tag_redraw_avoid_rebuild_on_open_change(), outliner_toggle_expanded_exec(), paint_2d_redraw(), paint_proj_redraw(), paint_proj_stroke(), paint_select_linked_exec(), paint_select_linked_pick_invoke(), paintface_mouse_select(), panel_activate_state(), pose_slide_modal(), radial_control_modal(), redraw_timer_step(), region_blend_end(), region_blend_invoke(), region_rect_recursive(), region_toggle_exec(), rename_anim_channels(), renamebutton_cb(), reset_exec(), ringsel_exit(), ringsel_init(), run_pyfile_exec(), sclip_zoom_set_factor_exec(), screen_animation_region_tag_redraw(), sculpt_dirty_mask_exec(), SCULPT_flush_update_done(), SCULPT_flush_update_step(), sculpt_mask_expand_modal(), sculpt_set_pivot_position_exec(), SCULPT_tag_update_overlays(), select_anim_channel_keys(), sequencer_buttons_region_listener(), sequencer_main_region_listener(), sequencer_preview_region_listener(), sequencer_view_zoom_ratio_exec(), blender::ed::space_node::snode_bg_viewmove_modal(), spreadsheet_dataset_region_listener(), spreadsheet_header_region_listener(), spreadsheet_main_region_draw(), spreadsheet_main_region_listener(), statusbar_header_region_listener(), stencil_control_modal(), stitch_modal(), text_text_search_exec(), topbar_header_listener(), topbar_main_region_listener(), UI_block_views_listen(), ui_but_pie_menu_apply(), UI_context_update_anim_flag(), ui_do_animate(), ui_do_but_extra_operator_icon(), ui_do_but_HOTKEYEVT(), ui_do_but_textedit(), ui_do_but_textedit_select(), ui_do_but_VIEW_ITEM(), ui_do_button(), ui_do_drag(), ui_drag_toggle_set(), ui_handle_list_event(), ui_handle_panel_category_cycling(), ui_handle_panel_header(), ui_handler_panel_region(), ui_menu_scroll_apply_offset_y(), ui_numedit_apply(), ui_numedit_set_active(), ui_pie_handler(), ui_popup_block_refresh(), ui_popup_translate(), ui_searchbox_create_generic_ex(), ui_searchbox_select(), ui_searchbox_update(), ui_tooltip_create_with_data(), ui_view_item_rename_exec(), uv_sculpt_stroke_modal(), vert_select_all_exec(), vert_select_hide_exec(), vert_select_ungrouped_exec(), view3d_all_exec(), view3d_boxview_copy(), view3d_boxview_sync(), view3d_buttons_region_listener(), view3d_clipping_invoke(), view3d_header_region_listener(), view3d_interactive_add_begin(), view3d_interactive_add_exit(), view3d_interactive_add_modal(), view3d_main_region_listener(), view3d_smoothview_apply_ex(), view_all_exec(), view_center_cursor_exec(), view_pan_exec(), view_pan_exit(), view_selected_exec(), view_zoom_apply(), view_zoom_exec(), view_zoom_exit(), view_zoom_in_exec(), view_zoom_out_exec(), view_zoom_ratio_exec(), viewdolly_apply(), viewdolly_exec(), viewdolly_invoke(), viewmove_apply(), viewops_data_create(), viewops_data_free(), viewpersportho_exec(), viewroll_apply(), viewrotate_apply(), viewzoom_apply_3d(), viewzoom_apply_camera(), viewzoom_exec(), voxel_size_edit_invoke(), voxel_size_edit_modal(), vpaint_stroke_update_step_intern(), walk_modal(), weight_paint_set_exec(), WM_gizmo_do_msg_notify_tag_refresh(), wm_region_tag_draw_on_gizmo_delay_refresh_for_tweak(), and wpaint_stroke_update_step().

◆ ED_region_tag_redraw_cursor()

void ED_region_tag_redraw_cursor ( ARegion *  region)

Definition at line 667 of file area.c.

References ARegion::do_draw_paintcursor, and RGN_DRAW.

Referenced by view3d_main_region_listener().

◆ ED_region_tag_redraw_editor_overlays()

void ED_region_tag_redraw_editor_overlays ( struct ARegion *  region)

◆ ED_region_tag_redraw_no_rebuild()

void ED_region_tag_redraw_no_rebuild ( ARegion *  region)

◆ ED_region_tag_redraw_partial()

void ED_region_tag_redraw_partial ( ARegion *  region,
const rcti *  rct,
bool  rebuild 
)

◆ ED_region_tag_refresh_ui()

void ED_region_tag_refresh_ui ( ARegion *  region)

◆ ED_region_toggle_hidden()

void ED_region_toggle_hidden ( struct bContext *  C,
struct ARegion *  region 
)

Exported to all editors, uses fading default.

Definition at line 2117 of file area.c.

References C, and region_toggle_hidden().

Referenced by animchannels_select_filter_invoke(), region_toggle_exec(), and text_text_search_exec().

◆ ED_region_update_rect()

void ED_region_update_rect ( struct ARegion *  region)

Call to move a popup window (keep OpenGL context free!)

Definition at line 2052 of file area.c.

References region_update_rect().

Referenced by ui_popup_block_refresh(), and ui_popup_translate().

◆ ED_region_visibility_change_update()

void ED_region_visibility_change_update ( struct bContext *  C,
struct ScrArea *  area,
struct ARegion *  region 
)

◆ ED_region_visible_rect()

const rcti* ED_region_visible_rect ( ARegion *  region)

◆ ED_screen_areas_iter_first()

ScrArea* ED_screen_areas_iter_first ( const wmWindow *  win,
const bScreen *  screen 
)

◆ ED_screen_areas_iter_next()

ScrArea* ED_screen_areas_iter_next ( const bScreen *  screen,
const ScrArea *  area 
)

◆ ED_workspace_status_text()

void ED_workspace_status_text ( bContext *  C,
const char *  str 
)

Definition at line 816 of file area.c.

References blender::compositor::area(), ScrAreaMap::areabase, BLI_strncpy(), C, CTX_wm_window(), CTX_wm_workspace(), ED_area_tag_redraw(), wmWindow::global_areas, LISTBASE_FOREACH, MEM_mallocN, MEM_SAFE_FREE, NULL, SPACE_STATUSBAR, WorkSpace::status_text, str, and UI_MAX_DRAW_STR.

Referenced by add_marker_at_click_invoke(), add_marker_at_click_modal(), annotation_draw_status_indicators(), blend_to_default_draw_status_header(), blend_to_neighbor_draw_status_header(), breakdown_draw_status_header(), decimate_draw_status(), dyntopo_detail_size_edit_cancel(), dyntopo_detail_size_edit_invoke(), dyntopo_detail_size_edit_modal(), ED_screen_state_toggle(), ED_slider_destroy(), edbm_bevel_invoke(), edbm_bevel_modal(), edbm_bevel_update_status_text(), eyedropper_gpencil_exit(), eyedropper_gpencil_status_indicators(), face_set_extract_invoke(), face_set_extract_modal(), gpencil_draw_status_indicators(), gpencil_fill_exit(), gpencil_fill_status_indicators(), gpencil_interpolate_exit(), gpencil_interpolate_modal(), gpencil_interpolate_status_indicators(), gpencil_primitive_exit(), gpencil_primitive_interaction_end(), gpencil_primitive_modal(), gpencil_primitive_status_indicators(), gpencil_sculpt_brush_exit(), gpencil_sculpt_brush_header_set(), gpencil_vertexpaint_brush_exit(), gpencil_vertexpaint_brush_header_set(), gpencil_weightpaint_brush_exit(), gpencil_weightpaint_brush_header_set(), knife_update_header(), knifetool_modal(), loopcut_finish(), loopcut_init(), loopcut_modal(), mesh_bisect_invoke(), mesh_bisect_modal(), minimize_stretch_exit(), minimize_stretch_iteration(), blender::ed::space_node::node_link_exit(), blender::ed::space_node::node_link_update_header(), pose_slide_draw_status(), pose_slide_modal(), poselib_blend_apply(), poselib_blend_cleanup(), poselib_preview_apply(), poselib_preview_cleanup(), sample_color_modal(), sample_color_update_header(), sculpt_expand_finish(), sculpt_mask_expand_cancel(), sculpt_mask_expand_invoke(), sculpt_mask_expand_modal(), sculpt_sample_detail_size_invoke(), sculpt_sample_detail_size_modal(), stitch_exit(), stitch_update_header(), ui_handler_wait_for_input_remove(), voxel_size_edit_cancel(), voxel_size_edit_invoke(), voxel_size_edit_modal(), and WM_operator_name_call_ptr_with_depends_on_cursor().

◆ event_in_markers_region()

static bool event_in_markers_region ( const ARegion *  region,
const wmEvent *  event 
)
static

◆ fullscreen_azone_init()

static void fullscreen_azone_init ( ScrArea *  area,
ARegion *  region 
)
static

◆ metadata_panel_draw_field()

static void metadata_panel_draw_field ( const char *  field,
const char *  value,
void *  ctx_v 
)
static

Definition at line 3604 of file area.c.

References MetadataPanelDrawContext::layout, uiItemL(), and uiLayoutRow().

Referenced by ED_region_image_metadata_panel_draw().

◆ panel_add_check()

static bool panel_add_check ( const bContext *  C,
const WorkSpace *  workspace,
const char *  contexts[],
const char *  category_override,
PanelType *  panel_type 
)
static

Check whether a panel should be added to the region's panel layout.

Definition at line 2830 of file area.c.

References BKE_workspace_owner_id_check(), C, PanelType::category, PanelType::context, PanelType::draw, LIKELY, NULL, PanelType::owner_id, PanelType::parent, PanelType::poll, STREQ, and streq_array_any().

Referenced by ED_region_panels_layout_ex(), and ED_region_property_search().

◆ panel_draw_width_from_max_width_get()

static int panel_draw_width_from_max_width_get ( const ARegion *  region,
const PanelType *  panel_type,
const int  max_width 
)
static

Definition at line 2902 of file area.c.

References UI_PANEL_MARGIN_X, and UI_panel_should_show_background().

Referenced by ED_region_panels_layout_ex().

◆ panel_property_search()

static bool panel_property_search ( const bContext *  C,
ARegion *  region,
const uiStyle *  style,
Panel *  panel,
PanelType *  panel_type,
const char *  search_filter 
)
static

◆ rct_fits()

static int rct_fits ( const rcti *  rect,
const eScreenAxis  dir_axis,
int  size 
)
static

Definition at line 1165 of file area.c.

References BLI_rcti_size_x(), BLI_rcti_size_y(), SCREEN_AXIS_H, and size().

Referenced by region_rect_recursive().

◆ region_align_info_from_area()

static void region_align_info_from_area ( ScrArea *  area,
struct RegionTypeAlignInfo *  r_align_info 
)
static

◆ region_align_info_to_area()

static void region_align_info_to_area ( ScrArea *  area,
const struct RegionTypeAlignInfo  region_align_info_src[RGN_TYPE_NUM] 
)
static

◆ region_align_info_to_area_for_headers()

static void region_align_info_to_area_for_headers ( const struct RegionTypeAlignInfo *  region_align_info_src,
const struct RegionTypeAlignInfo *  region_align_info_dst,
ARegion *  region_by_type[RGN_TYPE_NUM] 
)
static

Notes on header alignment syncing.

This is as involved as it is because:

  • There are currently 3 kinds of headers.
  • All headers can independently visible & flipped to another side (except for the tool-header that depends on the header visibility).
  • We don't want the space-switching button to flip when switching spaces. From the user perspective it feels like a bug to move the button you click on to the opposite side of the area.
  • The space-switcher may be on either the header or the tool-header depending on the tool-header visibility.

How this works:

  • When headers match on both spaces, we copy the alignment from the previous regions to the next regions when syncing.
  • Otherwise detect the primary header (the one that shows the space type) and use this to set alignment for the headers in the destination area.
  • Header & tool-header/footer may be on opposite sides, this is preserved when syncing.

Definition at line 2259 of file area.c.

References RegionTypeAlignInfo::alignment, ARegion::alignment, RegionTypeAlignInfo::by_type, RegionTypeAlignInfo::hidden, NULL, region_alignment_from_header_and_tool_header_state(), RGN_ALIGN_BOTTOM, RGN_ALIGN_ENUM_FROM_MASK, RGN_ALIGN_FLAG_FROM_MASK, RGN_ALIGN_TOP, RGN_TYPE_FOOTER, RGN_TYPE_HEADER, and RGN_TYPE_TOOL_HEADER.

Referenced by region_align_info_to_area().

◆ region_alignment_from_header_and_tool_header_state()

static short region_alignment_from_header_and_tool_header_state ( const struct RegionTypeAlignInfo *  region_align_info,
const short  fallback 
)
static

Keeping alignment between headers keep the space-type selector button in the same place. This is complicated by the editor-type selector being placed on the header closest to the screen edge which changes based on hidden state.

The tool-header is used when visible, otherwise the header is used.

Definition at line 2213 of file area.c.

References RegionTypeAlignInfo::alignment, RegionTypeAlignInfo::by_type, RegionTypeAlignInfo::hidden, RGN_TYPE_HEADER, and RGN_TYPE_TOOL_HEADER.

Referenced by region_align_info_to_area_for_headers().

◆ region_azone_edge()

static void region_azone_edge ( AZone *  az,
ARegion *  region 
)
static

◆ region_azone_edge_init()

static void region_azone_edge_init ( ScrArea *  area,
ARegion *  region,
AZEdge  edge,
const bool  is_fullscreen 
)
static

◆ region_azone_edge_poll()

static bool region_azone_edge_poll ( const ARegion *  region,
const bool  is_fullscreen 
)
static

◆ region_azone_scrollbar_init()

static void region_azone_scrollbar_init ( ScrArea *  area,
ARegion *  region,
AZScrollDirection  direction 
)
static

◆ region_azone_tab_plus()

static void region_azone_tab_plus ( ScrArea *  area,
AZone *  az,
ARegion *  region 
)
static

◆ region_azones_add()

static void region_azones_add ( const bScreen *  screen,
ScrArea *  area,
ARegion *  region 
)
static

◆ region_azones_add_edge()

static void region_azones_add_edge ( ScrArea *  area,
ARegion *  region,
const int  alignment,
const bool  is_fullscreen 
)
static

◆ region_azones_scrollbars_init()

static void region_azones_scrollbars_init ( ScrArea *  area,
ARegion *  region 
)
static

◆ region_background_color_id()

static ThemeColorID region_background_color_id ( const bContext *  C,
const ARegion *  region 
)
static

◆ region_clear_color()

static void region_clear_color ( const bContext *  C,
const ARegion *  region,
ThemeColorID  colorid 
)
static

◆ region_draw_azone_tab_arrow()

static void region_draw_azone_tab_arrow ( ScrArea *  area,
ARegion *  region,
AZone *  az 
)
static

◆ region_draw_azones()

static void region_draw_azones ( ScrArea *  area,
ARegion *  region 
)
static

◆ region_draw_emboss()

static void region_draw_emboss ( const ARegion *  region,
const rcti *  scirct,
int  sides 
)
static

◆ region_draw_status_text()

static void region_draw_status_text ( ScrArea *  area,
ARegion *  region 
)
static

◆ region_overlap_fix()

static void region_overlap_fix ( ScrArea *  area,
ARegion *  region 
)
static

◆ region_panels_collect_categories()

static const char* region_panels_collect_categories ( ARegion *  region,
LinkNode *  panel_types_stack,
bool *  use_category_tabs 
)
static

◆ region_rect_recursive()

static void region_rect_recursive ( ScrArea *  area,
ARegion *  region,
rcti *  remainder,
rcti *  overlap_remainder,
int  quad 
)
static
Note
Currently this window type is only used for RGN_TYPE_HUD, We expect the panel to resize itself to be larger.

This aligns to the lower left of the area.

Definition at line 1274 of file area.c.

References ARegion::alignment, blender::compositor::area(), AREAMINX, BLI_assert, BLI_rcti_cent_x(), BLI_rcti_cent_y(), BLI_rcti_init(), BLI_rcti_is_valid(), BLI_rcti_isect(), BLI_rcti_resize(), BLI_rcti_sanitize(), BLI_rcti_size_x(), BLI_rcti_size_y(), count, ED_area_footersize(), ED_area_headersize(), ED_area_is_global(), ED_region_global_size_y(), ED_region_is_overlap(), ED_region_tag_redraw(), ED_region_tag_redraw_no_rebuild(), ELEM, ARegion::flag, G, G_DEBUG, HEADERY, ARegionType::layout, max_ii(), ARegion::next, NULL, ARegion_Runtime::offset_x, ARegion_Runtime::offset_y, ARegion::overlap, ARegionType::prefsizex, ARegionType::prefsizey, ARegion::prev, quad, rct_fits(), region_overlap_fix(), ARegion::regiontype, RGN_ALIGN_BOTTOM, RGN_ALIGN_ENUM_FROM_MASK, RGN_ALIGN_FLOAT, RGN_ALIGN_HSPLIT, RGN_ALIGN_LEFT, RGN_ALIGN_NONE, RGN_ALIGN_QSPLIT, RGN_ALIGN_RIGHT, RGN_ALIGN_TOP, RGN_ALIGN_VSPLIT, RGN_FLAG_DYNAMIC_SIZE, RGN_FLAG_HIDDEN, RGN_FLAG_PREFSIZE_OR_HIDDEN, RGN_FLAG_SIZE_CLAMP_X, RGN_FLAG_SIZE_CLAMP_Y, RGN_FLAG_TOO_SMALL, RGN_SPLIT_PREV, RGN_TYPE_FOOTER, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER, ARegion::runtime, SCREEN_AXIS_H, SCREEN_AXIS_V, ARegion::sizex, ARegion::sizey, SPACE_VIEW3D, ARegion::type, UI_DPI_FAC, UI_UNIT_X, UI_UNIT_Y, ARegion_Runtime::visible_rect, ARegion::winrct, ARegion::winx, ARegion::winy, rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by ED_area_init(), and ED_area_update_region_sizes().

◆ region_subwindow()

static void region_subwindow ( ARegion *  region)
static

◆ region_toggle_hidden()

void region_toggle_hidden ( bContext *  C,
ARegion *  region,
const bool  do_fade 
)

◆ region_update_rect()

static void region_update_rect ( ARegion *  region)
static

◆ region_uses_category_tabs()

static bool region_uses_category_tabs ( const ScrArea *  area,
const ARegion *  region 
)
static

◆ region_visible_rect_calc()

static void region_visible_rect_calc ( ARegion *  region,
rcti *  rect 
)
static

◆ streq_array_any()

BLI_INLINE bool streq_array_any ( const char *  s,
const char *  arr[] 
)

Definition at line 2660 of file area.c.

References STREQ.

Referenced by panel_add_check().