From 613a0ad6510c07c8a164dc4799eb64be8a5fb777 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 11 Oct 2023 11:48:37 +0200 Subject: [PATCH] Cleanup: move panel runtime data out of dna header --- source/blender/blenkernel/BKE_screen.hh | 23 +++++++++++++++++++ source/blender/makesdna/DNA_screen_types.h | 26 ++-------------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/source/blender/blenkernel/BKE_screen.hh b/source/blender/blenkernel/BKE_screen.hh index 97ccfbabbfd..8cf5e7d2352 100644 --- a/source/blender/blenkernel/BKE_screen.hh +++ b/source/blender/blenkernel/BKE_screen.hh @@ -339,6 +339,29 @@ enum { PANEL_TYPE_NO_SEARCH = (1 << 7), }; +typedef struct Panel_Runtime { + /* Applied to Panel.ofsx, but saved separately so we can track changes between redraws. */ + int region_ofsx; + + char _pad[4]; + + /** + * Pointer for storing which data the panel corresponds to. + * Useful when there can be multiple instances of the same panel type. + * + * \note A panel and its sub-panels share the same custom data pointer. + * This avoids freeing the same pointer twice when panels are removed. + */ + struct PointerRNA *custom_data_ptr; + + /* Pointer to the panel's block. Useful when changes to panel #uiBlocks + * need some context from traversal of the panel "tree". */ + struct uiBlock *block; + + /* Non-owning pointer. The context is stored in the block. */ + struct bContextStore *context; +} Panel_Runtime; + /* #uiList types. */ /** Draw an item in the `ui_list`. */ diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index 9d300fd3799..ce35081c048 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -31,6 +31,7 @@ struct uiList; struct wmDrawBuffer; struct wmTimer; struct wmTooltipState; +struct Panel_Runtime; /* TODO: Doing this is quite ugly :) * Once the top-bar is merged bScreen should be refactored to use ScrAreaMap. */ @@ -120,29 +121,6 @@ typedef struct ScrAreaMap { ListBase areabase; } ScrAreaMap; -typedef struct Panel_Runtime { - /* Applied to Panel.ofsx, but saved separately so we can track changes between redraws. */ - int region_ofsx; - - char _pad[4]; - - /** - * Pointer for storing which data the panel corresponds to. - * Useful when there can be multiple instances of the same panel type. - * - * \note A panel and its sub-panels share the same custom data pointer. - * This avoids freeing the same pointer twice when panels are removed. - */ - struct PointerRNA *custom_data_ptr; - - /* Pointer to the panel's block. Useful when changes to panel #uiBlocks - * need some context from traversal of the panel "tree". */ - struct uiBlock *block; - - /* Non-owning pointer. The context is stored in the block. */ - struct bContextStore *context; -} Panel_Runtime; - /** The part from uiBlock that needs saved in file. */ typedef struct Panel { struct Panel *next, *prev; @@ -172,7 +150,7 @@ typedef struct Panel { /** Sub panels. */ ListBase children; - Panel_Runtime *runtime; + struct Panel_Runtime *runtime; } Panel; /**