unwrapper wasnt working properly when UVSyncSelection was NOT enabled.
authorCampbell Barton <ideasman42@gmail.com>
Tue, 18 Sep 2007 02:59:57 +0000 (02:59 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 18 Sep 2007 02:59:57 +0000 (02:59 +0000)
unwrapper and UV mapping menu items were not selecting UV's when initializing a new UV layer
selecting with the brush (BB) in the UV window did not update in the 3D view realtime, use the lock settings to make this work.

source/blender/src/editface.c
source/blender/src/editsima.c
source/blender/src/unwrapper.c

index 5b86181b4dffd4a7eb1e1aed4ef5575058519d1f..65e335ea6ab42666716fce108e647139868c8270 100644 (file)
@@ -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;
index a9d376dfbcd05252e372a63cbbb48038d27789c4..876baa002605bf9b6dfb3c2eefde02c3db17b129 100644 (file)
@@ -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);
 }
 
 
index 05f128906ab3828b20bbdd92255998f928ef5e56..005119d448dac2ae66737dbd26d183d781a77c6a 100644 (file)
@@ -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);