From 2299d674f43e6ce9a872f30517fa6dfdeef75cc1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Mar 2011 02:38:39 +0000 Subject: operators called from python were not getting their reports back into python errors. eg: - console calls operator - operator calls report - report went into header rather them back into the console as an error. --- source/blender/makesdna/DNA_windowmanager_types.h | 3 ++- source/blender/python/intern/bpy_operator.c | 2 +- source/blender/windowmanager/intern/wm_event_system.c | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) (limited to 'source') diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 958c9cffc84..3072c2c3430 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -85,7 +85,8 @@ typedef enum ReportType { enum ReportListFlags { RPT_PRINT = 1, RPT_STORE = 2, - RPT_FREE = 4 + RPT_FREE = 4, + RPT_OP_HOLD = 8 /* dont move them into the operator global list (caller will use) */ }; # # diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c index a116aa0e9c0..ebe6e05ee43 100644 --- a/source/blender/python/intern/bpy_operator.c +++ b/source/blender/python/intern/bpy_operator.c @@ -195,7 +195,7 @@ static PyObject *pyop_call(PyObject *UNUSED(self), PyObject *args) ReportList *reports; reports= MEM_mallocN(sizeof(ReportList), "wmOperatorReportList"); - BKE_reports_init(reports, RPT_STORE); + BKE_reports_init(reports, RPT_STORE | RPT_OP_HOLD); /* own so these dont move into global reports */ operator_ret= WM_operator_call_py(C, ot, context, &ptr, reports); diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 20f9a4b7a51..15964b8c1e5 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -453,7 +453,8 @@ static void wm_operator_reports(bContext *C, wmOperator *op, int retval, int pop } } - if (op->reports->list.first) { + /* if the caller owns them them handle this */ + if (op->reports->list.first && (op->reports->flag & RPT_OP_HOLD) == 0) { wmWindowManager *wm = CTX_wm_manager(C); ReportList *wm_reports= CTX_wm_reports(C); -- cgit v1.2.3