From fa6261e53acbfa930665292a3c74ea1948565a72 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Fri, 25 Aug 2023 20:23:29 +0200 Subject: [PATCH 1/4] Fix error in own previous fix (56781c80b7) --- source/blender/editors/screen/screen_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index b5551710a83..85613e39c7c 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3183,7 +3183,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) static bool keyframe_jump_poll(bContext *C) { /* There is a keyframe jump operator specifically for the Graph Editor. */ - return ED_operator_screenactive_norender(C) && ED_operator_graphedit_active(C); + return ED_operator_screenactive_norender(C) && !ED_operator_graphedit_active(C); } static void SCREEN_OT_keyframe_jump(wmOperatorType *ot) -- 2.30.2 From 8eafc4e1d4052eec7dfdbbd979403d91ca41d1d7 Mon Sep 17 00:00:00 2001 From: Pratik Borhade Date: Fri, 15 Sep 2023 13:21:08 +0200 Subject: [PATCH 2/4] Fix #101550: Transfer Mode operator doesn't update outliner selection Notifiers was sent to outliner for redraw but outliner was out of sync due to missing flag which is required for syncing. This will correctly set the select/active outliner element flags with the help of Base in `outliner_select_sync_from_object`. So correct active tree element will be highlighted in `outliner_draw_highlights` Pull Request: https://projects.blender.org/blender/blender/pulls/112370 --- source/blender/editors/object/object_modes.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/blender/editors/object/object_modes.cc b/source/blender/editors/object/object_modes.cc index 66ecf468f70..12ef175cc30 100644 --- a/source/blender/editors/object/object_modes.cc +++ b/source/blender/editors/object/object_modes.cc @@ -46,6 +46,7 @@ #include "ED_transform_snap_object_context.h" #include "ED_undo.h" #include "ED_view3d.h" +#include "ED_outliner.h" #include "WM_toolsystem.h" @@ -475,6 +476,8 @@ static bool object_transfer_mode_to_base(bContext *C, wmOperator *op, Base *base } WM_event_add_notifier(C, NC_SCENE | ND_OB_SELECT, scene); + ED_outliner_select_sync_from_object_tag(C); + WM_toolsystem_update_from_context_view3d(C); mode_transferred = true; } -- 2.30.2 From a5c5ec6052ec6df8112a7c39ecc45215054894fd Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Fri, 15 Sep 2023 17:41:44 +0200 Subject: [PATCH 3/4] Fix #112397: modifiers.execution_time doesn't work on curve objects The `ScopedModifierTimer` would work for "real" curve modifiers, but was skipping geometry node modifiers. Now move it up so geometry node modifiers are included. Pull Request: https://projects.blender.org/blender/blender/pulls/112420 --- source/blender/blenkernel/intern/displist.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/displist.cc b/source/blender/blenkernel/intern/displist.cc index 8f6f6652d36..8d49e0f9a04 100644 --- a/source/blender/blenkernel/intern/displist.cc +++ b/source/blender/blenkernel/intern/displist.cc @@ -731,13 +731,13 @@ static GeometrySet curve_calc_modifiers_post(Depsgraph *depsgraph, continue; } + blender::bke::ScopedModifierTimer modifier_timer{*md}; + if (md->type == eModifierType_Nodes) { mti->modifyGeometrySet(md, &mectx_apply, &geometry_set); continue; } - blender::bke::ScopedModifierTimer modifier_timer{*md}; - if (!geometry_set.has_mesh()) { geometry_set.replace_mesh(BKE_mesh_new_nomain(0, 0, 0, 0)); } -- 2.30.2 From d9ab0a3ef7fd378128578967560510a0198f9639 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 15 Sep 2023 12:23:42 +1000 Subject: [PATCH 4/4] Fix #112399: Memory leak with exceptions from scripts in the text editor Regression in [0] caused the function to jump to the error in the text editor not to restore the exception, using the trace-back being iterated over instead of the original value. [0]: 2d2baeaf04d481f284bc2f098fb6d7ee9268151f --- source/blender/python/intern/bpy_traceback.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/blender/python/intern/bpy_traceback.c b/source/blender/python/intern/bpy_traceback.c index 1466d674384..f36a89a96e4 100644 --- a/source/blender/python/intern/bpy_traceback.c +++ b/source/blender/python/intern/bpy_traceback.c @@ -216,12 +216,12 @@ bool python_script_error_jump( else { PyErr_NormalizeException(&exception, &value, (PyObject **)&tb); - for (tb = (PyTracebackObject *)PySys_GetObject("last_traceback"); - tb && (PyObject *)tb != Py_None; - tb = tb->tb_next) + for (PyTracebackObject *tb_iter = (PyTracebackObject *)PySys_GetObject("last_traceback"); + tb_iter && (PyObject *)tb_iter != Py_None; + tb_iter = tb_iter->tb_next) { PyObject *coerce; - const char *tb_filepath = traceback_filepath(tb, &coerce); + const char *tb_filepath = traceback_filepath(tb_iter, &coerce); const int match = ((BLI_path_cmp(tb_filepath, filepath) == 0) || (ELEM(tb_filepath[0], '\\', '/') && BLI_path_cmp(tb_filepath + 1, filepath) == 0)); @@ -229,7 +229,7 @@ bool python_script_error_jump( if (match) { success = true; - *r_lineno = *r_lineno_end = tb->tb_lineno; + *r_lineno = *r_lineno_end = tb_iter->tb_lineno; /* used to break here, but better find the inner most line */ } } -- 2.30.2