Commit: 39e21b2a98d85a3bd6ffc85fe8800ed6a81e2713
Author: Phil Gosch
Date:   Wed Jun 15 10:41:56 2016 +0200
Branches: soc-2016-uv_tools
https://developer.blender.org/rB39e21b2a98d85a3bd6ffc85fe8800ed6a81e2713

Make unwrap ops reveal hidden UVs since they're taken into account anyway

===================================================================

M       source/blender/editors/include/ED_uvedit.h
M       source/blender/editors/uvedit/uvedit_intern.h
M       source/blender/editors/uvedit/uvedit_ops.c
M       source/blender/editors/uvedit/uvedit_unwrap_ops.c

===================================================================

diff --git a/source/blender/editors/include/ED_uvedit.h 
b/source/blender/editors/include/ED_uvedit.h
index 119e23d..c5a1e66 100644
--- a/source/blender/editors/include/ED_uvedit.h
+++ b/source/blender/editors/include/ED_uvedit.h
@@ -59,6 +59,8 @@ void ED_object_assign_active_image(struct Main *bmain, struct 
Object *ob, int ma
 
 bool ED_uvedit_test(struct Object *obedit);
 
+void ED_uvedit_reveal(struct BMEditMesh *em);
+
 /* visibility and selection */
 bool uvedit_face_visible_test(struct Scene *scene, struct Image *ima, struct 
BMFace *efa, struct MTexPoly *tf);
 bool uvedit_face_select_test(struct Scene *scene, struct BMFace *efa,
diff --git a/source/blender/editors/uvedit/uvedit_intern.h 
b/source/blender/editors/uvedit/uvedit_intern.h
index b16f94a..47003bd 100644
--- a/source/blender/editors/uvedit/uvedit_intern.h
+++ b/source/blender/editors/uvedit/uvedit_intern.h
@@ -89,5 +89,6 @@ void UV_OT_reset(struct wmOperatorType *ot);
 void UV_OT_sphere_project(struct wmOperatorType *ot);
 void UV_OT_unwrap(struct wmOperatorType *ot);
 void UV_OT_stitch(struct wmOperatorType *ot);
+void UV_OT_reveal(struct wmOperatorType *ot);
 
 #endif /* __UVEDIT_INTERN_H__ */
diff --git a/source/blender/editors/uvedit/uvedit_ops.c 
b/source/blender/editors/uvedit/uvedit_ops.c
index af48a73..062d9b1 100644
--- a/source/blender/editors/uvedit/uvedit_ops.c
+++ b/source/blender/editors/uvedit/uvedit_ops.c
@@ -3979,7 +3979,7 @@ static void UV_OT_hide(wmOperatorType *ot)
        
        /* api callbacks */
        ot->exec = uv_hide_exec;
-       ot->poll = ED_operator_uvedit;
+       ot->poll = ED_operator_uvmap;
 
        /* props */
        RNA_def_boolean(ot->srna, "unselected", 0, "Hide Unselected", "Hide 
unselected rather than selected");
@@ -3987,40 +3987,44 @@ static void UV_OT_hide(wmOperatorType *ot)
 
 /****************** reveal operator ******************/
 
-static int uv_reveal_exec(bContext *C, wmOperator *UNUSED(op))
+void ED_uvedit_reveal(BMEditMesh *em) 
 {
-       SpaceImage *sima = CTX_wm_space_image(C);
-       Object *obedit = CTX_data_edit_object(C);
-       Scene *scene = CTX_data_scene(C);
-       ToolSettings *ts = scene->toolsettings;
-       BMEditMesh *em = BKE_editmesh_from_object(obedit);
        BMFace *efa;
        BMLoop *l;
        BMIter iter, liter;
        MLoopUV *luv;
 
-       const int cd_loop_uv_offset  = CustomData_get_offset(&em->bm->ldata, 
CD_MLOOPUV);
-
-       /* call the mesh function if we are in mesh sync sel */
-       if (ts->uv_flag & UV_SYNC_SELECTION) {
-               EDBM_mesh_reveal(em);
-               WM_event_add_notifier(C, NC_GEOM | ND_SELECT, obedit->data);
+       const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, 
CD_MLOOPUV);
 
-               return OPERATOR_FINISHED;
-       }
+       BM_ITER_MESH(efa, &iter, em->bm, BM_FACES_OF_MESH) {
 
-       
-       BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
-                       
                if (!BM_elem_flag_test(efa, BM_ELEM_HIDDEN)) {
-                       BM_ITER_ELEM (l, &liter, efa, BM_LOOPS_OF_FACE) {
+                       BM_ITER_ELEM(l, &liter, efa, BM_LOOPS_OF_FACE) {
                                luv = BM_ELEM_CD_GET_VOID_P(l, 
cd_loop_uv_offset);
                                luv->flag &= ~MLOOPUV_HIDDEN;
                        }
                }
+       }       
+}
+
+static int uv_reveal_exec(bContext *C, wmOperator *UNUSED(op))
+{
+       Object *obedit = CTX_data_edit_object(C);
+       Scene *scene = CTX_data_scene(C);
+       ToolSettings *ts = scene->toolsettings;
+       BMEditMesh *em = BKE_editmesh_from_object(obedit);      
+
+       /* call the mesh function if we are in mesh sync sel */
+       if (ts->uv_flag & UV_SYNC_SELECTION) {
+               EDBM_mesh_reveal(em);
+               WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
+
+               return OPERATOR_FINISHED;
        }
 
-       WM_event_add_notifier(C, NC_GEOM | ND_SELECT | ND_DATA, obedit->data);
+       ED_uvedit_reveal(em);
+
+       WM_event_add_notifier(C, NC_GEOM | ND_DATA, obedit->data);
 
        return OPERATOR_FINISHED;
 }
@@ -4035,7 +4039,7 @@ static void UV_OT_reveal(wmOperatorType *ot)
        
        /* api callbacks */
        ot->exec = uv_reveal_exec;
-       ot->poll = ED_operator_uvedit;
+       ot->poll = ED_operator_uvmap;
 }
 
 /******************** set 3d cursor operator ********************/
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c 
b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index 1131f7c..e99b2b5 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -1250,6 +1250,9 @@ static int unwrap_exec(bContext *C, wmOperator *op)
                return OPERATOR_CANCELLED;
        }
 
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(em);
+
        mat4_to_size(obsize, obedit->obmat);
        if (!(fabsf(obsize[0] - obsize[1]) < 1e-4f && fabsf(obsize[1] - 
obsize[2]) < 1e-4f))
                BKE_report(op->reports, RPT_INFO,
@@ -1369,6 +1372,9 @@ static int uv_from_view_exec(bContext *C, wmOperator *op)
                return OPERATOR_CANCELLED;
        }
 
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(em);
+
        cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
        if (RNA_boolean_get(op->ptr, "orthographic")) {
@@ -1471,6 +1477,9 @@ static int reset_exec(bContext *C, wmOperator *UNUSED(op))
                return OPERATOR_CANCELLED;
        }
 
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(me->edit_btmesh);
+
        ED_mesh_uv_loop_reset(C, me);
 
        DAG_id_tag_update(obedit->data, 0);
@@ -1557,6 +1566,9 @@ static int sphere_project_exec(bContext *C, wmOperator 
*op)
                return OPERATOR_CANCELLED;
        }
 
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(em);
+
        cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
        uv_map_transform(C, op, center, rotmat);
@@ -1636,6 +1648,9 @@ static int cylinder_project_exec(bContext *C, wmOperator 
*op)
                return OPERATOR_CANCELLED;
        }
 
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(em);
+
        cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
 
        uv_map_transform(C, op, center, rotmat);
@@ -1742,6 +1757,9 @@ static int cube_project_exec(bContext *C, wmOperator *op)
        if (!ED_uvedit_ensure_uvs(C, scene, obedit)) {
                return OPERATOR_CANCELLED;
        }
+       
+       /* Reveal hidden UVs since they're taken into account*/
+       ED_uvedit_reveal(em);
 
        ED_uvedit_unwrap_cube_project(obedit, em->bm, cube_size, true);
        uv_map_clip_correct(scene, obedit, em, op);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to