Fix Adjust Last Operation popup for operators relying on button context
This was reported for duplicating particle systems, then using F9 to enable the 'Duplicate Settings' option (see T83317). In this case, the operator gets the particle_system from (buttons) context and if none can get found will duplicate all settings instead. The reason why none gets found here is that buttons_context() doesnt have a valid path when called from F9/SCREEN_OT_redo_last, path is cleared when global undo does a file-read which clears the path (see lib_link_workspace_layout_restore). It can be recomputed though to be valid even from redo_last (at least when in the Properties Editor). This was likely causing other operators (relying on buttons context) from the Properties Editor to fail as well. Fixes T83317 Maniphest Tasks: T83317 Differential Revision: https://developer.blender.org/D9825
This commit is contained in:
parent
ffe63b0440
commit
3834dc2f7b
Notes:
blender-bot
2024-03-25 12:30:38 +01:00
Referenced by commit f9308a585e
, Fix particle system duplication duplicates all systems
Referenced by issue #83317, Hair particles duplication with duplicate settings enabled copies all the particles instead of one selected
|
@ -826,6 +826,11 @@ int /*eContextResult*/ buttons_context(const bContext *C,
|
|||
bContextDataResult *result)
|
||||
{
|
||||
SpaceProperties *sbuts = CTX_wm_space_properties(C);
|
||||
if (sbuts && sbuts->path == NULL) {
|
||||
/* path is cleared for SCREEN_OT_redo_last, when global undo does a file-read which clears the
|
||||
* path (see lib_link_workspace_layout_restore). */
|
||||
buttons_context_compute(C, sbuts);
|
||||
}
|
||||
ButsContextPath *path = sbuts ? sbuts->path : NULL;
|
||||
|
||||
if (!path) {
|
||||
|
|
Loading…
Reference in New Issue