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:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user