diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-01-09 09:50:52 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-01-09 09:50:52 +0300 |
commit | f681e9ea4988940e0d23ec818f21f3af5e9a7222 (patch) | |
tree | 12f36e602fde408f95c5d0bfc015766469aa0373 /source/blender/editors/uvedit/uvedit_ops.c | |
parent | ce5a5b553d382f269e35d12d1ff9f92be8190a34 (diff) |
Fix UV gizmos poll failing with multiple objects
Only the active objects UV selection was checked.
This also avoids checking UV selection for every poll call,
now this is only done on refresh.
Diffstat (limited to 'source/blender/editors/uvedit/uvedit_ops.c')
-rw-r--r-- | source/blender/editors/uvedit/uvedit_ops.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 2b26151af86..5be3f676658 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -755,14 +755,25 @@ bool ED_uvedit_center_multi(const Scene *scene, return changed; } -bool ED_uvedit_center_from_pivot( - SpaceImage *sima, Scene *scene, ViewLayer *view_layer, float r_center[2], char mode) +bool ED_uvedit_center_from_pivot_ex(SpaceImage *sima, + Scene *scene, + ViewLayer *view_layer, + float r_center[2], + char mode, + bool *r_has_select) { bool changed = false; switch (mode) { case V3D_AROUND_CURSOR: { copy_v2_v2(r_center, sima->cursor); changed = true; + if (r_has_select != NULL) { + uint objects_len = 0; + Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( + view_layer, ((View3D *)NULL), &objects_len); + *r_has_select = uv_select_is_any_selected_multi(scene, sima->image, objects, objects_len); + MEM_freeN(objects); + } break; } default: { @@ -771,12 +782,21 @@ bool ED_uvedit_center_from_pivot( view_layer, ((View3D *)NULL), &objects_len); changed = ED_uvedit_center_multi(scene, sima->image, objects, objects_len, r_center, mode); MEM_freeN(objects); + if (r_has_select != NULL) { + *r_has_select = changed; + } break; } } return changed; } +bool ED_uvedit_center_from_pivot( + SpaceImage *sima, Scene *scene, ViewLayer *view_layer, float r_center[2], char mode) +{ + return ED_uvedit_center_from_pivot_ex(sima, scene, view_layer, r_center, mode, NULL); +} + /** \} */ /* -------------------------------------------------------------------- */ |