diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index 5b86181b4df..65e335ea6ab 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -365,6 +365,14 @@ void calculate_uv_map(unsigned short mapmode) if (!EM_texFaceCheck()) return; + + /* select new UV's */ + if ((G.sima->flag & SI_SYNC_UVSEL)==0) { + for(efa=em->faces.first; efa; efa=efa->next) { + MTFace *tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + SIMA_FACESEL_SET(efa, tf); + } + } } ob=OBACT; diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c index a9d376dfbcd..876baa00260 100644 --- a/source/blender/src/editsima.c +++ b/source/blender/src/editsima.c @@ -964,7 +964,6 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad EditFace *efa; float offset[2]; MTFace *tface; - float ellipse[2]; // we need to deal with ellipses, as // non square textures require for circle // selection. this ellipse is normalized; r = 1.0 @@ -995,11 +994,14 @@ void uvedit_selectionCB(short selecting, Object *editobj, short *mval, float rad bglFlush(); glDrawBuffer(GL_BACK); } + + + if (selecting == LEFTMOUSE) EM_select_flush(); + else EM_deselect_flush(); + + if (G.sima->lock && (G.sima->flag & SI_SYNC_UVSEL)) + force_draw_plus(SPACE_VIEW3D, 0); } - - if (selecting == LEFTMOUSE) EM_select_flush(); - else EM_deselect_flush(); - allqueue(REDRAWVIEW3D, 0); } diff --git a/source/blender/src/unwrapper.c b/source/blender/src/unwrapper.c index 05f128906ab..005119d448d 100644 --- a/source/blender/src/unwrapper.c +++ b/source/blender/src/unwrapper.c @@ -215,14 +215,11 @@ ParamHandle *construct_param_handle(EditMesh *em, short implicit, short fill, sh float *uv[4]; int nverts; - if (efa->h) + if ((efa->h) || (sel && (efa->f & SELECT)==0)) continue; tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); - if (sel && !SIMA_FACESEL_CHECK(efa, tf)) - continue; - if (implicit && !( SIMA_UVSEL_CHECK(efa, tf, 0) || SIMA_UVSEL_CHECK(efa, tf, 1) || @@ -284,7 +281,7 @@ ParamHandle *construct_param_handle(EditMesh *em, short implicit, short fill, sh } -extern int EM_texFaceCheck(); +extern int EM_texFaceCheck(void); void unwrap_lscm(short seamcut) { @@ -300,6 +297,16 @@ void unwrap_lscm(short seamcut) if (!EM_texFaceCheck()) return; + + /* select new UV's */ + if ((G.sima->flag & SI_SYNC_UVSEL)==0) { + EditFace *efa; + MTFace *tf; + for(efa=em->faces.first; efa; efa=efa->next) { + tf= (MTFace *)CustomData_em_get(&em->fdata, efa->data, CD_MTFACE); + SIMA_FACESEL_SET(efa, tf); + } + } } handle = construct_param_handle(em, 0, fillholes, seamcut == 0);