Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-03-22 05:38:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2011-03-22 05:38:39 +0300
commit2299d674f43e6ce9a872f30517fa6dfdeef75cc1 (patch)
treebfd3cb7dbfadb2f31d1d937f069a97f1b31804fa /source
parenta503713d6ca238119a57d0c86d79480aeccf5642 (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesdna/DNA_windowmanager_types.h3
-rw-r--r--source/blender/python/intern/bpy_operator.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c3
3 files changed, 5 insertions, 3 deletions
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);