UV: remove "UV Local View" for UV editing
authorCampbell Barton <ideasman42@gmail.com>
Fri, 22 May 2020 11:56:04 +0000 (21:56 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 22 May 2020 12:18:32 +0000 (22:18 +1000)
This feature was added when Blender used tex-face (per-face images),
but doesn't make as much sense since this was removed.

Removing this from UV edit-mode as this wasn't working in any
of the 2.8x releases, causing UV's to be visible but unselectable.

Resolves issue raised in T76958.

release/scripts/startup/bl_ui/space_image.py
source/blender/editors/include/ED_uvedit.h
source/blender/editors/sculpt_paint/sculpt_uv.c
source/blender/editors/space_image/image_ops.c
source/blender/editors/transform/transform_convert_mesh.c
source/blender/editors/transform/transform_gizmo_2d.c
source/blender/editors/transform/transform_snap.c
source/blender/editors/uvedit/uvedit_buttons.c
source/blender/editors/uvedit/uvedit_intern.h
source/blender/editors/uvedit/uvedit_ops.c
source/blender/editors/uvedit/uvedit_smart_stitch.c

index 4506307067e4a33ce84cd5388f626bc8a84b415a..3aac56d9f0e64109fdc87da2428d5f37c5d6eb76 100644 (file)
@@ -93,9 +93,6 @@ class IMAGE_MT_view(Menu):
         layout.separator()
 
         layout.prop(sima, "use_realtime_update")
-        if show_uvedit:
-            layout.prop(tool_settings, "show_uv_local_view")
-
         layout.prop(uv, "show_metadata")
 
         if paint.brush and (context.image_paint_object or sima.mode == 'PAINT'):
index 8c565536c712d7fb45ed05cae05080cd8eb55f2b..f656aaf9c074296069d0f4e1d2d6f2d544b60668 100644 (file)
@@ -50,20 +50,17 @@ void ED_operatortypes_uvedit(void);
 void ED_keymap_uvedit(struct wmKeyConfig *keyconf);
 
 bool ED_uvedit_minmax(const struct Scene *scene,
-                      struct Image *ima,
                       struct Object *obedit,
                       float min[2],
                       float max[2]);
 void ED_uvedit_select_all(struct BMesh *bm);
 
 bool ED_uvedit_minmax_multi(const struct Scene *scene,
-                            struct Image *ima,
                             struct Object **objects_edit,
                             uint objects_len,
                             float r_min[2],
                             float r_max[2]);
 bool ED_uvedit_center_multi(const struct Scene *scene,
-                            Image *ima,
                             struct Object **objects_edit,
                             uint objects_len,
                             float r_cent[2],
@@ -95,11 +92,7 @@ void ED_object_assign_active_image(struct Main *bmain,
 bool ED_uvedit_test(struct Object *obedit);
 
 /* visibility and selection */
-bool uvedit_face_visible_nolocal_ex(const struct ToolSettings *ts, struct BMFace *efa);
-bool uvedit_face_visible_test_ex(const struct ToolSettings *ts,
-                                 struct Object *obedit,
-                                 struct Image *ima,
-                                 struct BMFace *efa);
+bool uvedit_face_visible_test_ex(const struct ToolSettings *ts, struct BMFace *efa);
 bool uvedit_face_select_test_ex(const struct ToolSettings *ts,
                                 struct BMFace *efa,
                                 const int cd_loop_uv_offset);
@@ -110,11 +103,7 @@ bool uvedit_uv_select_test_ex(const struct ToolSettings *ts,
                               struct BMLoop *l,
                               const int cd_loop_uv_offset);
 
-bool uvedit_face_visible_nolocal(const struct Scene *scene, struct BMFace *efa);
-bool uvedit_face_visible_test(const struct Scene *scene,
-                              struct Object *obedit,
-                              struct Image *ima,
-                              struct BMFace *efa);
+bool uvedit_face_visible_test(const struct Scene *scene, struct BMFace *efa);
 bool uvedit_face_select_test(const struct Scene *scene,
                              struct BMFace *efa,
                              const int cd_loop_uv_offset);
@@ -175,12 +164,10 @@ void uvedit_uv_select_disable(struct BMEditMesh *em,
 
 bool ED_uvedit_nearest_uv(const struct Scene *scene,
                           struct Object *obedit,
-                          struct Image *ima,
                           const float co[2],
                           float *dist_sq,
                           float r_uv[2]);
 bool ED_uvedit_nearest_uv_multi(const struct Scene *scene,
-                                struct Image *ima,
                                 struct Object **objects,
                                 const uint objects_len,
                                 const float co[2],
index 0a5814be626d7d20181c417b2e167a9bb7b3092a..a81de36fbc47444baaf54cb077999ede470ca843 100644 (file)
@@ -548,8 +548,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, const wm
     if (do_island_optimization) {
       UvElement *element;
       UvNearestHit hit = UV_NEAREST_HIT_INIT;
-      Image *ima = CTX_data_edit_image(C);
-      uv_find_nearest_vert(scene, ima, obedit, co, 0.0f, &hit);
+      uv_find_nearest_vert(scene, obedit, co, 0.0f, &hit);
 
       element = BM_uv_element_get(data->elementMap, hit.efa, hit.l);
       island_index = element->island;
index c2054756795c4278eb2a30cc39751f8bf838c5d2..7889e56ecfe93aa2f257b844dd8536e83a7f94a0 100644 (file)
@@ -885,7 +885,6 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
   Scene *scene;
   ViewLayer *view_layer;
   Object *obedit;
-  Image *ima;
 
   /* retrieve state */
   sima = CTX_wm_space_image(C);
@@ -894,15 +893,13 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
   view_layer = CTX_data_view_layer(C);
   obedit = CTX_data_edit_object(C);
 
-  ima = ED_space_image(sima);
-
   /* get bounds */
   float min[2], max[2];
   if (ED_space_image_show_uvedit(sima, obedit)) {
     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);
-    bool success = ED_uvedit_minmax_multi(scene, ima, objects, objects_len, min, max);
+    bool success = ED_uvedit_minmax_multi(scene, objects, objects_len, min, max);
     MEM_freeN(objects);
     if (!success) {
       return OPERATOR_CANCELLED;
index 7528f7911305cccb0b0a2e8eecc188ce95ffec73..2bb5b25c949abffe89c7a5ef8354578433170a18 100644 (file)
@@ -1450,7 +1450,6 @@ static void UVsToTransData(const float aspect[2],
 void createTransUVs(bContext *C, TransInfo *t)
 {
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   Scene *scene = t->scene;
   ToolSettings *ts = CTX_data_tool_settings(C);
 
@@ -1500,7 +1499,7 @@ void createTransUVs(bContext *C, TransInfo *t)
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
       BMLoop *l;
 
-      if (!uvedit_face_visible_test(scene, tc->obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         BM_elem_flag_disable(efa, BM_ELEM_TAG);
         continue;
       }
index 50317d8b395fa434f58fd43b8c11f0283c92859d..c63e90ac2b757091b18275c5430e2bb3360dd199 100644 (file)
@@ -217,14 +217,12 @@ static bool gizmo2d_calc_bounds(const bContext *C, float *r_center, float *r_min
   ScrArea *area = CTX_wm_area(C);
   bool changed = false;
   if (area->spacetype == SPACE_IMAGE) {
-    SpaceImage *sima = area->spacedata.first;
     Scene *scene = CTX_data_scene(C);
     ViewLayer *view_layer = CTX_data_view_layer(C);
-    Image *ima = ED_space_image(sima);
     uint objects_len = 0;
     Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
         view_layer, NULL, &objects_len);
-    if (ED_uvedit_minmax_multi(scene, ima, objects, objects_len, r_min, r_max)) {
+    if (ED_uvedit_minmax_multi(scene, objects, objects_len, r_min, r_max)) {
       changed = true;
     }
     MEM_freeN(objects);
index cb4446deb99a7ed61f664f3e37c81928a981c3c7..154af6c8ae2533ac43c603515ff248bd0ab8149f 100644 (file)
@@ -1106,7 +1106,6 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec))
   }
   else if (t->spacetype == SPACE_IMAGE && t->obedit_type == OB_MESH) {
     if (t->tsnap.mode & SCE_SNAP_MODE_VERTEX) {
-      Image *ima = ED_space_image(t->area->spacedata.first);
       float co[2];
 
       UI_view2d_region_to_view(&t->region->v2d, t->mval[0], t->mval[1], &co[0], &co[1]);
@@ -1117,7 +1116,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec))
 
       float dist_sq = FLT_MAX;
       if (ED_uvedit_nearest_uv_multi(
-              t->scene, ima, objects, objects_len, co, &dist_sq, t->tsnap.snapPoint)) {
+              t->scene, objects, objects_len, co, &dist_sq, t->tsnap.snapPoint)) {
         t->tsnap.snapPoint[0] *= t->aspect[0];
         t->tsnap.snapPoint[1] *= t->aspect[1];
 
index c072220842e0373b9034216004e07e9ecd0f6d60..edfbfd0cdc3eb9e070351c257c626bcfac25ace3 100644 (file)
@@ -58,8 +58,7 @@
 
 /* UV Utilities */
 
-static int uvedit_center(
-    Scene *scene, Object **objects, uint objects_len, Image *ima, float center[2])
+static int uvedit_center(Scene *scene, Object **objects, uint objects_len, float center[2])
 {
   BMFace *f;
   BMLoop *l;
@@ -75,7 +74,7 @@ static int uvedit_center(
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, f)) {
+      if (!uvedit_face_visible_test(scene, f)) {
         continue;
       }
 
@@ -97,8 +96,10 @@ static int uvedit_center(
   return tot;
 }
 
-static void uvedit_translate(
-    Scene *scene, Object **objects, uint objects_len, Image *ima, const float delta[2])
+static void uvedit_translate(Scene *scene,
+                             Object **objects,
+                             uint objects_len,
+                             const float delta[2])
 {
   BMFace *f;
   BMLoop *l;
@@ -112,7 +113,7 @@ static void uvedit_translate(
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, f)) {
+      if (!uvedit_face_visible_test(scene, f)) {
         continue;
       }
 
@@ -134,7 +135,6 @@ static void uvedit_vertex_buttons(const bContext *C, uiBlock *block)
 {
   SpaceImage *sima = CTX_wm_space_image(C);
   Scene *scene = CTX_data_scene(C);
-  Image *ima = sima->image;
   float center[2];
   int imx, imy, step, digits;
   float width = 8 * UI_UNIT_X;
@@ -144,7 +144,7 @@ static void uvedit_vertex_buttons(const bContext *C, uiBlock *block)
 
   ED_space_image_get_size(sima, &imx, &imy);
 
-  if (uvedit_center(scene, objects, objects_len, ima, center)) {
+  if (uvedit_center(scene, objects, objects_len, center)) {
     float range_xy[2][2] = {
         {-10.0f, 10.0f},
         {-10.0f, 10.0f},
@@ -212,7 +212,6 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
 {
   SpaceImage *sima = CTX_wm_space_image(C);
   Scene *scene = CTX_data_scene(C);
-  Image *ima = sima->image;
   float center[2], delta[2];
   int imx, imy;
 
@@ -225,7 +224,7 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
       CTX_data_view_layer(C), CTX_wm_view3d(C), &objects_len);
 
   ED_space_image_get_size(sima, &imx, &imy);
-  uvedit_center(scene, objects, objects_len, ima, center);
+  uvedit_center(scene, objects, objects_len, center);
 
   if (sima->flag & SI_COORDFLOATS) {
     delta[0] = uvedit_old_center[0] - center[0];
@@ -236,7 +235,7 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
     delta[1] = uvedit_old_center[1] / imy - center[1];
   }
 
-  uvedit_translate(scene, objects, objects_len, ima, delta);
+  uvedit_translate(scene, objects, objects_len, delta);
 
   WM_event_add_notifier(C, NC_IMAGE, sima->image);
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
index 7bc6b048585b7ba2f9de8d0bb40953097767b576..167e8df6fa71fb064f9af5496bedf4a9ce7704cc 100644 (file)
@@ -57,13 +57,11 @@ typedef struct UvNearestHit {
   }
 
 bool uv_find_nearest_vert(struct Scene *scene,
-                          struct Image *ima,
                           struct Object *obedit,
                           const float co[2],
                           const float penalty_dist,
                           struct UvNearestHit *hit_final);
 bool uv_find_nearest_vert_multi(struct Scene *scene,
-                                struct Image *ima,
                                 struct Object **objects,
                                 const uint objects_len,
                                 const float co[2],
@@ -71,24 +69,20 @@ bool uv_find_nearest_vert_multi(struct Scene *scene,
                                 struct UvNearestHit *hit_final);
 
 bool uv_find_nearest_edge(struct Scene *scene,
-                          struct Image *ima,
                           struct Object *obedit,
                           const float co[2],
                           struct UvNearestHit *hit_final);
 bool uv_find_nearest_edge_multi(struct Scene *scene,
-                                struct Image *ima,
                                 struct Object **objects,
                                 const uint objects_len,
                                 const float co[2],
                                 struct UvNearestHit *hit_final);
 
 bool uv_find_nearest_face(struct Scene *scene,
-                          struct Image *ima,
                           struct Object *obedit,
                           const float co[2],
                           struct UvNearestHit *hit_final);
 bool uv_find_nearest_face_multi(struct Scene *scene,
-                                struct Image *ima,
                                 struct Object **objects,
                                 const uint objects_len,
                                 const float co[2],
index e169222380e539aaeb17e25925371bab7652bdd3..49c802131e61bb7cf3547d5a60046bd0e22e8122 100644 (file)
 
 #include "uvedit_intern.h"
 
-static bool uv_select_is_any_selected(Scene *scene, Image *ima, Object *obedit);
+static bool uv_select_is_any_selected(Scene *scene, Object *obedit);
 static bool uv_select_is_any_selected_multi(Scene *scene,
-                                            Image *ima,
                                             Object **objects,
                                             const uint objects_len);
-static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, int action);
-static void uv_select_all_perform_multi(
-    Scene *scene, Image *ima, Object **objects, const uint objects_len, int action);
+static void uv_select_all_perform(Scene *scene, Object *obedit, int action);
+static void uv_select_all_perform_multi(Scene *scene,
+                                        Object **objects,
+                                        const uint objects_len,
+                                        int action);
 static void uv_select_flush_from_tag_face(SpaceImage *sima,
                                           Scene *scene,
                                           Object *obedit,
@@ -265,7 +266,7 @@ static void uvedit_vertex_select_tagged(BMEditMesh *em,
   }
 }
 
-bool uvedit_face_visible_nolocal_ex(const ToolSettings *ts, BMFace *efa)
+bool uvedit_face_visible_test_ex(const ToolSettings *ts, BMFace *efa)
 {
   if (ts->uv_flag & UV_SYNC_SELECTION) {
     return (BM_elem_flag_test(efa, BM_ELEM_HIDDEN) == 0);
@@ -274,25 +275,10 @@ bool uvedit_face_visible_nolocal_ex(const ToolSettings *ts, BMFace *efa)
     return (BM_elem_flag_test(efa, BM_ELEM_HIDDEN) == 0 && BM_elem_flag_test(efa, BM_ELEM_SELECT));
   }
 }
-bool uvedit_face_visible_nolocal(const Scene *scene, BMFace *efa)
-{
-  return uvedit_face_visible_nolocal_ex(scene->toolsettings, efa);
-}
 
-bool uvedit_face_visible_test_ex(const ToolSettings *ts, Object *obedit, Image *ima, BMFace *efa)
-{
-  if (ts->uv_flag & UV_SHOW_SAME_IMAGE) {
-    Image *face_image;
-    ED_object_get_active_image(obedit, efa->mat_nr + 1, &face_image, NULL, NULL, NULL);
-    return (face_image == ima) ? uvedit_face_visible_nolocal_ex(ts, efa) : false;
-  }
-  else {
-    return uvedit_face_visible_nolocal_ex(ts, efa);
-  }
-}
-bool uvedit_face_visible_test(const Scene *scene, Object *obedit, Image *ima, BMFace *efa)
+bool uvedit_face_visible_test(const Scene *scene, BMFace *efa)
 {
-  return uvedit_face_visible_test_ex(scene->toolsettings, obedit, ima, efa);
+  return uvedit_face_visible_test_ex(scene->toolsettings, efa);
 }
 
 bool uvedit_face_select_test_ex(const ToolSettings *ts, BMFace *efa, const int cd_loop_uv_offset)
@@ -301,17 +287,14 @@ bool uvedit_face_select_test_ex(const ToolSettings *ts, BMFace *efa, const int c
     return (BM_elem_flag_test(efa, BM_ELEM_SELECT));
   }
   else {
-    BMLoop *l;
-    MLoopUV *luv;
-    BMIter liter;
-
-    BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
-      luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
+    BMLoop *l_iter, *l_first;
+    l_iter = l_first = BM_FACE_FIRST_LOOP(efa);
+    do {
+      MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l_iter, cd_loop_uv_offset);
       if (!(luv->flag & MLOOPUV_VERTSEL)) {
         return false;
       }
-    }
-
+    } while ((l_iter = l_iter->next) != l_first);
     return true;
   }
 }
@@ -630,12 +613,8 @@ void uv_poly_copy_aspect(float uv_orig[][2], float uv[][2], float aspx, float as
   }
 }
 
-bool ED_uvedit_minmax_multi(const Scene *scene,
-                            Image *ima,
-                            Object **objects_edit,
-                            uint objects_len,
-                            float r_min[2],
-                            float r_max[2])
+bool ED_uvedit_minmax_multi(
+    const Scene *scene, Object **objects_edit, uint objects_len, float r_min[2], float r_max[2])
 {
   bool changed = false;
   INIT_MINMAX2(r_min, r_max);
@@ -652,7 +631,7 @@ bool ED_uvedit_minmax_multi(const Scene *scene,
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -668,10 +647,9 @@ bool ED_uvedit_minmax_multi(const Scene *scene,
   return changed;
 }
 
-bool ED_uvedit_minmax(
-    const Scene *scene, Image *ima, Object *obedit, float r_min[2], float r_max[2])
+bool ED_uvedit_minmax(const Scene *scene, Object *obedit, float r_min[2], float r_max[2])
 {
-  return ED_uvedit_minmax_multi(scene, ima, &obedit, 1, r_min, r_max);
+  return ED_uvedit_minmax_multi(scene, &obedit, 1, r_min, r_max);
 }
 
 /* Be careful when using this, it bypasses all synchronization options */
@@ -692,8 +670,10 @@ void ED_uvedit_select_all(BMesh *bm)
   }
 }
 
-static bool ED_uvedit_median_multi(
-    const Scene *scene, Image *ima, Object **objects_edit, uint objects_len, float co[2])
+static bool ED_uvedit_median_multi(const Scene *scene,
+                                   Object **objects_edit,
+                                   uint objects_len,
+                                   float co[2])
 {
   uint sel = 0;
   zero_v2(co);
@@ -710,7 +690,7 @@ static bool ED_uvedit_median_multi(
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -729,24 +709,20 @@ static bool ED_uvedit_median_multi(
   return (sel != 0);
 }
 
-bool ED_uvedit_center_multi(const Scene *scene,
-                            Image *ima,
-                            Object **objects_edit,
-                            uint objects_len,
-                            float cent[2],
-                            char mode)
+bool ED_uvedit_center_multi(
+    const Scene *scene, Object **objects_edit, uint objects_len, float cent[2], char mode)
 {
   bool changed = false;
 
   if (mode == V3D_AROUND_CENTER_BOUNDS) { /* bounding box */
     float min[2], max[2];
-    if (ED_uvedit_minmax_multi(scene, ima, objects_edit, objects_len, min, max)) {
+    if (ED_uvedit_minmax_multi(scene, objects_edit, objects_len, min, max)) {
       mid_v2_v2v2(cent, min, max);
       changed = true;
     }
   }
   else {
-    if (ED_uvedit_median_multi(scene, ima, objects_edit, objects_len, cent)) {
+    if (ED_uvedit_median_multi(scene, objects_edit, objects_len, cent)) {
       changed = true;
     }
   }
@@ -770,7 +746,7 @@ bool ED_uvedit_center_from_pivot_ex(SpaceImage *sima,
         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);
+        *r_has_select = uv_select_is_any_selected_multi(scene, objects, objects_len);
         MEM_freeN(objects);
       }
       break;
@@ -779,7 +755,7 @@ bool ED_uvedit_center_from_pivot_ex(SpaceImage *sima,
       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);
-      changed = ED_uvedit_center_multi(scene, sima->image, objects, objects_len, r_center, mode);
+      changed = ED_uvedit_center_multi(scene, objects, objects_len, r_center, mode);
       MEM_freeN(objects);
       if (r_has_select != NULL) {
         *r_has_select = changed;
@@ -802,8 +778,7 @@ bool ED_uvedit_center_from_pivot(
 /** \name Find Nearest Elements
  * \{ */
 
-bool uv_find_nearest_edge(
-    Scene *scene, Image *ima, Object *obedit, const float co[2], UvNearestHit *hit)
+bool uv_find_nearest_edge(Scene *scene, Object *obedit, const float co[2], UvNearestHit *hit)
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMFace *efa;
@@ -818,7 +793,7 @@ bool uv_find_nearest_edge(
   BM_mesh_elem_index_ensure(em->bm, BM_VERT);
 
   BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+    if (!uvedit_face_visible_test(scene, efa)) {
       continue;
     }
     BM_ITER_ELEM_INDEX (l, &liter, efa, BM_LOOPS_OF_FACE, i) {
@@ -844,7 +819,6 @@ bool uv_find_nearest_edge(
 }
 
 bool uv_find_nearest_edge_multi(Scene *scene,
-                                Image *ima,
                                 Object **objects,
                                 const uint objects_len,
                                 const float co[2],
@@ -853,7 +827,7 @@ bool uv_find_nearest_edge_multi(Scene *scene,
   bool found = false;
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    if (uv_find_nearest_edge(scene, ima, obedit, co, hit_final)) {
+    if (uv_find_nearest_edge(scene, obedit, co, hit_final)) {
       hit_final->ob = obedit;
       found = true;
     }
@@ -861,8 +835,7 @@ bool uv_find_nearest_edge_multi(Scene *scene,
   return found;
 }
 
-bool uv_find_nearest_face(
-    Scene *scene, Image *ima, Object *obedit, const float co[2], UvNearestHit *hit_final)
+bool uv_find_nearest_face(Scene *scene, Object *obedit, const float co[2], UvNearestHit *hit_final)
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   bool found = false;
@@ -872,7 +845,7 @@ bool uv_find_nearest_face(
   /* this will fill in hit.vert1 and hit.vert2 */
   float dist_sq_init = hit_final->dist_sq;
   UvNearestHit hit = *hit_final;
-  if (uv_find_nearest_edge(scene, ima, obedit, co, &hit)) {
+  if (uv_find_nearest_edge(scene, obedit, co, &hit)) {
     hit.dist_sq = dist_sq_init;
     hit.l = NULL;
     hit.luv = hit.luv_next = NULL;
@@ -881,7 +854,7 @@ bool uv_find_nearest_face(
     BMFace *efa;
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -904,7 +877,6 @@ bool uv_find_nearest_face(
 }
 
 bool uv_find_nearest_face_multi(Scene *scene,
-                                Image *ima,
                                 Object **objects,
                                 const uint objects_len,
                                 const float co[2],
@@ -913,7 +885,7 @@ bool uv_find_nearest_face_multi(Scene *scene,
   bool found = false;
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    if (uv_find_nearest_face(scene, ima, obedit, co, hit_final)) {
+    if (uv_find_nearest_face(scene, obedit, co, hit_final)) {
       hit_final->ob = obedit;
       found = true;
     }
@@ -932,7 +904,6 @@ static bool uv_nearest_between(const BMLoop *l, const float co[2], const int cd_
 }
 
 bool uv_find_nearest_vert(Scene *scene,
-                          Image *ima,
                           Object *obedit,
                           float const co[2],
                           const float penalty_dist,
@@ -943,7 +914,7 @@ bool uv_find_nearest_vert(Scene *scene,
   /* this will fill in hit.vert1 and hit.vert2 */
   float dist_sq_init = hit_final->dist_sq;
   UvNearestHit hit = *hit_final;
-  if (uv_find_nearest_edge(scene, ima, obedit, co, &hit)) {
+  if (uv_find_nearest_edge(scene, obedit, co, &hit)) {
     hit.dist_sq = dist_sq_init;
 
     hit.l = NULL;
@@ -958,7 +929,7 @@ bool uv_find_nearest_vert(Scene *scene,
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -1004,7 +975,6 @@ bool uv_find_nearest_vert(Scene *scene,
 }
 
 bool uv_find_nearest_vert_multi(Scene *scene,
-                                Image *ima,
                                 Object **objects,
                                 const uint objects_len,
                                 float const co[2],
@@ -1014,7 +984,7 @@ bool uv_find_nearest_vert_multi(Scene *scene,
   bool found = false;
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    if (uv_find_nearest_vert(scene, ima, obedit, co, penalty_dist, hit_final)) {
+    if (uv_find_nearest_vert(scene, obedit, co, penalty_dist, hit_final)) {
       hit_final->ob = obedit;
       found = true;
     }
@@ -1022,12 +992,8 @@ bool uv_find_nearest_vert_multi(Scene *scene,
   return found;
 }
 
-bool ED_uvedit_nearest_uv(const Scene *scene,
-                          Object *obedit,
-                          Image *ima,
-                          const float co[2],
-                          float *dist_sq,
-                          float r_uv[2])
+bool ED_uvedit_nearest_uv(
+    const Scene *scene, Object *obedit, const float co[2], float *dist_sq, float r_uv[2])
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMIter iter;
@@ -1036,7 +1002,7 @@ bool ED_uvedit_nearest_uv(const Scene *scene,
   float dist_best = *dist_sq;
   const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
   BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+    if (!uvedit_face_visible_test(scene, efa)) {
       continue;
     }
     BMLoop *l_iter, *l_first;
@@ -1062,7 +1028,6 @@ bool ED_uvedit_nearest_uv(const Scene *scene,
 }
 
 bool ED_uvedit_nearest_uv_multi(const Scene *scene,
-                                Image *ima,
                                 Object **objects,
                                 const uint objects_len,
                                 const float co[2],
@@ -1072,7 +1037,7 @@ bool ED_uvedit_nearest_uv_multi(const Scene *scene,
   bool found = false;
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    if (ED_uvedit_nearest_uv(scene, obedit, ima, co, dist_sq, r_uv)) {
+    if (ED_uvedit_nearest_uv(scene, obedit, co, dist_sq, r_uv)) {
       found = true;
     }
   }
@@ -1182,12 +1147,8 @@ static bool uv_select_edgeloop_edge_tag_faces(BMEditMesh *em,
   return true;
 }
 
-static int uv_select_edgeloop(Scene *scene,
-                              Image *ima,
-                              Object *obedit,
-                              UvNearestHit *hit,
-                              const float limit[2],
-                              const bool extend)
+static int uv_select_edgeloop(
+    Scene *scene, Object *obedit, UvNearestHit *hit, const float limit[2], const bool extend)
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMFace *efa;
@@ -1208,7 +1169,7 @@ static int uv_select_edgeloop(Scene *scene,
   BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE);
 
   if (!extend) {
-    uv_select_all_perform(scene, ima, obedit, SEL_DESELECT);
+    uv_select_all_perform(scene, obedit, SEL_DESELECT);
   }
 
   BM_mesh_elem_hflag_disable_all(em->bm, BM_FACE, BM_ELEM_TAG, false);
@@ -1232,8 +1193,7 @@ static int uv_select_edgeloop(Scene *scene,
     /* find correct valence edges which are not tagged yet, but connect to tagged one */
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!BM_elem_flag_test(efa, BM_ELEM_TAG) &&
-          uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!BM_elem_flag_test(efa, BM_ELEM_TAG) && uvedit_face_visible_test(scene, efa)) {
         BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
           /* check face not hidden and not tagged */
           if (!(iterv_curr = uv_select_edgeloop_vertex_map_get(vmap, efa, l))) {
@@ -1295,7 +1255,6 @@ static int uv_select_edgeloop(Scene *scene,
  * \{ */
 
 static void uv_select_linked_multi(Scene *scene,
-                                   Image *ima,
                                    Object **objects,
                                    const uint objects_len,
                                    const float limit[2],
@@ -1345,7 +1304,7 @@ static void uv_select_linked_multi(Scene *scene,
     if (hit_final == NULL) {
       /* Use existing selection */
       BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, a) {
-        if (uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (uvedit_face_visible_test(scene, efa)) {
           if (select_faces) {
             if (BM_elem_flag_test(efa, BM_ELEM_SELECT)) {
               stack[stacksize] = a;
@@ -1484,8 +1443,7 @@ static void uv_select_linked_multi(Scene *scene,
 
 /* WATCH IT: this returns first selected UV,
  * not ideal in many cases since there could be multiple */
-static float *uv_sel_co_from_eve(
-    Scene *scene, Object *obedit, Image *ima, BMEditMesh *em, BMVert *eve)
+static float *uv_sel_co_from_eve(Scene *scene, BMEditMesh *em, BMVert *eve)
 {
   BMIter liter;
   BMLoop *l;
@@ -1493,7 +1451,7 @@ static float *uv_sel_co_from_eve(
   const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
   BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, l->f)) {
+    if (!uvedit_face_visible_test(scene, l->f)) {
       continue;
     }
 
@@ -1516,7 +1474,6 @@ static int uv_select_more_less(bContext *C, const bool select)
 {
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
   SpaceImage *sima = CTX_wm_space_image(C);
 
   BMFace *efa;
@@ -1558,7 +1515,7 @@ static int uv_select_more_less(bContext *C, const bool select)
 
       /* mark loops to be selected */
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (uvedit_face_visible_test(scene, efa)) {
 
 #define IS_SEL 1
 #define IS_UNSEL 2
@@ -1598,7 +1555,7 @@ static int uv_select_more_less(bContext *C, const bool select)
 
       /* mark loops to be selected */
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (uvedit_face_visible_test(scene, efa)) {
           BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
 
             MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l, cd_loop_uv_offset);
@@ -1688,7 +1645,6 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   const ToolSettings *ts = scene->toolsettings;
   const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
   float cent[2], min[2], max[2];
@@ -1715,7 +1671,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
       BMLoop *l;
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
 
@@ -1730,7 +1686,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
     tool = (max[0] - min[0] >= max[1] - min[1]) ? UV_ALIGN_Y : UV_ALIGN_X;
   }
 
-  ED_uvedit_center_multi(scene, ima, objects, objects_len, cent, 0);
+  ED_uvedit_center_multi(scene, objects, objects_len, cent, 0);
 
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
@@ -1749,7 +1705,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
       BMLoop *l;
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
 
@@ -1769,7 +1725,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
       BMLoop *l;
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
 
@@ -1796,7 +1752,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
       /* tag verts with a selected UV */
       BM_ITER_MESH (eve, &iter, em->bm, BM_VERTS_OF_MESH) {
         BM_ITER_ELEM (l, &liter, eve, BM_LOOPS_OF_VERT) {
-          if (!uvedit_face_visible_test(scene, obedit, ima, l->f)) {
+          if (!uvedit_face_visible_test(scene, l->f)) {
             continue;
           }
 
@@ -1866,9 +1822,9 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
         if (BLI_array_len(eve_line) > 2) {
 
           /* we know the returns from these must be valid */
-          const float *uv_start = uv_sel_co_from_eve(scene, obedit, ima, em, eve_line[0]);
+          const float *uv_start = uv_sel_co_from_eve(scene, em, eve_line[0]);
           const float *uv_end = uv_sel_co_from_eve(
-              scene, obedit, ima, em, eve_line[BLI_array_len(eve_line) - 1]);
+              scene, em, eve_line[BLI_array_len(eve_line) - 1]);
           /* For UV_STRAIGHTEN_X & UV_STRAIGHTEN_Y modes */
           float a = 0.0f;
           eUVWeldAlign tool_local = tool;
@@ -1893,7 +1849,7 @@ static void uv_weld_align(bContext *C, eUVWeldAlign tool)
           /* go over all verts except for endpoints */
           for (i = 0; i < BLI_array_len(eve_line); i++) {
             BM_ITER_ELEM (l, &liter, eve_line[i], BM_LOOPS_OF_VERT) {
-              if (!uvedit_face_visible_test(scene, obedit, ima, l->f)) {
+              if (!uvedit_face_visible_test(scene, l->f)) {
                 continue;
               }
 
@@ -2001,7 +1957,6 @@ static int uv_remove_doubles_to_selected(bContext *C, wmOperator *op)
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   const ToolSettings *ts = scene->toolsettings;
 
   const float threshold = RNA_float_get(op->ptr, "threshold");
@@ -2055,7 +2010,7 @@ static int uv_remove_doubles_to_selected(bContext *C, wmOperator *op)
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -2146,7 +2101,6 @@ static int uv_remove_doubles_to_unselected(bContext *C, wmOperator *op)
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   const ToolSettings *ts = scene->toolsettings;
 
   const float threshold = RNA_float_get(op->ptr, "threshold");
@@ -2186,7 +2140,7 @@ static int uv_remove_doubles_to_unselected(bContext *C, wmOperator *op)
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -2219,7 +2173,7 @@ static int uv_remove_doubles_to_unselected(bContext *C, wmOperator *op)
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -2319,7 +2273,7 @@ static void UV_OT_weld(wmOperatorType *ot)
 /** \name (De)Select All Operator
  * \{ */
 
-static bool uv_select_is_any_selected(Scene *scene, Image *ima, Object *obedit)
+static bool uv_select_is_any_selected(Scene *scene, Object *obedit)
 {
   const ToolSettings *ts = scene->toolsettings;
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
@@ -2334,7 +2288,7 @@ static bool uv_select_is_any_selected(Scene *scene, Image *ima, Object *obedit)
   else {
     const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
       BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
@@ -2348,15 +2302,12 @@ static bool uv_select_is_any_selected(Scene *scene, Image *ima, Object *obedit)
   return false;
 }
 
-static bool uv_select_is_any_selected_multi(Scene *scene,
-                                            Image *ima,
-                                            Object **objects,
-                                            const uint objects_len)
+static bool uv_select_is_any_selected_multi(Scene *scene, Object **objects, const uint objects_len)
 {
   bool found = false;
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    if (uv_select_is_any_selected(scene, ima, obedit)) {
+    if (uv_select_is_any_selected(scene, obedit)) {
       found = true;
       break;
     }
@@ -2364,7 +2315,7 @@ static bool uv_select_is_any_selected_multi(Scene *scene,
   return found;
 }
 
-static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, int action)
+static void uv_select_all_perform(Scene *scene, Object *obedit, int action)
 {
   const ToolSettings *ts = scene->toolsettings;
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
@@ -2376,7 +2327,7 @@ static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, int
   const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
   if (action == SEL_TOGGLE) {
-    action = uv_select_is_any_selected(scene, ima, obedit) ? SEL_DESELECT : SEL_SELECT;
+    action = uv_select_is_any_selected(scene, obedit) ? SEL_DESELECT : SEL_SELECT;
   }
 
   if (ts->uv_flag & UV_SYNC_SELECTION) {
@@ -2398,7 +2349,7 @@ static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, int
   }
   else {
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -2421,17 +2372,19 @@ static void uv_select_all_perform(Scene *scene, Image *ima, Object *obedit, int
   }
 }
 
-static void uv_select_all_perform_multi(
-    Scene *scene, Image *ima, Object **objects, const uint objects_len, int action)
+static void uv_select_all_perform_multi(Scene *scene,
+                                        Object **objects,
+                                        const uint objects_len,
+                                        int action)
 {
   if (action == SEL_TOGGLE) {
-    action = uv_select_is_any_selected_multi(scene, ima, objects, objects_len) ? SEL_DESELECT :
-                                                                                 SEL_SELECT;
+    action = uv_select_is_any_selected_multi(scene, objects, objects_len) ? SEL_DESELECT :
+                                                                            SEL_SELECT;
   }
 
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
-    uv_select_all_perform(scene, ima, obedit, action);
+    uv_select_all_perform(scene, obedit, action);
   }
 }
 
@@ -2440,7 +2393,6 @@ static int uv_select_all_exec(bContext *C, wmOperator *op)
   Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
-  Image *ima = CTX_data_edit_image(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
 
   int action = RNA_enum_get(op->ptr, "action");
@@ -2449,7 +2401,7 @@ static int uv_select_all_exec(bContext *C, wmOperator *op)
   Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
       view_layer, ((View3D *)NULL), &objects_len);
 
-  uv_select_all_perform_multi(scene, ima, objects, objects_len, action);
+  uv_select_all_perform_multi(scene, objects, objects_len, action);
 
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
     Object *obedit = objects[ob_index];
@@ -2521,7 +2473,6 @@ static int uv_mouse_select_multi(bContext *C,
   SpaceImage *sima = CTX_wm_space_image(C);
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
-  Image *ima = CTX_data_edit_image(C);
   BMFace *efa;
   BMLoop *l;
   BMIter iter, liter;
@@ -2574,12 +2525,11 @@ static int uv_mouse_select_multi(bContext *C,
   /* find nearest element */
   if (loop) {
     /* find edge */
-    found_item = uv_find_nearest_edge_multi(scene, ima, objects, objects_len, co, &hit);
+    found_item = uv_find_nearest_edge_multi(scene, objects, objects_len, co, &hit);
   }
   else if (selectmode == UV_SELECT_VERTEX) {
     /* find vertex */
-    found_item = uv_find_nearest_vert_multi(
-        scene, ima, objects, objects_len, co, penalty_dist, &hit);
+    found_item = uv_find_nearest_vert_multi(scene, objects, objects_len, co, penalty_dist, &hit);
     found_item = found_item && (!deselect_all || hit.dist_sq < penalty_dist);
 
     if (found_item) {
@@ -2596,7 +2546,7 @@ static int uv_mouse_select_multi(bContext *C,
   }
   else if (selectmode == UV_SELECT_EDGE) {
     /* find edge */
-    found_item = uv_find_nearest_edge_multi(scene, ima, objects, objects_len, co, &hit);
+    found_item = uv_find_nearest_edge_multi(scene, objects, objects_len, co, &hit);
     found_item = found_item && (!deselect_all || hit.dist_sq < penalty_dist);
 
     if (found_item) {
@@ -2615,7 +2565,7 @@ static int uv_mouse_select_multi(bContext *C,
   }
   else if (selectmode == UV_SELECT_FACE) {
     /* find face */
-    found_item = uv_find_nearest_face_multi(scene, ima, objects, objects_len, co, &hit);
+    found_item = uv_find_nearest_face_multi(scene, objects, objects_len, co, &hit);
     found_item = found_item && (!deselect_all || hit.dist_sq < penalty_dist);
 
     if (found_item) {
@@ -2639,13 +2589,13 @@ static int uv_mouse_select_multi(bContext *C,
     }
   }
   else if (selectmode == UV_SELECT_ISLAND) {
-    found_item = uv_find_nearest_edge_multi(scene, ima, objects, objects_len, co, &hit);
+    found_item = uv_find_nearest_edge_multi(scene, objects, objects_len, co, &hit);
     found_item = found_item && (!deselect_all || hit.dist_sq < penalty_dist);
   }
 
   if (!found_item) {
     if (deselect_all) {
-      uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+      uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
 
       for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
         Object *obedit = objects[ob_index];
@@ -2665,19 +2615,18 @@ static int uv_mouse_select_multi(bContext *C,
   if (loop) {
     if (!extend) {
       /* TODO(MULTI_EDIT): We only need to de-select non-active */
-      uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+      uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
     }
-    flush = uv_select_edgeloop(scene, ima, obedit, &hit, limit, extend);
+    flush = uv_select_edgeloop(scene, obedit, &hit, limit, extend);
   }
   else if (selectmode == UV_SELECT_ISLAND) {
     if (!extend) {
       /* TODO(MULTI_EDIT): We only need to de-select non-active */
-      uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+      uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
     }
     /* Current behavior of 'extend'
      * is actually toggling, so pass extend flag as 'toggle' here */
-    uv_select_linked_multi(
-        scene, ima, objects, objects_len, limit, &hit, false, false, extend, false);
+    uv_select_linked_multi(scene, objects, objects_len, limit, &hit, false, false, extend, false);
   }
   else if (extend) {
     if (selectmode == UV_SELECT_VERTEX) {
@@ -2712,7 +2661,7 @@ static int uv_mouse_select_multi(bContext *C,
       BM_mesh_elem_index_ensure(em->bm, BM_VERT);
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
 
@@ -2730,7 +2679,7 @@ static int uv_mouse_select_multi(bContext *C,
   }
   else {
     /* deselect all */
-    uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+    uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
 
     if (selectmode == UV_SELECT_VERTEX) {
       /* select vertex */
@@ -2750,7 +2699,7 @@ static int uv_mouse_select_multi(bContext *C,
     /* select sticky uvs */
     if (sticky != SI_STICKY_DISABLE) {
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
 
@@ -2957,7 +2906,6 @@ static int uv_select_linked_internal(bContext *C, wmOperator *op, const wmEvent
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
   float limit[2];
   bool extend = true;
   bool deselect = false;
@@ -2997,18 +2945,17 @@ static int uv_select_linked_internal(bContext *C, wmOperator *op, const wmEvent
       RNA_float_get_array(op->ptr, "location", co);
     }
 
-    if (!uv_find_nearest_edge_multi(scene, ima, objects, objects_len, co, &hit)) {
+    if (!uv_find_nearest_edge_multi(scene, objects, objects_len, co, &hit)) {
       MEM_freeN(objects);
       return OPERATOR_CANCELLED;
     }
   }
 
   if (!extend) {
-    uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+    uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
   }
 
   uv_select_linked_multi(scene,
-                         ima,
                          objects,
                          objects_len,
                          limit,
@@ -3128,7 +3075,6 @@ static int uv_select_split_exec(bContext *C, wmOperator *op)
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   const ToolSettings *ts = scene->toolsettings;
-  Image *ima = CTX_data_edit_image(C);
 
   BMFace *efa;
   BMLoop *l;
@@ -3158,7 +3104,7 @@ static int uv_select_split_exec(bContext *C, wmOperator *op)
       bool is_sel = false;
       bool is_unsel = false;
 
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -3498,7 +3444,6 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
   ARegion *region = CTX_wm_region(C);
   BMFace *efa;
   BMLoop *l;
@@ -3529,7 +3474,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
       view_layer, ((View3D *)NULL), &objects_len);
 
   if (use_pre_deselect) {
-    uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+    uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
   }
 
   /* don't indent to avoid diff noise! */
@@ -3550,7 +3495,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
         /* assume not touched */
         BM_elem_flag_disable(efa, BM_ELEM_TAG);
 
-        if (uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (uvedit_face_visible_test(scene, efa)) {
           uv_poly_center(efa, cent, cd_loop_uv_offset);
           if (BLI_rctf_isect_pt_v(&rectf, cent)) {
             BM_elem_flag_enable(efa, BM_ELEM_TAG);
@@ -3570,7 +3515,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
       BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT, BM_ELEM_TAG, false);
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
         bool has_selected = false;
@@ -3599,7 +3544,7 @@ static int uv_box_select_exec(bContext *C, wmOperator *op)
               .efa = efa,
           };
           uv_select_linked_multi(
-              scene, ima, objects, objects_len, limit, &hit, true, !select, false, false);
+              scene, objects, objects_len, limit, &hit, true, !select, false, false);
         }
       }
 
@@ -3664,7 +3609,6 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
 {
   Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   const ToolSettings *ts = scene->toolsettings;
@@ -3709,7 +3653,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
   const bool use_pre_deselect = SEL_OP_USE_PRE_DESELECT(sel_op);
 
   if (use_pre_deselect) {
-    uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+    uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
   }
 
   for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
@@ -3744,7 +3688,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
       BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT, BM_ELEM_TAG, false);
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
         bool has_selected = false;
@@ -3765,7 +3709,7 @@ static int uv_circle_select_exec(bContext *C, wmOperator *op)
               .efa = efa,
           };
           uv_select_linked_multi(
-              scene, ima, objects, objects_len, limit, &hit, true, !select, false, false);
+              scene, objects, objects_len, limit, &hit, true, !select, false, false);
         }
       }
 
@@ -3821,7 +3765,6 @@ static bool do_lasso_select_mesh_uv(bContext *C,
 {
   Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   ARegion *region = CTX_wm_region(C);
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
@@ -3849,7 +3792,7 @@ static bool do_lasso_select_mesh_uv(bContext *C,
       view_layer, ((View3D *)NULL), &objects_len);
 
   if (use_pre_deselect) {
-    uv_select_all_perform_multi(scene, ima, objects, objects_len, SEL_DESELECT);
+    uv_select_all_perform_multi(scene, objects, objects_len, SEL_DESELECT);
   }
 
   /* don't indent to avoid diff noise! */
@@ -3890,7 +3833,7 @@ static bool do_lasso_select_mesh_uv(bContext *C,
       BM_mesh_elem_hflag_disable_all(em->bm, BM_VERT, BM_ELEM_TAG, false);
 
       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-        if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+        if (!uvedit_face_visible_test(scene, efa)) {
           continue;
         }
         bool has_selected = false;
@@ -3915,7 +3858,7 @@ static bool do_lasso_select_mesh_uv(bContext *C,
               .efa = efa,
           };
           uv_select_linked_multi(
-              scene, ima, objects, objects_len, limit, &hit, true, !select, false, false);
+              scene, objects, objects_len, limit, &hit, true, !select, false, false);
         }
       }
 
@@ -3992,10 +3935,12 @@ static void uv_snap_cursor_to_pixels(SpaceImage *sima)
   uv_snap_to_pixel(sima->cursor, width, height);
 }
 
-static bool uv_snap_cursor_to_selection(
-    Scene *scene, Image *ima, Object **objects_edit, uint objects_len, SpaceImage *sima)
+static bool uv_snap_cursor_to_selection(Scene *scene,
+                                        Object **objects_edit,
+                                        uint objects_len,
+                                        SpaceImage *sima)
 {
-  return ED_uvedit_center_multi(scene, ima, objects_edit, objects_len, sima->cursor, sima->around);
+  return ED_uvedit_center_multi(scene, objects_edit, objects_len, sima->cursor, sima->around);
 }
 
 static int uv_snap_cursor_exec(bContext *C, wmOperator *op)
@@ -4011,13 +3956,12 @@ static int uv_snap_cursor_exec(bContext *C, wmOperator *op)
       break;
     case 1: {
       Scene *scene = CTX_data_scene(C);
-      Image *ima = CTX_data_edit_image(C);
       ViewLayer *view_layer = CTX_data_view_layer(C);
 
       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);
-      changed = uv_snap_cursor_to_selection(scene, ima, objects, objects_len, sima);
+      changed = uv_snap_cursor_to_selection(scene, objects, objects_len, sima);
       MEM_freeN(objects);
       break;
     }
@@ -4061,7 +4005,7 @@ static void UV_OT_snap_cursor(wmOperatorType *ot)
 /** \name Snap Selection Operator
  * \{ */
 
-static bool uv_snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, const float cursor[2])
+static bool uv_snap_uvs_to_cursor(Scene *scene, Object *obedit, const float cursor[2])
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMFace *efa;
@@ -4073,7 +4017,7 @@ static bool uv_snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, cons
   const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
   BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+    if (!uvedit_face_visible_test(scene, efa)) {
       continue;
     }
 
@@ -4089,7 +4033,7 @@ static bool uv_snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, cons
   return changed;
 }
 
-static bool uv_snap_uvs_offset(Scene *scene, Image *ima, Object *obedit, const float offset[2])
+static bool uv_snap_uvs_offset(Scene *scene, Object *obedit, const float offset[2])
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMFace *efa;
@@ -4101,7 +4045,7 @@ static bool uv_snap_uvs_offset(Scene *scene, Image *ima, Object *obedit, const f
   const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
   BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+    if (!uvedit_face_visible_test(scene, efa)) {
       continue;
     }
 
@@ -4117,7 +4061,7 @@ static bool uv_snap_uvs_offset(Scene *scene, Image *ima, Object *obedit, const f
   return changed;
 }
 
-static bool uv_snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object *obedit)
+static bool uv_snap_uvs_to_adjacent_unselected(Scene *scene, Object *obedit)
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
   BMesh *bm = em->bm;
@@ -4131,7 +4075,7 @@ static bool uv_snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object
   /* index every vert that has a selected UV using it, but only once so as to
    * get unique indices and to count how much to malloc */
   BM_ITER_MESH (f, &iter, bm, BM_FACES_OF_MESH) {
-    if (uvedit_face_visible_test(scene, obedit, ima, f)) {
+    if (uvedit_face_visible_test(scene, f)) {
       BM_elem_flag_enable(f, BM_ELEM_TAG);
       BM_ITER_ELEM (l, &liter, f, BM_LOOPS_OF_FACE) {
         BM_elem_flag_set(l, BM_ELEM_TAG, uvedit_uv_select_test(scene, l, cd_loop_uv_offset));
@@ -4175,7 +4119,6 @@ static bool uv_snap_uvs_to_adjacent_unselected(Scene *scene, Image *ima, Object
 static bool uv_snap_uvs_to_pixels(SpaceImage *sima, Scene *scene, Object *obedit)
 {
   BMEditMesh *em = BKE_editmesh_from_object(obedit);
-  Image *ima = sima->image;
   BMFace *efa;
   BMLoop *l;
   BMIter iter, liter;
@@ -4191,7 +4134,7 @@ static bool uv_snap_uvs_to_pixels(SpaceImage *sima, Scene *scene, Object *obedit
   h = (float)height;
 
   BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-    if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+    if (!uvedit_face_visible_test(scene, efa)) {
       continue;
     }
 
@@ -4213,7 +4156,6 @@ static int uv_snap_selection_exec(bContext *C, wmOperator *op)
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = CTX_data_edit_image(C);
   const ToolSettings *ts = scene->toolsettings;
   const bool synced_selection = (ts->uv_flag & UV_SYNC_SELECTION) != 0;
   const int target = RNA_enum_get(op->ptr, "target");
@@ -4225,7 +4167,7 @@ static int uv_snap_selection_exec(bContext *C, wmOperator *op)
 
   if (target == 2) {
     float center[2];
-    if (!ED_uvedit_center_multi(scene, ima, objects, objects_len, center, sima->around)) {
+    if (!ED_uvedit_center_multi(scene, objects, objects_len, center, sima->around)) {
       MEM_freeN(objects);
       return OPERATOR_CANCELLED;
     }
@@ -4247,13 +4189,13 @@ static int uv_snap_selection_exec(bContext *C, wmOperator *op)
         changed = uv_snap_uvs_to_pixels(sima, scene, obedit);
         break;
       case 1:
-        changed = uv_snap_uvs_to_cursor(scene, ima, obedit, sima->cursor);
+        changed = uv_snap_uvs_to_cursor(scene, obedit, sima->cursor);
         break;
       case 2:
-        changed = uv_snap_uvs_offset(scene, ima, obedit, offset);
+        changed = uv_snap_uvs_offset(scene, obedit, offset);
         break;
       case 3:
-        changed = uv_snap_uvs_to_adjacent_unselected(scene, ima, obedit);
+        changed = uv_snap_uvs_to_adjacent_unselected(scene, obedit);
         break;
     }
 
@@ -4304,7 +4246,6 @@ static int uv_pin_exec(bContext *C, wmOperator *op)
 {
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
   BMFace *efa;
   BMLoop *l;
   BMIter iter, liter;
@@ -4329,7 +4270,7 @@ static int uv_pin_exec(bContext *C, wmOperator *op)
     }
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -4388,7 +4329,6 @@ static int uv_select_pinned_exec(bContext *C, wmOperator *UNUSED(op))
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
   BMFace *efa;
   BMLoop *l;
   BMIter iter, liter;
@@ -4406,7 +4346,7 @@ static int uv_select_pinned_exec(bContext *C, wmOperator *UNUSED(op))
     bool changed = false;
 
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test(scene, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -4480,7 +4420,6 @@ static int uv_select_overlap(bContext *C, const bool extend)
   Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  Image *ima = CTX_data_edit_image(C);
 
   uint objects_len = 0;
   Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
@@ -4496,13 +4435,13 @@ static int uv_select_overlap(bContext *C, const bool extend)
     BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE);
     BM_mesh_elem_hflag_disable_all(em->bm, BM_FACE, BM_ELEM_TAG, false);
     if (!extend) {
-      uv_select_all_perform(scene, ima, obedit, SEL_DESELECT);
+      uv_select_all_perform(scene, obedit, SEL_DESELECT);
     }
 
     BMIter iter;
     BMFace *efa;
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-      if (!uvedit_face_visible_test_ex(scene->toolsettings, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test_ex(scene->toolsettings, efa)) {
         continue;
       }
       uv_tri_len += efa->len - 2;
@@ -4533,7 +4472,7 @@ static int uv_select_overlap(bContext *C, const bool extend)
     int face_index;
     BM_ITER_MESH_INDEX (efa, &iter, em->bm, BM_FACES_OF_MESH, face_index) {
 
-      if (!uvedit_face_visible_test_ex(scene->toolsettings, obedit, ima, efa)) {
+      if (!uvedit_face_visible_test_ex(scene->toolsettings, efa)) {
         continue;
       }
 
@@ -4715,11 +4654,9 @@ static bool bm_face_is_all_uv_sel(BMFace *f, bool select_test, const int cd_loop
 static int uv_hide_exec(bContext *C, wmOperator *op)
 {
   ViewLayer *view_layer = CTX_data_view_layer(C);
-  SpaceImage *sima = CTX_wm_space_image(C);
   Scene *scene = CTX_data_scene(C);
   const ToolSettings *ts = scene->toolsettings;
   const bool swap = RNA_boolean_get(op->ptr, "unselected");
-  Image *ima = sima ? sima->image : NULL;
   const int use_face_center = (ts->uv_selectmode == UV_SELECT_FACE);
 
   uint objects_len = 0;
@@ -4746,7 +4683,7 @@ static int uv_hide_exec(bContext *C, wmOperator *op)
     BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
       int hide = 0;
 
-      if (!uvedit_face_visible_test(scene, ob, ima, efa)) {
+      if (!uvedit_face_visible_test(scene, efa)) {
         continue;
       }
 
@@ -5220,8 +5157,6 @@ static void UV_OT_seams_from_islands(wmOperatorType *ot)
 
 static int uv_mark_seam_exec(bContext *C, wmOperator *op)
 {
-  SpaceImage *sima = CTX_wm_space_image(C);
-  Image *ima = sima ? sima->image : NULL;
   Scene *scene = CTX_data_scene(C);
   ViewLayer *view_layer = CTX_data_view_layer(C);
   const ToolSettings *ts = scene->toolsettings;
@@ -5252,7 +5187,7 @@ static int uv_mark_seam_exec(bContext *C, wmOperator *op)
     const int cd_loop_uv_offset = CustomData_get_offset(&bm->ldata, CD_MLOOPUV);
 
     BM_ITER_MESH (efa, &iter, bm, BM_FACES_OF_MESH) {
-      if (uvedit_face_visible_test(scene, ob, ima, efa)) {
+      if (uvedit_face_visible_test(scene, efa)) {
         BM_ITER_ELEM (loop, &liter, efa, BM_LOOPS_OF_FACE) {
           if (uvedit_edge_select_test(scene, loop, cd_loop_uv_offset)) {
             BM_elem_flag_set(loop->e, BM_ELEM_SEAM, flag_set);
index 3a4f12acf9c0747da1668f347d575eb00a37b52c..594847b7249577426377ecd90c00a6f0d436604f 100644 (file)
@@ -2550,12 +2550,11 @@ static StitchState *stitch_select(bContext *C,
   float co[2];
   UvNearestHit hit = UV_NEAREST_HIT_INIT;
   ARegion *region = CTX_wm_region(C);
-  Image *ima = CTX_data_edit_image(C);
 
   UI_view2d_region_to_view(&region->v2d, event->mval[0], event->mval[1], &co[0], &co[1]);
 
   if (ssc->mode == STITCH_VERT) {
-    if (uv_find_nearest_vert_multi(scene, ima, ssc->objects, ssc->objects_len, co, 0.0f, &hit)) {
+    if (uv_find_nearest_vert_multi(scene, ssc->objects, ssc->objects_len, co, 0.0f, &hit)) {
       /* Add vertex to selection, deselect all common uv's of vert other than selected and
        * update the preview. This behavior was decided so that you can do stuff like deselect
        * the opposite stitchable vertex and the initial still gets deselected */
@@ -2576,7 +2575,7 @@ static StitchState *stitch_select(bContext *C,
       return state;
     }
   }
-  else if (uv_find_nearest_edge_multi(scene, ima, ssc->objects, ssc->objects_len, co, &hit)) {
+  else if (uv_find_nearest_edge_multi(scene, ssc->objects, ssc->objects_len, co, &hit)) {
     /* find StitchState from hit->ob */
     StitchState *state = NULL;
     for (uint ob_index = 0; ob_index < ssc->objects_len; ob_index++) {