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>2020-01-09 09:50:52 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-01-09 09:50:52 +0300
commitf681e9ea4988940e0d23ec818f21f3af5e9a7222 (patch)
tree12f36e602fde408f95c5d0bfc015766469aa0373 /source/blender/editors/uvedit
parentce5a5b553d382f269e35d12d1ff9f92be8190a34 (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')
-rw-r--r--source/blender/editors/uvedit/uvedit_ops.c24
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);
+}
+
/** \} */
/* -------------------------------------------------------------------- */