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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-01-16 10:03:15 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-01-16 10:03:15 +0300
commitfd80b83e8e5850d34dcddea44d80547c3685c344 (patch)
tree7e0b54827beb67dd82ed30e490268793fb50b05b /source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
parent873a87c7e8f96e3f6785d90144182356b3fef7cd (diff)
Manipulator: Support tweak removing the manipulator
Diffstat (limited to 'source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c')
-rw-r--r--source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
index c4220aa3a5d..2bd218298e6 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_group.c
@@ -308,6 +308,7 @@ void MANIPULATORGROUP_OT_manipulator_select(wmOperatorType *ot)
typedef struct ManipulatorTweakData {
wmManipulatorMap *mmap;
+ wmManipulatorGroup *mgroup;
wmManipulator *mpr_modal;
int init_event; /* initial event type */
@@ -375,7 +376,12 @@ static void manipulator_tweak_finish(bContext *C, wmOperator *op, const bool can
mtweak->mpr_modal->type->exit(C, mtweak->mpr_modal, cancel);
}
if (clear_modal) {
- wm_manipulatormap_modal_set(mtweak->mmap, C, mtweak->mpr_modal, NULL, false);
+ /* The manipulator may have been removed. */
+ if ((BLI_findindex(&mtweak->mmap->groups, mtweak->mgroup) != -1) &&
+ (BLI_findindex(&mtweak->mgroup->manipulators, mtweak->mpr_modal) != -1))
+ {
+ wm_manipulatormap_modal_set(mtweak->mmap, C, mtweak->mpr_modal, NULL, false);
+ }
}
MEM_freeN(mtweak);
}
@@ -537,6 +543,7 @@ static int manipulator_tweak_invoke(bContext *C, wmOperator *op, const wmEvent *
mtweak->init_event = WM_userdef_event_type_from_keymap_type(event->type);
mtweak->mpr_modal = mmap->mmap_context.highlight;
+ mtweak->mgroup = mtweak->mpr_modal->parent_mgroup;
mtweak->mmap = mmap;
mtweak->flag = 0;