Blender V4.3
BKE_screen.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4#pragma once
5
10#include <memory>
11#include <string>
12
13#include "BLI_compiler_attrs.h"
15#include "BLI_vector.hh"
16
17#include "RNA_types.hh"
18
19#include "BKE_context.hh"
20
21namespace blender::bke::id {
22class IDRemapper;
23}
24
25namespace blender::asset_system {
26class AssetRepresentation;
27}
28
29struct ARegion;
30struct AssetShelfType;
31struct BlendDataReader;
32struct BlendLibReader;
33struct BlendWriter;
34struct Header;
35struct ID;
36struct LayoutPanelState;
38struct ListBase;
39struct Menu;
40struct Panel;
41struct Scene;
42struct ScrArea;
43struct ScrAreaMap;
44struct ScrEdge;
45struct ScrVert;
46struct SpaceType;
47struct View3D;
48struct View3DShading;
49struct WorkSpace;
50struct bContext;
51struct bScreen;
52struct uiBlock;
53struct uiLayout;
54struct uiList;
55struct wmGizmoMap;
56struct wmKeyConfig;
57struct wmMsgBus;
58struct wmNotifier;
59struct wmWindow;
60struct wmWindowManager;
61
62/* spacetype has everything stored to get an editor working, it gets initialized via
63 * #ED_spacetypes_init() in `editors/space_api/spacetypes.cc` */
64/* an editor in Blender is a combined ScrArea + SpaceType + SpaceData */
65
66#define BKE_ST_MAXNAME 64
67
74
75struct SpaceType {
76 char name[BKE_ST_MAXNAME]; /* for menus */
77 int spaceid; /* unique space identifier */
78 int iconid; /* icon lookup for menus */
79
80 /* Initial allocation, after this WM will call init() too. Some editors need
81 * area and scene data (e.g. frame range) to set their initial scrolling. */
82 SpaceLink *(*create)(const ScrArea *area, const Scene *scene);
83 /* not free spacelink itself */
84 void (*free)(SpaceLink *sl);
85
86 /* init is to cope with file load, screen (size) changes, check handlers */
87 void (*init)(wmWindowManager *wm, ScrArea *area);
88 /* exit is called when the area is hidden or removed */
89 void (*exit)(wmWindowManager *wm, ScrArea *area);
90 /* Listeners can react to bContext changes */
92
93 /* called when the mouse moves out of the area */
94 void (*deactivate)(ScrArea *area);
95
97 void (*refresh)(const bContext *C, ScrArea *area);
98
99 /* after a spacedata copy, an init should result in exact same situation */
100 SpaceLink *(*duplicate)(SpaceLink *sl);
101
102 /* register operator types on startup */
103 void (*operatortypes)();
104 /* add default items to WM keymap */
105 void (*keymap)(wmKeyConfig *keyconf);
106 /* on startup, define dropboxes for spacetype+regions */
107 void (*dropboxes)();
108
109 /* initialize gizmo-map-types and gizmo-group-types with the region */
110 void (*gizmos)();
111
112 /* return context data */
114
115 /* Used when we want to replace an ID by another (or NULL). */
116 void (*id_remap)(ScrArea *area, SpaceLink *sl, const blender::bke::id::IDRemapper &mappings);
117
124
126 void (*space_subtype_set)(ScrArea *area, int value);
127 void (*space_subtype_item_extend)(bContext *C, EnumPropertyItem **item, int *totitem);
128
129 /* Return a custom name, based on subtype or other reason. */
131 /* Return a custom icon, based on subtype or other reason. */
132 int (*space_icon_get)(const ScrArea *area);
133
137 void (*blend_read_data)(BlendDataReader *reader, SpaceLink *space_link);
138
142 void (*blend_read_after_liblink)(BlendLibReader *reader, ID *parent_id, SpaceLink *space_link);
143
147 void (*blend_write)(BlendWriter *writer, SpaceLink *space_link);
148
149 /* region type definitions */
151
152 /* read and write... */
153
156
157 ~SpaceType();
158};
159
160/* region types are also defined using spacetypes_init, via a callback */
161
164 ScrArea *area; /* Can be NULL when the region is not part of an area. */
167 const Scene *scene;
168};
169
179
182 const ScrArea *area;
184
187};
188
191
192 int regionid; /* unique identifier within this space, defines RGN_TYPE_xxxx */
193
194 /* add handlers, stuff you only do once or on area/region type/size changes */
195 void (*init)(wmWindowManager *wm, ARegion *region);
196 /* exit is called when the region is hidden or removed */
197 void (*exit)(wmWindowManager *wm, ARegion *region);
204 bool (*poll)(const RegionPollParams *params);
205 /* draw entirely, view changes should be handled here */
206 void (*draw)(const bContext *C, ARegion *region);
214 void (*draw_overlay)(const bContext *C, ARegion *region);
215 /* optional, compute button layout before drawing for dynamic size */
216 void (*layout)(const bContext *C, ARegion *region);
217 /* snap the size of the region (can be NULL for no snapping). */
218 int (*snap_size)(const ARegion *region, int size, int axis);
219 /* contextual changes should be handled here */
221 /* Optional callback to generate subscriptions. */
223
224 void (*free)(ARegion *);
225
226 /* split region, copy data optionally */
227 void *(*duplicate)(void *poin);
228
229 /* register operator types on startup */
230 void (*operatortypes)();
231 /* add items to keymap */
232 void (*keymap)(wmKeyConfig *keyconf);
233 /* allows default cursor per region */
234 void (*cursor)(wmWindow *win, ScrArea *area, ARegion *region);
235
236 /* return context data */
238
243 void (*on_poll_success)(const bContext *C, ARegion *region);
244
249 void (*on_user_resize)(const ARegion *region);
250 /* Is called whenever the current visible View2D's region changes.
251 *
252 * Used from user code such as view navigation/zoom operators to inform region about changes.
253 * The goal is to support zoom-to-fit features which gets disabled when manual navigation is
254 * performed.
255 *
256 * This callback is not called on indirect changes of the current viewport (which could happen
257 * when the `v2d->tot is changed and `cur` is adopted accordingly). */
258 void (*on_view2d_changed)(const bContext *C, ARegion *region);
259
260 /* custom drawing callbacks */
262
263 /* panels type definitions */
265
266 /* header type definitions */
268
269 /* hardcoded constraints, smaller than these values region is not visible */
271 /* when new region opens (region prefsizex/y are zero then */
273 /* default keymaps to add */
275 /* return without drawing.
276 * lock is set by region definition, and copied to do_lock by render. can become flag. */
277 short do_lock, lock;
280 /* call cursor function on each move event */
282};
283
284/* panel types */
285
286struct PanelType {
288
289 char idname[BKE_ST_MAXNAME]; /* unique name */
290 char label[BKE_ST_MAXNAME]; /* for panel header */
291 const char *description; /* for panel tooltip */
293 char context[BKE_ST_MAXNAME]; /* for buttons window */
294 char category[BKE_ST_MAXNAME]; /* for category tabs */
295 char owner_id[128]; /* for work-spaces to selectively show. */
296 char parent_id[BKE_ST_MAXNAME]; /* parent idname for sub-panels */
302 /* For popovers, 0 for default. */
307 int order;
308
309 int flag;
310
311 /* verify if the panel should draw or not */
312 bool (*poll)(const bContext *C, PanelType *pt);
313 /* draw header (optional) */
314 void (*draw_header)(const bContext *C, Panel *panel);
315 /* draw header preset (optional) */
316 void (*draw_header_preset)(const bContext *C, Panel *panel);
317 /* draw entirely, view changes should be handled here */
318 void (*draw)(const bContext *C, Panel *panel);
324
325 /* For instanced panels corresponding to a list: */
326
328 void (*reorder)(bContext *C, Panel *pa, int new_index);
342 void (*set_list_data_expand_flag)(const bContext *C, Panel *pa, short expand_flag);
343
344 /* sub panels */
347
348 /* RNA integration */
350};
351
352/* #PanelType.flag */
353enum {
363};
364
371
373 float start_y;
374 float end_y;
375};
376
388
389 void clear()
390 {
391 this->headers.clear();
392 this->bodies.clear();
393 }
394};
395
397 /* Applied to Panel.ofsx, but saved separately so we can track changes between redraws. */
398 int region_ofsx = 0;
399
408
409 /* Pointer to the panel's block. Useful when changes to panel #uiBlocks
410 * need some context from traversal of the panel "tree". */
411 uiBlock *block = nullptr;
412
413 /* Non-owning pointer. The context is stored in the block. */
414 bContextStore *context = nullptr;
415
418};
419
420/* #uiList types. */
421
423using uiListDrawItemFunc = void (*)(uiList *ui_list,
424 const bContext *C,
425 uiLayout *layout,
426 PointerRNA *dataptr,
427 PointerRNA *itemptr,
428 int icon,
429 PointerRNA *active_dataptr,
430 const char *active_propname,
431 int index,
432 int flt_flag);
433
434/* Draw the filtering part of an uiList */
435using uiListDrawFilterFunc = void (*)(uiList *ui_list, const bContext *C, uiLayout *layout);
436
437/* Filter items of an uiList */
438using uiListFilterItemsFunc = void (*)(uiList *ui_list,
439 const bContext *C,
440 PointerRNA *,
441 const char *propname);
442
443/* Listen to notifiers. Only for lists defined in C. */
445
448
449 char idname[BKE_ST_MAXNAME]; /* unique name */
450
454
455 /* For lists defined in C only. */
457
458 /* RNA integration */
460};
461
462/* header types */
463
466
467 char idname[BKE_ST_MAXNAME]; /* unique name */
470
471 bool (*poll)(const bContext *C, HeaderType *ht);
472 /* draw entirely, view changes should be handled here */
473 void (*draw)(const bContext *C, Header *header);
474
475 /* RNA integration */
477};
478
479struct Header {
480 HeaderType *type; /* runtime */
481 uiLayout *layout; /* runtime for drawing */
482};
483
484/* menu types */
485
486enum class MenuTypeFlag {
491 ContextDependent = (1 << 0),
495 SearchOnKeyPress = (1 << 1),
496};
498
499struct MenuType {
500 MenuType *next, *prev;
501
502 char idname[BKE_ST_MAXNAME]; /* unique name */
503 char label[BKE_ST_MAXNAME]; /* for button text */
504 char translation_context[BKE_ST_MAXNAME];
505 char owner_id[128]; /* optional, see: #wmOwnerID */
506 const char *description;
507
508 /* verify if the menu should draw or not */
509 bool (*poll)(const bContext *C, MenuType *mt);
510 /* draw entirely, view changes should be handled here */
511 void (*draw)(const bContext *C, Menu *menu);
512 void (*listener)(const wmRegionListenerParams *params);
513
515
516 /* RNA integration */
518};
519
520struct Menu {
521 MenuType *type; /* runtime */
522 uiLayout *layout; /* runtime for drawing */
523};
524
525/* asset shelf types */
526
527/* #AssetShelfType.flag */
538
539#define ASSET_SHELF_PREVIEW_SIZE_DEFAULT 64
540
542 char idname[BKE_ST_MAXNAME]; /* unique name */
543
545
547 std::string activate_operator;
548
550
552
554 bool (*poll)(const bContext *C, const AssetShelfType *shelf_type);
555
558 bool (*asset_poll)(const AssetShelfType *shelf_type,
560
563 const AssetShelfType *shelf_type,
565 uiLayout *layout);
566
567 const AssetWeakReference *(*get_active_asset)(const AssetShelfType *shelf_type);
568
569 /* RNA integration */
571};
572
573/* Space-types. */
574
575SpaceType *BKE_spacetype_from_id(int spaceid);
576ARegionType *BKE_regiontype_from_id(const SpaceType *st, int regionid);
578void BKE_spacetype_register(std::unique_ptr<SpaceType> st);
579bool BKE_spacetype_exists(int spaceid);
580void BKE_spacetypes_free(); /* only for quitting blender */
581
582/* Space-data. */
583
588void BKE_spacedata_copylist(ListBase *lb_dst, ListBase *lb_src);
589
596void BKE_spacedata_draw_locks(bool set);
597
603 const ScrArea *area,
604 int region_type) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
605
607 void (*func)(ScrArea *area, SpaceLink *sl, ID *old_id, ID *new_id));
611void BKE_spacedata_id_unref(ScrArea *area, SpaceLink *sl, ID *id);
612
613/* Area/regions. */
614
615ARegion *BKE_area_region_copy(const SpaceType *st, const ARegion *region);
619void BKE_area_region_free(SpaceType *st, ARegion *region);
624Panel *BKE_panel_new(PanelType *panel_type);
625void BKE_panel_free(Panel *panel);
629void BKE_screen_area_free(ScrArea *area);
636
642 const char *idname,
643 bool default_closed);
644
651ARegion *BKE_region_find_in_listbase_by_type(const ListBase *regionbase, const int region_type);
658ARegion *BKE_area_find_region_type(const ScrArea *area, int region_type);
660ARegion *BKE_area_find_region_xy(const ScrArea *area, int regiontype, const int xy[2])
661 ATTR_NONNULL(3);
666 int regiontype,
667 const int xy[2]) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1, 3);
668
669ARegion *BKE_screen_find_main_region_at_xy(const bScreen *screen, int space_type, const int xy[2])
670 ATTR_NONNULL(1, 3);
677 ATTR_NONNULL(1, 2);
681std::optional<std::string> BKE_screen_path_from_screen_to_space(const PointerRNA *ptr);
686ScrArea *BKE_screen_find_big_area(const bScreen *screen, int spacetype, short min);
688 int spacetype,
689 const int xy[2]) ATTR_NONNULL(1, 3);
690ScrArea *BKE_screen_find_area_xy(const bScreen *screen, int spacetype, const int xy[2])
691 ATTR_NONNULL(1, 3);
692
694
700
701void BKE_screen_view3d_sync(View3D *v3d, Scene *scene);
702void BKE_screen_view3d_scene_sync(bScreen *screen, Scene *scene);
705
706/* Zoom factor conversion. */
707
708float BKE_screen_view3d_zoom_to_fac(float camzoom);
709float BKE_screen_view3d_zoom_from_fac(float zoomfac);
710
712
713/* Screen. */
714
720
724void BKE_screen_free_data(bScreen *screen);
726
733
735
736/* .blend file I/O */
737
740
751
758 ID *parent_id,
759 ScrArea *area);
int(*)(const bContext *C, const char *member, bContextDataResult *result) bContextDataCallback
ARegion * BKE_spacedata_find_region_type(const SpaceLink *slink, const ScrArea *area, int region_type) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition screen.cc:419
void BKE_screen_remove_unused_scrverts(bScreen *screen)
Definition screen.cc:779
AssetShelfTypeFlag
@ ASSET_SHELF_TYPE_FLAG_MAX
@ ASSET_SHELF_TYPE_FLAG_NO_ASSET_DRAG
@ ASSET_SHELF_TYPE_FLAG_STORE_CATALOGS_IN_PREFS
@ ASSET_SHELF_TYPE_FLAG_DEFAULT_VISIBLE
void BKE_screen_view3d_shading_blend_read_data(BlendDataReader *reader, View3DShading *shading)
Definition screen.cc:1055
ScrArea ScrArea void BKE_screen_gizmo_tag_refresh(bScreen *screen)
Definition screen.cc:469
ARegion ARegion ScrArea * BKE_screen_find_area_from_space(const bScreen *screen, const SpaceLink *sl) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void BKE_screen_area_map_blend_write(BlendWriter *writer, ScrAreaMap *area_map)
Definition screen.cc:1152
void BKE_spacetypes_free()
Definition screen.cc:238
void BKE_spacedata_draw_locks(bool set)
Definition screen.cc:405
void BKE_screen_remove_unused_scredges(bScreen *screen)
Definition screen.cc:734
void BKE_spacedata_copylist(ListBase *lb_dst, ListBase *lb_src)
Definition screen.cc:388
void(*)(uiList *ui_list, const bContext *C, PointerRNA *, const char *propname) uiListFilterItemsFunc
bool BKE_screen_is_used(const bScreen *screen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition screen.cc:1013
float BKE_screen_view3d_zoom_from_fac(float zoomfac)
Definition screen.cc:1003
void BKE_screen_area_blend_read_after_liblink(BlendLibReader *reader, ID *parent_id, ScrArea *area)
Definition screen.cc:1405
void BKE_screen_remove_double_scrverts(bScreen *screen)
Definition screen.cc:666
bool BKE_screen_blend_read_data(BlendDataReader *reader, bScreen *screen)
Definition screen.cc:128
#define BKE_ST_MAXNAME
Definition BKE_screen.hh:66
ARegion * BKE_area_find_region_xy(const ScrArea *area, int regiontype, const int xy[2]) ATTR_NONNULL(3)
Definition screen.cc:844
void BKE_spacetype_register(std::unique_ptr< SpaceType > st)
Definition screen.cc:268
ARegion * BKE_area_find_region_active_win(const ScrArea *area)
Definition screen.cc:828
void(*)(uiList *ui_list, const bContext *C, uiLayout *layout) uiListDrawFilterFunc
void BKE_spacedata_freelist(ListBase *lb)
Definition screen.cc:291
ScrArea * BKE_screen_area_map_find_area_xy(const ScrAreaMap *areamap, int spacetype, const int xy[2]) ATTR_NONNULL(1
MenuTypeFlag
void BKE_screen_view3d_shading_blend_write(BlendWriter *writer, View3DShading *shading)
Definition screen.cc:1048
void BKE_region_callback_free_gizmomap_set(void(*callback)(wmGizmoMap *))
Definition screen.cc:497
void BKE_screen_sort_scrvert(ScrVert **v1, ScrVert **v2)
Definition screen.cc:657
ScrEdge * BKE_screen_find_edge(const bScreen *screen, ScrVert *v1, ScrVert *v2)
Definition screen.cc:645
ScrArea ScrArea * BKE_screen_find_area_xy(const bScreen *screen, int spacetype, const int xy[2]) ATTR_NONNULL(1
ARegion ARegion ScrArea std::optional< std::string > BKE_screen_path_from_screen_to_space(const PointerRNA *ptr)
Definition screen.cc:883
void BKE_spacedata_callback_id_remap_set(void(*func)(ScrArea *area, SpaceLink *sl, ID *old_id, ID *new_id))
Definition screen.cc:447
void BKE_screen_area_free(ScrArea *area)
Definition screen.cc:607
bool BKE_spacetype_exists(int spaceid)
Definition screen.cc:280
LayoutPanelState * BKE_panel_layout_panel_state_ensure(Panel *panel, const char *idname, bool default_closed)
Definition screen.cc:502
void(*)(uiList *ui_list, wmRegionListenerParams *params) uiListListener
void BKE_screen_area_map_free(ScrAreaMap *area_map) ATTR_NONNULL()
Definition screen.cc:623
SpaceType * BKE_spacetype_from_id(int spaceid)
Definition screen.cc:243
ARegionType * BKE_regiontype_from_id(const SpaceType *st, int regionid)
Definition screen.cc:253
void BKE_screen_header_alignment_reset(bScreen *screen)
Definition screen.cc:1018
ARegion * BKE_region_find_in_listbase_by_type(const ListBase *regionbase, const int region_type)
Definition screen.cc:804
void BKE_spacedata_id_unref(ScrArea *area, SpaceLink *sl, ID *id)
Definition screen.cc:452
void BKE_area_region_free(SpaceType *st, ARegion *region)
Definition screen.cc:563
ScrArea * BKE_screen_find_big_area(const bScreen *screen, int spacetype, short min)
Definition screen.cc:903
blender::Span< std::unique_ptr< SpaceType > > BKE_spacetypes_list()
Definition screen.cc:263
bool BKE_screen_is_fullscreen_area(const bScreen *screen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Definition screen.cc:1008
bool BKE_screen_area_map_blend_read_data(BlendDataReader *reader, ScrAreaMap *area_map)
Definition screen.cc:1359
void BKE_screen_view3d_scene_sync(bScreen *screen, Scene *scene)
Definition screen.cc:963
void BKE_panel_free(Panel *panel)
Definition screen.cc:529
ARegion ARegion * BKE_screen_find_main_region_at_xy(const bScreen *screen, int space_type, const int xy[2]) ATTR_NONNULL(1
void BKE_screen_remove_double_scredges(bScreen *screen)
Definition screen.cc:718
void BKE_region_callback_refresh_tag_gizmomap_set(void(*callback)(wmGizmoMap *))
Definition screen.cc:464
void BKE_screen_runtime_refresh_for_blendfile(bScreen *screen)
Definition screen.cc:484
float BKE_screen_view3d_zoom_to_fac(float camzoom)
Definition screen.cc:998
ARegion * BKE_screen_find_region_xy(const bScreen *screen, int regiontype, const int xy[2]) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
Panel * BKE_panel_new(PanelType *panel_type)
Definition screen.cc:518
void BKE_screen_view3d_shading_init(View3DShading *shading)
Definition screen.cc:976
ARegion * BKE_area_find_region_type(const ScrArea *area, int region_type)
Definition screen.cc:815
ARegion * BKE_area_region_copy(const SpaceType *st, const ARegion *region)
Definition screen.cc:335
void BKE_screen_view3d_sync(View3D *v3d, Scene *scene)
Definition screen.cc:945
void(*)(uiList *ui_list, const bContext *C, uiLayout *layout, PointerRNA *dataptr, PointerRNA *itemptr, int icon, PointerRNA *active_dataptr, const char *active_propname, int index, int flt_flag) uiListDrawItemFunc
void BKE_area_region_panels_free(ListBase *panels)
Definition screen.cc:551
void BKE_screen_view3d_do_versions_250(View3D *v3d, ListBase *regions)
Definition screen.cc:1265
void BKE_screen_free_data(bScreen *screen)
Definition screen.cc:634
@ PANEL_TYPE_NO_HEADER
@ PANEL_TYPE_INSTANCED
@ PANEL_TYPE_DEFAULT_CLOSED
@ PANEL_TYPE_LAYOUT_VERT_BAR
@ PANEL_TYPE_NO_SEARCH
@ PANEL_TYPE_HEADER_EXPAND
void BKE_screen_foreach_id_screen_area(LibraryForeachIDData *data, ScrArea *area)
Definition screen.cc:84
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
#define ENUM_OPERATORS(_type, _max)
#define C
Definition RandGen.cpp:29
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
const char * label
DEGForeachIDComponentCallback callback
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
#define min(a, b)
Definition sort.c:32
bool(* poll)(const RegionPollParams *params)
void(* exit)(wmWindowManager *wm, ARegion *region)
void(* free)(ARegion *)
void(* on_poll_success)(const bContext *C, ARegion *region)
bool clip_gizmo_events_by_ui
void(* keymap)(wmKeyConfig *keyconf)
void(* message_subscribe)(const wmRegionMessageSubscribeParams *params)
ARegionType * next
void(* listener)(const wmRegionListenerParams *params)
void(* on_view2d_changed)(const bContext *C, ARegion *region)
ListBase drawcalls
ListBase headertypes
bContextDataCallback context
void(* draw)(const bContext *C, ARegion *region)
void(* layout)(const bContext *C, ARegion *region)
ARegionType * prev
short event_cursor
void(* on_user_resize)(const ARegion *region)
ListBase paneltypes
void(* draw_overlay)(const bContext *C, ARegion *region)
int(* snap_size)(const ARegion *region, int size, int axis)
void(* init)(wmWindowManager *wm, ARegion *region)
void(* operatortypes)()
short default_preview_size
std::string activate_operator
char idname[BKE_ST_MAXNAME]
void(* draw_context_menu)(const bContext *C, const AssetShelfType *shelf_type, const blender::asset_system::AssetRepresentation *asset, uiLayout *layout)
bool(* poll)(const bContext *C, const AssetShelfType *shelf_type)
AssetShelfTypeFlag flag
bool(* asset_poll)(const AssetShelfType *shelf_type, const blender::asset_system::AssetRepresentation *asset)
ExtensionRNA rna_ext
HeaderType * next
void(* draw)(const bContext *C, Header *header)
char idname[BKE_ST_MAXNAME]
HeaderType * prev
bool(* poll)(const bContext *C, HeaderType *ht)
ExtensionRNA rna_ext
uiLayout * layout
HeaderType * type
Definition DNA_ID.h:413
PointerRNA open_owner_ptr
std::string open_prop_name
blender::Vector< LayoutPanelBody > bodies
blender::Vector< LayoutPanelHeader > headers
MenuTypeFlag flag
const char * description
MenuType * next
ExtensionRNA rna_ext
uiLayout * layout
MenuType * type
ExtensionRNA rna_ext
void(* set_list_data_expand_flag)(const bContext *C, Panel *pa, short expand_flag)
void(* draw)(const bContext *C, Panel *panel)
short region_type
PanelType * prev
char idname[BKE_ST_MAXNAME]
bool(* poll)(const bContext *C, PanelType *pt)
char pin_to_last_property[BKE_ST_MAXNAME]
void(* listener)(const wmRegionListenerParams *params)
short space_type
char translation_context[BKE_ST_MAXNAME]
char owner_id[128]
char active_property[BKE_ST_MAXNAME]
ListBase children
char category[BKE_ST_MAXNAME]
blender::float2 offset_units_xy
void(* draw_header_preset)(const bContext *C, Panel *panel)
char label[BKE_ST_MAXNAME]
short(* get_list_data_expand_flag)(const bContext *C, Panel *pa)
char parent_id[BKE_ST_MAXNAME]
PanelType * parent
void(* draw_header)(const bContext *C, Panel *panel)
PanelType * next
const char * description
uiBlock * block
PointerRNA * custom_data_ptr
LayoutPanels layout_panels
const ARegion * region
const bContext * context
const bScreen * screen
const ScrArea * area
ListBase regiontypes
void(* id_remap)(ScrArea *area, SpaceLink *sl, const blender::bke::id::IDRemapper &mappings)
void(* free)(SpaceLink *sl)
Definition BKE_screen.hh:84
void(* blend_read_data)(BlendDataReader *reader, SpaceLink *space_link)
void(* refresh)(const bContext *C, ScrArea *area)
Definition BKE_screen.hh:97
void(* operatortypes)()
int(* space_subtype_get)(ScrArea *area)
void(* keymap)(wmKeyConfig *keyconf)
int(* space_icon_get)(const ScrArea *area)
void(* exit)(wmWindowManager *wm, ScrArea *area)
Definition BKE_screen.hh:89
void(* init)(wmWindowManager *wm, ScrArea *area)
Definition BKE_screen.hh:87
void(* blend_read_after_liblink)(BlendLibReader *reader, ID *parent_id, SpaceLink *space_link)
void(* space_subtype_item_extend)(bContext *C, EnumPropertyItem **item, int *totitem)
void(* listener)(const wmSpaceTypeListenerParams *params)
Definition BKE_screen.hh:91
void(* deactivate)(ScrArea *area)
Definition BKE_screen.hh:94
blender::StringRefNull(* space_name_get)(const ScrArea *area)
bContextDataCallback context
void(* dropboxes)()
~SpaceType()
Definition screen.cc:209
void(* gizmos)()
void(* space_subtype_set)(ScrArea *area, int value)
void(* blend_write)(BlendWriter *writer, SpaceLink *space_link)
void(* foreach_id)(SpaceLink *space_link, LibraryForeachIDData *data)
char idname[BKE_ST_MAXNAME]
uiListFilterItemsFunc filter_items
ExtensionRNA rna_ext
uiListDrawFilterFunc draw_filter
uiListType * prev
uiListType * next
uiListDrawItemFunc draw_item
uiListListener listener
const wmNotifier * notifier
const wmNotifier * notifier
Definition BKE_screen.hh:71
int xy[2]
Definition wm_draw.cc:170
PointerRNA * ptr
Definition wm_files.cc:4126