From 083b6af9ac6542009dfa7f05dbb2d2d639e40381 Mon Sep 17 00:00:00 2001 From: Pratyaksh Date: Wed, 8 Feb 2023 17:53:49 +0530 Subject: [PATCH] Added WM api to handle Paneype parent/child relationships --- .../windowmanager/intern/wm_panel_type.c | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/blender/windowmanager/intern/wm_panel_type.c b/source/blender/windowmanager/intern/wm_panel_type.c index 860b53c1071..cfd13dd619f 100644 --- a/source/blender/windowmanager/intern/wm_panel_type.c +++ b/source/blender/windowmanager/intern/wm_panel_type.c @@ -11,6 +11,7 @@ */ #include +#include #include "BLI_sys_types.h" @@ -23,6 +24,14 @@ #include "WM_api.h" + +typedef struct PanelType { + char idname[64]; + char label[64]; + struct PanelType *parent; + ListBase children; +} PanelType; + static GHash *g_paneltypes_hash = NULL; PanelType *WM_paneltype_find(const char *idname, bool quiet) @@ -44,11 +53,22 @@ PanelType *WM_paneltype_find(const char *idname, bool quiet) bool WM_paneltype_add(PanelType *pt) { BLI_ghash_insert(g_paneltypes_hash, pt->idname, pt); + + if (pt->parent) { + BLI_addtail(&pt->parent->children, pt); + } + return true; } void WM_paneltype_remove(PanelType *pt) { + + + if (pt->parent) { + BLI_remlink(&pt->parent->children, pt); + } + const bool ok = BLI_ghash_remove(g_paneltypes_hash, pt->idname, NULL, NULL); BLI_assert(ok); -- 2.30.2