WM: clear operator memory on file load
Was causing problems when opening scenes with different scale set.
This commit is contained in:
@@ -230,6 +230,7 @@ void WM_operatortype_append_ptr(void (*opfunc)(struct wmOperatorType *, void *)
|
||||
void WM_operatortype_append_macro_ptr(void (*opfunc)(struct wmOperatorType *, void *), void *userdata);
|
||||
void WM_operatortype_remove_ptr(struct wmOperatorType *ot);
|
||||
bool WM_operatortype_remove(const char *idname);
|
||||
void WM_operatortype_last_properties_clear_all(void);
|
||||
|
||||
struct wmOperatorType *WM_operatortype_append_macro(const char *idname, const char *name, const char *description, int flag);
|
||||
struct wmOperatorTypeMacro *WM_operatortype_macro_define(struct wmOperatorType *ot, const char *idname);
|
||||
|
||||
@@ -476,6 +476,8 @@ bool WM_file_read(bContext *C, const char *filepath, ReportList *reports)
|
||||
BPY_python_reset(C);
|
||||
#endif
|
||||
|
||||
WM_operatortype_last_properties_clear_all();
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
@@ -668,6 +670,8 @@ int wm_homefile_read(bContext *C, ReportList *reports, bool from_memory, const c
|
||||
}
|
||||
#endif
|
||||
|
||||
WM_operatortype_last_properties_clear_all();
|
||||
|
||||
/* important to do before NULL'ing the context */
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_VERSION_UPDATE);
|
||||
BLI_callback_exec(CTX_data_main(C), NULL, BLI_CB_EVT_LOAD_POST);
|
||||
|
||||
@@ -494,6 +494,27 @@ bool WM_operatortype_remove(const char *idname)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove memory of all previously executed tools.
|
||||
*/
|
||||
void WM_operatortype_last_properties_clear_all(void)
|
||||
{
|
||||
GHashIterator iter;
|
||||
|
||||
for (WM_operatortype_iter(&iter);
|
||||
(!BLI_ghashIterator_done(&iter));
|
||||
(BLI_ghashIterator_step(&iter)))
|
||||
{
|
||||
wmOperatorType *ot = BLI_ghashIterator_getValue(&iter);
|
||||
|
||||
if (ot->last_properties) {
|
||||
IDP_FreeProperty(ot->last_properties);
|
||||
MEM_freeN(ot->last_properties);
|
||||
ot->last_properties = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* SOME_OT_op -> some.op */
|
||||
void WM_operator_py_idname(char *to, const char *from)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user