Cleanup: WindowManager: Move to IDTypeInfo and remove unused WM API.

Getting rid of one static 'registered' callback in BKE, yeah!
This commit is contained in:
Bastien Montagne
2020-03-09 11:17:37 +01:00
parent f881162f81
commit 0de5156a24
8 changed files with 27 additions and 17 deletions

View File

@@ -151,7 +151,7 @@ extern IDTypeInfo IDType_ID_NT;
extern IDTypeInfo IDType_ID_BR;
// extern IDTypeInfo IDType_ID_PA;
// extern IDTypeInfo IDType_ID_GD;
// extern IDTypeInfo IDType_ID_WM;
extern IDTypeInfo IDType_ID_WM;
// extern IDTypeInfo IDType_ID_MC;
// extern IDTypeInfo IDType_ID_MSK;
// extern IDTypeInfo IDType_ID_LS;

View File

@@ -103,11 +103,9 @@ void BKE_libblock_relink_ex(struct Main *bmain,
void BKE_libblock_relink_to_newid(struct ID *id) ATTR_NONNULL();
typedef void (*BKE_library_free_window_manager_cb)(struct bContext *, struct wmWindowManager *);
typedef void (*BKE_library_free_notifier_reference_cb)(const void *);
typedef void (*BKE_library_remap_editor_id_reference_cb)(struct ID *, struct ID *);
void BKE_library_callback_free_window_manager_set(BKE_library_free_window_manager_cb func);
void BKE_library_callback_free_notifier_reference_set(BKE_library_free_notifier_reference_cb func);
void BKE_library_callback_remap_editor_id_reference_set(
BKE_library_remap_editor_id_reference_cb func);

View File

@@ -78,7 +78,7 @@ static void id_type_init(void)
INIT_TYPE(ID_BR);
// INIT_TYPE(ID_PA);
// INIT_TYPE(ID_GD);
// INIT_TYPE(ID_WM);
INIT_TYPE(ID_WM);
// INIT_TYPE(ID_MC);
// INIT_TYPE(ID_MSK);
// INIT_TYPE(ID_LS);

View File

@@ -217,9 +217,7 @@ void BKE_libblock_free_datablock(ID *id, const int UNUSED(flag))
BKE_particlesettings_free((ParticleSettings *)id);
break;
case ID_WM:
if (free_windowmanager_cb) {
free_windowmanager_cb(NULL, (wmWindowManager *)id);
}
BLI_assert(0);
break;
case ID_GD:
BKE_gpencil_free((bGPdata *)id, true);

View File

@@ -24,8 +24,6 @@
#ifndef __LIB_INTERN_H__
#define __LIB_INTERN_H__
extern BKE_library_free_window_manager_cb free_windowmanager_cb;
extern BKE_library_free_notifier_reference_cb free_notifier_reference_cb;
extern BKE_library_remap_editor_id_reference_cb remap_editor_id_reference_cb;

View File

@@ -48,13 +48,6 @@
static CLG_LogRef LOG = {.identifier = "bke.lib_remap"};
BKE_library_free_window_manager_cb free_windowmanager_cb = NULL;
void BKE_library_callback_free_window_manager_set(BKE_library_free_window_manager_cb func)
{
free_windowmanager_cb = func;
}
BKE_library_free_notifier_reference_cb free_notifier_reference_cb = NULL;
void BKE_library_callback_free_notifier_reference_set(BKE_library_free_notifier_reference_cb func)

View File

@@ -37,9 +37,12 @@
#include "BLI_utildefines.h"
#include "BLI_blenlib.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_idprop.h"
#include "BKE_idtype.h"
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_report.h"
@@ -62,6 +65,27 @@
/* ****************************************************** */
static void window_manager_free_data(ID *id)
{
wm_close_and_free(NULL, (wmWindowManager *)id);
}
IDTypeInfo IDType_ID_WM = {
.id_code = ID_WM,
.id_filter = 0,
.main_listbase_index = INDEX_ID_WM,
.struct_size = sizeof(wmWindowManager),
.name = "WindowManager",
.name_plural = "window_managers",
.translation_context = BLT_I18NCONTEXT_ID_WINDOWMANAGER,
.flags = IDTYPE_FLAGS_NO_COPY | IDTYPE_FLAGS_NO_LIBLINKING | IDTYPE_FLAGS_NO_MAKELOCAL,
.init_data = NULL,
.copy_data = NULL,
.free_data = window_manager_free_data,
.make_local = NULL,
};
#define MAX_OP_REGISTERED 32
void WM_operator_free(wmOperator *op)

View File

@@ -247,7 +247,6 @@ void WM_init(bContext *C, int argc, const char **argv)
ED_undosys_type_init();
BKE_library_callback_free_window_manager_set(wm_close_and_free); /* lib_id.c */
BKE_library_callback_free_notifier_reference_set(
WM_main_remove_notifier_reference); /* lib_id.c */
BKE_region_callback_free_gizmomap_set(wm_gizmomap_remove); /* screen.c */