From 0bd32f3ac60393fca5af17534c8ee90e20664cbd Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 10 Sep 2007 19:32:44 +0000 Subject: Changes to "Face Select" mode * Does not indicate that UV's exist, nor does it add UV's when used. * Only accessible for texturepaint, vertexpaint and weightpaint from a button in the header (Paint Selection Mask) * Not accessible from the mode menu, this is only an option that applies to paint modes. This dosnt effect DNA, face select (G_FACESELECT) can be enabled at any time but is only used when paint modes are enabled. Other changes * UKey is uv unwrap in editmode, Ukey for undo was editmode only anyway. * UVCalc in editmode adds a UV Layer if there is not one alredy. * texture draw in editmode does not draw the face dots (they are get in the way of texturing) * some missing updates were added. * removed manipulator from when paint modes are enabled since the manipulator is not drawn in the 3d view. --- source/blender/src/buttons_editing.c | 8 +-- source/blender/src/buttons_shading.c | 2 +- source/blender/src/drawmesh.c | 2 +- source/blender/src/drawobject.c | 19 +++--- source/blender/src/drawscene.c | 2 - source/blender/src/drawview.c | 8 +-- source/blender/src/edit.c | 4 +- source/blender/src/editarmature.c | 2 +- source/blender/src/editface.c | 57 +++------------- source/blender/src/editmesh.c | 4 +- source/blender/src/editmesh_add.c | 4 +- source/blender/src/editmesh_mods.c | 19 ++++-- source/blender/src/editobject.c | 8 +-- source/blender/src/editscreen.c | 2 +- source/blender/src/editsima.c | 2 +- source/blender/src/editview.c | 15 ++--- source/blender/src/header_info.c | 1 - source/blender/src/header_view3d.c | 102 +++++++++++++---------------- source/blender/src/outliner.c | 2 +- source/blender/src/poseobject.c | 2 +- source/blender/src/space.c | 41 ++++++------ source/blender/src/toolbox.c | 2 +- source/blender/src/transform_manipulator.c | 2 +- source/blender/src/unwrapper.c | 9 ++- source/blender/src/view.c | 2 +- 25 files changed, 143 insertions(+), 178 deletions(-) (limited to 'source/blender/src') diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c index 122ad6e3a50..80c5c88bc69 100644 --- a/source/blender/src/buttons_editing.c +++ b/source/blender/src/buttons_editing.c @@ -536,7 +536,7 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an if(G.obedit->type == OB_MESH) reveal_mesh(); else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) revealNurb(); } - else if(G.f & G_FACESELECT) reveal_tface(); + else if(FACESEL_PAINT_TEST) reveal_tface(); break; case B_SELSWAP: @@ -719,8 +719,6 @@ static void delete_customdata_layer(void *data1, void *data2) if(!CustomData_has_layer(data, type)) { if(type == CD_MCOL && (G.f & G_VERTEXPAINT)) G.f &= ~G_VERTEXPAINT; /* get out of vertexpaint mode */ - /*if(type == CD_MTFACE && (G.f & G_FACESELECT)) - set_faceselect();*/ /* get out of faceselect mode */ } /*reconstruct active layer*/ @@ -4875,7 +4873,7 @@ void do_fpaintbuts(unsigned short event) } break; case B_SET_VCOL: - if(G.f & G_FACESELECT) + if(FACESEL_PAINT_TEST) clear_vpaint_selectedfaces(); else clear_vpaint(); @@ -5473,7 +5471,7 @@ void editing_panels() uiNewPanelTabbed("Multires", "Editing"); editing_panel_sculpting_textures(); } else { - if(G.f & G_FACESELECT) { + if(FACESEL_PAINT_TEST) { editing_panel_mesh_texface(); editing_panel_mesh_uvautocalculation(); /* draw hidden edge option from this needs to be elsewhere */ } diff --git a/source/blender/src/buttons_shading.c b/source/blender/src/buttons_shading.c index 3f5be1fe7b0..5addf7fafee 100644 --- a/source/blender/src/buttons_shading.c +++ b/source/blender/src/buttons_shading.c @@ -1161,7 +1161,7 @@ void uiblock_image_panel(uiBlock *block, Image **ima_pp, ImageUser *iuser, } /* exception, let's do because we only use this panel 3 times in blender... but not real good code! */ - if( (G.f & G_FACESELECT) && G.sima && &G.sima->iuser==iuser) + if( (FACESEL_PAINT_TEST) && G.sima && &G.sima->iuser==iuser) return; /* left side default per-image options, right half the additional options */ diff --git a/source/blender/src/drawmesh.c b/source/blender/src/drawmesh.c index 41e08a9ab18..8b38d925c0e 100644 --- a/source/blender/src/drawmesh.c +++ b/source/blender/src/drawmesh.c @@ -1205,7 +1205,7 @@ void draw_mesh_textured(Object *ob, DerivedMesh *dm, int faceselect) if(ob==G.obedit) editing= 1; else if(ob==OBACT) - if(G.f & (G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT)) + if(FACESEL_PAINT_TEST) editing= 1; if(!editing) diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c index 1f7a3df73a9..ded36ed5a02 100644 --- a/source/blender/src/drawobject.c +++ b/source/blender/src/drawobject.c @@ -1632,7 +1632,7 @@ static void draw_em_fancy_verts(EditMesh *em, DerivedMesh *cageDM) draw_dm_verts(cageDM, sel); } - if(G.scene->selectmode & SCE_SELECT_FACE) { + if(G.scene->selectmode & SCE_SELECT_FACE && G.vd->drawtype!=OB_TEXTURE) { glPointSize(fsize); glColor4ubv((GLubyte *)fcol); draw_dm_face_centers(cageDM, sel); @@ -1974,7 +1974,7 @@ static void draw_em_fancy(Object *ob, EditMesh *em, DerivedMesh *cageDM, Derived } } - if((G.f & (G_FACESELECT+G_DRAWFACES))) { /* transp faces */ + if((G.f & (G_DRAWFACES)) || FACESEL_PAINT_TEST) { /* transp faces */ unsigned char col1[4], col2[4]; BIF_GetThemeColor4ubv(TH_FACE, (char *)col1); @@ -2120,7 +2120,7 @@ static void draw_mesh_fancy(Base *base, int dt, int flag) glFrontFace((ob->transflag&OB_NEG_SCALE)?GL_CW:GL_CCW); // Unwanted combination. - if (ob==OBACT && (G.f&G_FACESELECT)) draw_wire = 0; + if (ob==OBACT && FACESEL_PAINT_TEST) draw_wire = 0; if(dt==OB_BOUNDBOX) { draw_bounding_volume(ob); @@ -2133,10 +2133,10 @@ static void draw_mesh_fancy(Base *base, int dt, int flag) else if(dt==OB_WIRE || totface==0) { draw_wire = 1; } - else if( (ob==OBACT && (G.f & (G_FACESELECT|G_TEXTUREPAINT))) || (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID)) { - int faceselect= (ob==OBACT && (G.f & G_FACESELECT)); + else if( (ob==OBACT && (G.f & G_TEXTUREPAINT || FACESEL_PAINT_TEST)) || (G.vd->drawtype==OB_TEXTURE && dt>OB_SOLID)) { + int faceselect= (ob==OBACT && FACESEL_PAINT_TEST); - if ((G.vd->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&(G_FACESELECT|G_PICKSEL)) && !draw_wire) { + if ((G.vd->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&G_PICKSEL || FACESEL_PAINT_TEST) && !draw_wire) { draw_mesh_object_outline(ob, dm); } @@ -3881,7 +3881,7 @@ void draw_object(Base *base, int flag) dtx= 0; /* faceselect exception: also draw solid when dt==wire, except in editmode */ - if(ob==OBACT && (G.f & (G_FACESELECT+G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT))) { + if(ob==OBACT && (G.f & (G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT))) { if(ob->type==OB_MESH) { if(ob==G.obedit); @@ -4142,7 +4142,7 @@ void draw_object(Base *base, int flag) if(G.f & G_SIMULATION) return; /* object centers, need to be drawn in viewmat space for speed, but OK for picking select */ - if(ob!=OBACT || (G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) { + if(ob!=OBACT || (G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))==0) { int do_draw_center= -1; /* defines below are zero or positive... */ if((G.scene->basact)==base) @@ -4327,7 +4327,7 @@ static int bbs_mesh_solid_EM(DerivedMesh *dm, int facecol) if (facecol) { dm->drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, (void*)(long) 1, 0); - if(G.scene->selectmode & SCE_SELECT_FACE) { + if(G.scene->selectmode & SCE_SELECT_FACE && G.vd->drawtype!=OB_TEXTURE) { glPointSize(BIF_GetThemeValuef(TH_FACEDOT_SIZE)); bglBegin(GL_POINTS); @@ -4367,6 +4367,7 @@ static int bbs_mesh_wire__setDrawOpts(void *userData, int index) return 0; } +/* TODO remove this - since face select mode now only works with painting */ static void bbs_mesh_solid(Object *ob) { DerivedMesh *dm = mesh_get_derived_final(ob, get_viewedit_datamask()); diff --git a/source/blender/src/drawscene.c b/source/blender/src/drawscene.c index b2d8920c1a2..297dfcb7fb2 100644 --- a/source/blender/src/drawscene.c +++ b/source/blender/src/drawscene.c @@ -74,8 +74,6 @@ void set_scene(Scene *sce) /* also see scene.c: set_scene_bg() */ if( G.obedit) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); - if(G.f & G_FACESELECT) - set_faceselect(); if(G.f & G_VERTEXPAINT) set_vpaint(); if(G.f & G_TEXTUREPAINT) diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c index f927c537470..910e8fca1c2 100644 --- a/source/blender/src/drawview.c +++ b/source/blender/src/drawview.c @@ -1077,7 +1077,7 @@ void backdrawview3d(int test) int m; #endif - if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)); + if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || G.f & G_TEXTUREPAINT); else if(G.obedit && G.vd->drawtype>OB_WIRE && (G.vd->flag & V3D_ZBUF_SELECT)); else { G.vd->flag &= ~V3D_NEEDBACKBUFDRAW; @@ -2238,7 +2238,7 @@ static void view3d_panel_object(short cntrl) // VIEW3D_HANDLER_OBJECT uiSetButLock(object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE); - if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) { + if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT)) { uiBlockSetFlag(block, UI_BLOCK_FRONTBUFFER); // force old style frontbuffer draw } else { @@ -2383,7 +2383,7 @@ static void view3d_panel_background(short cntrl) // VIEW3D_HANDLER_BACKGROUND uiSetPanelHandler(VIEW3D_HANDLER_BACKGROUND); // for close and esc if(uiNewPanel(curarea, block, "Background Image", "View3d", 340, 10, 318, 204)==0) return; - if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) { + if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || G.f & G_TEXTUREPAINT) { uiBlockSetFlag(block, UI_BLOCK_FRONTBUFFER); // force old style frontbuffer draw } @@ -3018,7 +3018,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata) sa->win_swap= WIN_BACK_OK; - if(G.f & (G_VERTEXPAINT|G_FACESELECT|G_TEXTUREPAINT|G_WEIGHTPAINT)) { + if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT || G.f & G_TEXTUREPAINT) { v3d->flag |= V3D_NEEDBACKBUFDRAW; addafterqueue(sa->win, BACKBUFDRAW, 1); } diff --git a/source/blender/src/edit.c b/source/blender/src/edit.c index ca6239b5580..fb62c33abe8 100644 --- a/source/blender/src/edit.c +++ b/source/blender/src/edit.c @@ -422,7 +422,7 @@ int get_border(rcti *rect, short flag) circle_selectCB(&obedit_selectionCB); } } - else if (G.f&G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { circle_selectCB(&obedit_selectionCB); } return 0; @@ -769,7 +769,7 @@ void countall() allqueue(REDRAWINFO, 1); /* 1, because header->win==0! */ return; } - else if(G.f & (G_FACESELECT + G_VERTEXPAINT + G_TEXTUREPAINT +G_WEIGHTPAINT)) { + else if(FACESEL_PAINT_TEST) { me= get_mesh((G.scene->basact) ? (G.scene->basact->object) : 0); if(me) { G.totface= me->totface; diff --git a/source/blender/src/editarmature.c b/source/blender/src/editarmature.c index 1b674f404b8..12d58ad535a 100644 --- a/source/blender/src/editarmature.c +++ b/source/blender/src/editarmature.c @@ -1480,7 +1480,7 @@ void add_primitiveArmature(int type) if ELEM(curarea->spacetype, SPACE_VIEW3D, SPACE_INFO); else return; if(G.vd==NULL) return; - G.f &= ~(G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT); + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT); setcursor_space(SPACE_VIEW3D, CURSOR_STD); check_editmode(OB_ARMATURE); diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index b22a3b30f0b..2a0a0432955 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -66,6 +66,7 @@ #include "BKE_object.h" #include "BKE_texture.h" #include "BKE_utildefines.h" +#include "BKE_customdata.h" #include "BSE_view.h" #include "BSE_edit.h" @@ -340,7 +341,6 @@ static void uv_calc_shift_project(float *target, float *shift, float rotmat[][4] void calculate_uv_map(unsigned short mapmode) { MTFace *tface; - /*MFace *mface;*/ Object *ob; float dx, dy, rotatematrix[4][4], radius= 1.0, min[3], cent[3], max[3]; float fac= 1.0, upangledeg= 0.0, sideangledeg= 90.0; @@ -358,8 +358,16 @@ void calculate_uv_map(unsigned short mapmode) else sideangledeg= 90.0; } + /* add uvs if there not here */ + if (!EM_texFaceCheck()) { + if (em && em->faces.first) + EM_add_data_layer(&em->fdata, CD_MTFACE); + + if (!EM_texFaceCheck()) + return; + } + ob=OBACT; - if (!EM_texFaceCheck()) return; switch(mapmode) { case B_UVAUTO_BOUNDS: @@ -1415,51 +1423,6 @@ void uv_autocalc_tface() } } -void set_faceselect() /* toggle */ -{ - Object *ob = OBACT; - Mesh *me = 0; - - if(ob==NULL) return; - if(object_data_is_libdata(ob)) { - error_libdata(); - return; - } - - me= get_mesh(ob); - - scrarea_queue_headredraw(curarea); - - if(me) /* make sure modifiers are updated for mapping requirements */ - DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); - - if(G.f & G_FACESELECT) { - G.f &= ~G_FACESELECT; - - if((G.f & (G_WEIGHTPAINT|G_VERTEXPAINT|G_TEXTUREPAINT))==0) { - if(me) - reveal_tface(); - setcursor_space(SPACE_VIEW3D, CURSOR_STD); - BIF_undo_push("End UV Faceselect"); - } - } - else if (me && (ob->lay & G.vd->lay)) { - G.f |= G_FACESELECT; - /* - if(me->mtface==NULL) - make_tfaces(me); - */ - setcursor_space(SPACE_VIEW3D, CURSOR_FACESEL); - BIF_undo_push("Set UV Faceselect"); - } - - countall(); - - allqueue(REDRAWVIEW3D, 0); - allqueue(REDRAWBUTSEDIT, 0); - /*allqueue(REDRAWIMAGE, 0);*/ -} - /* Texture Paint */ void set_texturepaint() /* toggle */ diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c index bc492dd859e..f0ecb616471 100644 --- a/source/blender/src/editmesh.c +++ b/source/blender/src/editmesh.c @@ -838,7 +838,7 @@ void make_editMesh() evlist[a]= eve; // face select sets selection in next loop - if( (G.f & G_FACESELECT)==0 ) + if( (FACESEL_PAINT_TEST)==0 ) eve->f |= (mvert->flag & 1); if (mvert->flag & ME_HIDE) eve->h= 1; @@ -904,7 +904,7 @@ void make_editMesh() } if(mface->flag & ME_HIDE) efa->h= 1; - if((G.f & G_FACESELECT) && (efa->f & SELECT)) + if((FACESEL_PAINT_TEST) && (efa->f & SELECT)) EM_select_face(efa, 1); /* flush down */ } } diff --git a/source/blender/src/editmesh_add.c b/source/blender/src/editmesh_add.c index bb1d5d00957..49913b345ed 100644 --- a/source/blender/src/editmesh_add.c +++ b/source/blender/src/editmesh_add.c @@ -1188,8 +1188,8 @@ void add_primitiveMesh(int type) /* if editmode exists for other type, it exits */ check_editmode(OB_MESH); - if(G.f & (G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT)) { - G.f &= ~(G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT); + if(G.f & (G_VERTEXPAINT+G_TEXTUREPAINT)) { + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT); setcursor_space(SPACE_VIEW3D, CURSOR_EDIT); } diff --git a/source/blender/src/editmesh_mods.c b/source/blender/src/editmesh_mods.c index e5e84b5c9b7..77f53df011b 100644 --- a/source/blender/src/editmesh_mods.c +++ b/source/blender/src/editmesh_mods.c @@ -240,7 +240,7 @@ int EM_mask_init_backbuf_border(short mcords[][2], short tot, short xmin, short /* method in use for face selecting too */ if(G.obedit==NULL) { - if(G.f & G_FACESELECT); + if(FACESEL_PAINT_TEST); else return 0; } else if(G.vd->drawtypeflag & V3D_ZBUF_SELECT)==0) return 0; @@ -302,7 +302,7 @@ int EM_init_backbuf_circle(short xs, short ys, short rads) /* method in use for face selecting too */ if(G.obedit==NULL) { - if(G.f & G_FACESELECT); + if(FACESEL_PAINT_TEST); else return 0; } else if(G.vd->drawtypeflag & V3D_ZBUF_SELECT)==0) return 0; @@ -697,7 +697,7 @@ static void unified_select_draw(EditVert *eve, EditEdge *eed, EditFace *efa) } } - if(G.scene->selectmode & SCE_SELECT_FACE) { + if(G.scene->selectmode & SCE_SELECT_FACE && (G.vd->drawtype!=OB_TEXTURE)) { if(efa->fgonf==0) { glPointSize(BIF_GetThemeValuef(TH_FACEDOT_SIZE)); BIF_ThemeColor((efa->f & SELECT)?TH_FACE_DOT:TH_WIRE); @@ -1311,6 +1311,8 @@ void select_mesh_group_menu() EM_select_flush(); /* so that selected verts, go onto select faces */ G.totvertsel += selcount; allqueue(REDRAWVIEW3D, 0); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); BIF_undo_push("Select Similar Vertices"); } return; @@ -1323,6 +1325,8 @@ void select_mesh_group_menu() /*EM_select_flush();*/ /* dont use because it can end up selecting more edges and is not usefull*/ G.totedgesel+=selcount; allqueue(REDRAWVIEW3D, 0); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); BIF_undo_push("Select Similar Edges"); } return; @@ -1658,8 +1662,9 @@ static void mouse_mesh_loop(void) EM_selectmode_flush(); countall(); - allqueue(REDRAWVIEW3D, 0); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); } } @@ -1767,6 +1772,8 @@ static void selectconnectedAll(void) countall(); allqueue(REDRAWVIEW3D, 0); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); BIF_undo_push("Select Connected (All)"); } @@ -1989,6 +1996,8 @@ void reveal_mesh(void) countall(); allqueue(REDRAWVIEW3D, 0); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); DAG_object_flush_update(G.scene, G.obedit, OB_RECALC_DATA); BIF_undo_push("Reveal"); } @@ -2716,6 +2725,8 @@ void EM_selectmode_menu(void) } allqueue(REDRAWVIEW3D, 1); + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); } } diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c index 1bb546982f8..762a3a1d4a9 100644 --- a/source/blender/src/editobject.c +++ b/source/blender/src/editobject.c @@ -186,7 +186,7 @@ void add_object_draw(int type) /* for toolbox or menus, only non-editmode stuff { Object *ob; - G.f &= ~(G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE); + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE); setcursor_space(SPACE_VIEW3D, CURSOR_STD); if ELEM3(curarea->spacetype, SPACE_VIEW3D, SPACE_BUTS, SPACE_INFO) { @@ -306,7 +306,7 @@ void delete_obj(int ok) } countall(); - G.f &= ~(G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT); + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT); setcursor_space(SPACE_VIEW3D, CURSOR_STD); if(islamp) reshadeall_displist(); /* only frees displist */ @@ -2201,7 +2201,7 @@ void special_editmenu(void) if(ob->flag & OB_POSEMODE) { pose_special_editmenu(); } - else if(G.f & G_FACESELECT) { + else if(FACESEL_PAINT_TEST) { Mesh *me= get_mesh(ob); MTFace *tface; MFace *mface; @@ -3411,7 +3411,7 @@ void copy_attr_menu() if ((G.obedit)) return; /* no editmode copy yet */ - if(G.f & G_FACESELECT) { + if(FACESEL_PAINT_TEST) { event= pupmenu("Copy Active Texface%t|Image%x1|UV Coords%x2|Color%x3|Mode%x4|Transp%x5"); copy_attr_tface(event); diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c index 44069beaf43..b877915b1d6 100644 --- a/source/blender/src/editscreen.c +++ b/source/blender/src/editscreen.c @@ -176,7 +176,7 @@ static int choose_cursor(ScrArea *sa) if(G.obedit) return CURSOR_EDIT; else if(G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT)) return CURSOR_VPAINT; - else if(G.f & G_FACESELECT) return CURSOR_FACESEL; + else if(FACESEL_PAINT_TEST) return CURSOR_FACESEL; else if(G.f & G_SCULPTMODE) return CURSOR_EDIT; else return CURSOR_STD; } diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c index 6da1af19e3a..ed5a1c73cb9 100644 --- a/source/blender/src/editsima.c +++ b/source/blender/src/editsima.c @@ -140,7 +140,7 @@ int is_uv_tface_editing_allowed_silent(void) int is_uv_tface_editing_allowed(void) { - if(!G.obedit) error("Unable to perform action in Edit Mode"); + if(!G.obedit) error("Enter Edit Mode to perform this action"); return is_uv_tface_editing_allowed_silent(); } diff --git a/source/blender/src/editview.c b/source/blender/src/editview.c index 80bebf0ec68..176821e0cc9 100644 --- a/source/blender/src/editview.c +++ b/source/blender/src/editview.c @@ -575,7 +575,7 @@ static void do_lasso_select_facemode(short mcords[][2], short moves, short selec static void do_lasso_select(short mcords[][2], short moves, short select) { if(G.obedit==NULL) { - if(G.f & G_FACESELECT) + if(FACESEL_PAINT_TEST) do_lasso_select_facemode(mcords, moves, select); else if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT)) ; @@ -1102,10 +1102,6 @@ void set_active_base(Base *base) if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ } - /* always end this */ - if(G.f & G_FACESELECT) { - set_faceselect(); /* toggle */ - } } /* sets scene->basact */ @@ -1670,7 +1666,7 @@ void borderselect(void) int a, index; short hits, val; - if(G.obedit==NULL && (G.f & G_FACESELECT)) { + if(G.obedit==NULL && (FACESEL_PAINT_TEST)) { face_borderselect(); return; } @@ -1683,8 +1679,11 @@ void borderselect(void) val= get_border(&rect, 3); if (!a) setlinestyle(0); - if(val==0) + if(val==0) { + if (EM_texFaceCheck()) + allqueue(REDRAWIMAGE, 0); return; + } if(G.obedit) { if(G.obedit->type==OB_MESH) { @@ -1919,7 +1918,7 @@ static void mesh_selectionCB(int selecting, Object *editobj, short *mval, float EditMesh *em = G.editMesh; int bbsel; - if(!G.obedit && (G.f&G_FACESELECT)) { + if(!G.obedit && (FACESEL_PAINT_TEST)) { Mesh *me = get_mesh(OBACT); if (me) { diff --git a/source/blender/src/header_info.c b/source/blender/src/header_info.c index 685da07f88f..f4a572873d5 100644 --- a/source/blender/src/header_info.c +++ b/source/blender/src/header_info.c @@ -489,7 +489,6 @@ void do_info_buttons(unsigned short event) if(G.f & G_VERTEXPAINT) set_vpaint(); /* Switch off vertex paint */ if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ - if(G.f & G_FACESELECT) set_faceselect(); /* Switch off face select */ /* check all sets */ sce1= G.main->scene.first; diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c index c5b45b7ff33..a9aae6d2187 100644 --- a/source/blender/src/header_view3d.c +++ b/source/blender/src/header_view3d.c @@ -145,7 +145,7 @@ #define V3D_OBJECTMODE_SEL ICON_OBJECT #define V3D_EDITMODE_SEL ICON_EDITMODE_HLT #define V3D_SCULPTMODE_SEL ICON_SCULPTMODE_HLT -#define V3D_FACESELECTMODE_SEL ICON_FACESEL_HLT +#define V3D_FACESELECT_SEL ICON_FACESEL_HLT /* this is not a mode anymore - just a switch */ #define V3D_VERTEXPAINTMODE_SEL ICON_VPAINT_HLT #define V3D_TEXTUREPAINTMODE_SEL ICON_TPAINT_HLT #define V3D_WEIGHTPAINTMODE_SEL ICON_WPAINT_HLT @@ -385,7 +385,7 @@ static void do_view3d_view_alignviewmenu(void *arg, int event) case 2: if ((G.obedit) && (G.obedit->type == OB_MESH)) { editmesh_align_view_to_selected(v3d, event); - } else if (G.f & G_FACESELECT) { + } else if (FACESEL_PAINT_TEST) { Object *obact= OBACT; if (obact && obact->type==OB_MESH) { Mesh *me= obact->data; @@ -437,7 +437,7 @@ static uiBlock *view3d_view_alignviewmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center Cursor and View All|Shift C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align Active Camera to View|Ctrl Alt NumPad 0", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, ""); - if (((G.obedit) && (G.obedit->type == OB_MESH)) || (G.f & G_FACESELECT)) { + if (((G.obedit) && (G.obedit->type == OB_MESH)) || (FACESEL_PAINT_TEST)) { uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Top)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Front)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Align View to Selected (Side)|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); @@ -4081,7 +4081,7 @@ static void do_view3d_vpaintmenu(void *arg, int event) BIF_undo(); break; case 1: /* set vertex colors/weight */ - if(G.f & G_FACESELECT) + if(FACESEL_PAINT_TEST) clear_vpaint_selectedfaces(); else /* we know were in vertex paint mode */ clear_vpaint(); @@ -4203,7 +4203,7 @@ static uiBlock *view3d_wpaintmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); - if (G.f & G_FACESELECT) { + if (FACESEL_PAINT_TEST) { uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Weight|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); menunr++; @@ -4671,7 +4671,7 @@ static char *view3d_modeselect_pup(void) if (ob->type == OB_MESH) { str += sprintf(str, formatstr, "Sculpt Mode", V3D_SCULPTMODE_SEL, ICON_SCULPTMODE_HLT); - str += sprintf(str, formatstr, "Face Select", V3D_FACESELECTMODE_SEL, ICON_FACESEL_HLT); + /*str += sprintf(str, formatstr, "Face Select", V3D_FACESELECTMODE_SEL, ICON_FACESEL_HLT);*/ str += sprintf(str, formatstr, "Vertex Paint", V3D_VERTEXPAINTMODE_SEL, ICON_VPAINT_HLT); str += sprintf(str, formatstr, "Texture Paint", V3D_TEXTUREPAINTMODE_SEL, ICON_TPAINT_HLT); str += sprintf(str, formatstr, "Weight Paint", V3D_WEIGHTPAINTMODE_SEL, ICON_WPAINT_HLT); @@ -4798,7 +4798,7 @@ void do_view3d_buttons(short event) if (select_area(SPACE_VIEW3D)) { start_game(); } - break; + break; case B_MODESELECT: if (G.vd->modeselect == V3D_OBJECTMODE_SEL) { @@ -4807,7 +4807,6 @@ void do_view3d_buttons(short event) if(G.f & G_VERTEXPAINT) set_vpaint(); /* Switch off vertex paint */ if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ - if(G.f & G_FACESELECT) set_faceselect(); /* Switch off face select */ if(ob) exit_posemode(); /* exit posemode for active object */ if(G.obedit) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ } @@ -4826,7 +4825,6 @@ void do_view3d_buttons(short event) else if (G.vd->modeselect == V3D_SCULPTMODE_SEL) { if (!(G.f & G_SCULPTMODE)) { G.vd->flag &= ~V3D_MODE; - if(G.f & G_FACESELECT) set_faceselect(); /* Switch off face select */ if(G.f & G_VERTEXPAINT) set_vpaint(); /* Switch off vertex paint */ if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ @@ -4834,25 +4832,7 @@ void do_view3d_buttons(short event) set_sculptmode(); } - } - else if (G.vd->modeselect == V3D_FACESELECTMODE_SEL) { - if ((G.obedit) && (G.f & G_FACESELECT)) { - exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ - } else if ((G.f & G_FACESELECT) && (G.f & G_VERTEXPAINT)) { - if(G.f & G_VERTEXPAINT) set_vpaint(); /* Switch off vertex paint */ - } else if ((G.f & G_FACESELECT) && (G.f & G_TEXTUREPAINT)) { - if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ - } else { - G.vd->flag &= ~V3D_MODE; - if(G.f & G_SCULPTMODE) set_sculptmode(); /* Switch off sculptmode */ - if(G.f & G_VERTEXPAINT) set_vpaint(); /* Switch off vertex paint */ - if(G.f & G_TEXTUREPAINT) set_texturepaint(); /* Switch off tex paint */ - if(G.f & G_WEIGHTPAINT) set_wpaint(); /* Switch off weight paint */ - if (G.obedit) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); /* exit editmode and undo */ - - set_faceselect(); - } - } + } else if (G.vd->modeselect == V3D_VERTEXPAINTMODE_SEL) { if (!(G.f & G_VERTEXPAINT)) { G.vd->flag &= ~V3D_MODE; @@ -5034,7 +5014,7 @@ static void view3d_header_pulldowns(uiBlock *block, short *xcoord) } else if (ob && ob->type == OB_ARMATURE) { uiDefPulldownBut(block, view3d_select_armaturemenu, NULL, "Select", xco,-2, xmax-3, 24, ""); } - } else if (G.f & G_FACESELECT) { + } else if (FACESEL_PAINT_TEST) { if (ob && ob->type == OB_MESH) { uiDefPulldownBut(block, view3d_select_faceselmenu, NULL, "Select", xco,-2, xmax-3, 24, ""); } @@ -5100,7 +5080,7 @@ static void view3d_header_pulldowns(uiBlock *block, short *xcoord) uiDefPulldownBut(block, view3d_sculptmenu, NULL, "Sculpt", xco, -2, xmax-3, 24, ""); xco+= xmax; } - else if (G.f & G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { if (ob && ob->type == OB_MESH) { xmax= GetButStringLength("Face"); uiDefPulldownBut(block, view3d_faceselmenu, NULL, "Face", xco,-2, xmax-3, 24, ""); @@ -5168,7 +5148,7 @@ void view3d_buttons(void) else if (G.f & G_WEIGHTPAINT) G.vd->modeselect = V3D_WEIGHTPAINTMODE_SEL; else if (G.f & G_VERTEXPAINT) G.vd->modeselect = V3D_VERTEXPAINTMODE_SEL; else if (G.f & G_TEXTUREPAINT) G.vd->modeselect = V3D_TEXTUREPAINTMODE_SEL; - else if(G.f & G_FACESELECT) G.vd->modeselect = V3D_FACESELECTMODE_SEL; + /*else if(G.f & G_FACESELECT) G.vd->modeselect = V3D_FACESELECTMODE_SEL;*/ G.vd->flag &= ~V3D_MODE; @@ -5178,7 +5158,7 @@ void view3d_buttons(void) if(G.f & G_VERTEXPAINT) G.vd->flag |= V3D_VERTEXPAINT; if(G.f & G_WEIGHTPAINT) G.vd->flag |= V3D_WEIGHTPAINT; if (G.f & G_TEXTUREPAINT) G.vd->flag |= V3D_TEXTUREPAINT; - if(G.f & G_FACESELECT) G.vd->flag |= V3D_FACESELECT; + if(FACESEL_PAINT_TEST) G.vd->flag |= V3D_FACESELECT; uiDefIconTextButS(block, MENU, B_MODESELECT, (G.vd->modeselect),view3d_modeselect_pup() , xco,0,126,20, &(G.vd->modeselect), 0, 0, 0, 0, "Mode (Hotkeys: Tab, F, V, Ctrl Tab)"); @@ -5223,35 +5203,41 @@ void view3d_buttons(void) uiBlockEndAlign(block); } } else { - uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(), xco,0,XIC+10,YIC, &(G.vd->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period) "); - - xco+= XIC+10; - - uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, - xco,0,XIC,YIC, - &G.vd->flag, 0, 0, 0, 0, "Move object centers only"); - uiBlockEndAlign(block); - - xco+= XIC+8; + if (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT)) { + uiDefIconButBitI(block, TOG, G_FACESELECT, B_REDR, ICON_FACESEL_HLT,xco,0,XIC,YIC, &G.f, 0, 0, 0, 0, "Painting Mask (FKey)"); + xco+= XIC+10; + } else { + /* Manipulators arnt used in weight paint mode */ + uiDefIconTextButS(block, ICONTEXTROW,B_AROUND, ICON_ROTATE, around_pup(), xco,0,XIC+10,YIC, &(G.vd->around), 0, 3.0, 0, 0, "Rotation/Scaling Pivot (Hotkeys: Comma, Shift Comma, Period) "); - /* Transform widget / manipulators */ - uiBlockBeginAlign(block); - uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,0,XIC,YIC, &G.vd->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); - xco+= XIC; + xco+= XIC+10; + + uiDefIconButBitS(block, TOG, V3D_ALIGN, B_AROUND, ICON_ALIGN, + xco,0,XIC,YIC, + &G.vd->flag, 0, 0, 0, 0, "Move object centers only"); + uiBlockEndAlign(block); + + xco+= XIC+8; - if(G.vd->twflag & V3D_USE_MANIPULATOR) { - uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); - xco+= XIC; - uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); + /* Transform widget / manipulators */ + uiBlockBeginAlign(block); + uiDefIconButBitS(block, TOG, V3D_USE_MANIPULATOR, B_REDR, ICON_MANIPUL,xco,0,XIC,YIC, &G.vd->twflag, 0, 0, 0, 0, "Use 3d transform manipulator (Ctrl Space)"); xco+= XIC; - } - uiDefButS(block, MENU, B_NOP, "Orientation%t|Global%x0|Local%x1|Normal%x2|View%x3",xco,0,70,YIC, &G.vd->twmode, 0, 0, 0, 0, "Transform Orientation (Alt Space)"); - xco+= 70; - uiBlockEndAlign(block); - xco+= 8; - + + if(G.vd->twflag & V3D_USE_MANIPULATOR) { + uiDefIconButBitS(block, TOG, V3D_MANIP_TRANSLATE, B_MAN_TRANS, ICON_MAN_TRANS, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Translate manipulator mode (Ctrl Alt G)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, V3D_MANIP_ROTATE, B_MAN_ROT, ICON_MAN_ROT, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Rotate manipulator mode (Ctrl Alt R)"); + xco+= XIC; + uiDefIconButBitS(block, TOG, V3D_MANIP_SCALE, B_MAN_SCALE, ICON_MAN_SCALE, xco,0,XIC,YIC, &G.vd->twtype, 1.0, 0.0, 0, 0, "Scale manipulator mode (Ctrl Alt S)"); + xco+= XIC; + } + uiDefButS(block, MENU, B_NOP, "Orientation%t|Global%x0|Local%x1|Normal%x2|View%x3",xco,0,70,YIC, &G.vd->twmode, 0, 0, 0, 0, "Transform Orientation (Alt Space)"); + xco+= 70; + uiBlockEndAlign(block); + xco+= 8; + } + /* LAYERS */ if(G.obedit==NULL && G.vd->localview==0) { uiBlockBeginAlign(block); diff --git a/source/blender/src/outliner.c b/source/blender/src/outliner.c index e67ed466c23..37d25e4f100 100644 --- a/source/blender/src/outliner.c +++ b/source/blender/src/outliner.c @@ -2533,7 +2533,7 @@ static void object_delete_cb(TreeElement *te, TreeStoreElem *tsep, TreeStoreElem if(G.obedit==base->object) exit_editmode(EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR); if(base==BASACT) { - G.f &= ~(G_VERTEXPAINT+G_FACESELECT+G_TEXTUREPAINT+G_WEIGHTPAINT); + G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT); setcursor_space(SPACE_VIEW3D, CURSOR_STD); } diff --git a/source/blender/src/poseobject.c b/source/blender/src/poseobject.c index dda173d0d62..3318b3758fc 100644 --- a/source/blender/src/poseobject.c +++ b/source/blender/src/poseobject.c @@ -113,7 +113,7 @@ void enter_posemode(void) } if (G.obedit) exit_editmode(EM_FREEDATA|EM_WAITCURSOR); - G.f &= ~(G_VERTEXPAINT | G_FACESELECT | G_TEXTUREPAINT | G_WEIGHTPAINT); + G.f &= ~(G_VERTEXPAINT | G_TEXTUREPAINT | G_WEIGHTPAINT); } void set_pose_keys (Object *ob) diff --git a/source/blender/src/space.c b/source/blender/src/space.c index 2221d21ae90..0e96121bbec 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -648,7 +648,7 @@ static void align_view_to_selected(View3D *v3d) if ((G.obedit) && (G.obedit->type == OB_MESH)) { editmesh_align_view_to_selected(v3d, axis); addqueue(v3d->area->win, REDRAW, 1); - } else if (G.f & G_FACESELECT) { + } else if (FACESEL_PAINT_TEST) { Object *obact= OBACT; if (obact && obact->type==OB_MESH) { Mesh *me= obact->data; @@ -1568,7 +1568,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) mouse_mesh(); /* loop select for 1 mousebutton dudes */ else if(G.qual==LR_CTRLKEY) mouse_select(); /* also allow in editmode, for vertex parenting */ - else if(G.f & G_FACESELECT) + else if(FACESEL_PAINT_TEST) face_select(); else if( G.f & (G_VERTEXPAINT|G_TEXTUREPAINT)) sample_vpaint(); @@ -1689,7 +1689,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) deselectall_posearmature(ob, 1, 1); } else { - if(G.f & G_FACESELECT) deselectall_tface(); + if(FACESEL_PAINT_TEST) deselectall_tface(); else { /* by design, the center of the active object * (which need not necessarily by selected) will @@ -1804,7 +1804,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) else if (G.qual==LR_CTRLKEY) { if(G.obedit && G.obedit->type==OB_MESH) Edge_Menu(); - else if (G.f & G_FACESELECT) + else if (FACESEL_PAINT_TEST) seam_mark_clear_tface(0); } else if (G.qual==LR_SHIFTKEY) { @@ -1848,7 +1848,10 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) fly(); } else { - set_faceselect(); + if (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT)){ + G.f ^= G_FACESELECT; + allqueue(REDRAWVIEW3D, 1); + } } break; @@ -1953,7 +1956,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) show_all_armature_bones(); } } - else if(G.f & G_FACESELECT) + else if(FACESEL_PAINT_TEST) hide_tface(); else if(ob && (ob->flag & OB_POSEMODE)) { if (G.qual==0) @@ -2017,7 +2020,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } else { if((G.qual==LR_SHIFTKEY)) { - if(G.f & G_FACESELECT) + if(FACESEL_PAINT_TEST) if (G.f & G_WEIGHTPAINT) clear_wpaint_selectedfaces(); else @@ -2045,7 +2048,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) selectconnected_posearmature(); } else { - if(G.f & G_FACESELECT) { + if(FACESEL_PAINT_TEST) { if((G.qual==0)) select_linked_tfaces(0); else if((G.qual==LR_SHIFTKEY)) @@ -2064,7 +2067,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } break; case MKEY: - if((G.obedit==0) && (G.f & G_FACESELECT) && (G.qual==0)) + if((G.obedit==0) && (FACESEL_PAINT_TEST) && (G.qual==0)) mirror_uv_tface(); else if(G.obedit){ if(G.qual==LR_ALTKEY) { @@ -2198,7 +2201,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } break; case RKEY: - if((G.obedit==0) && (G.f & G_FACESELECT) && (G.qual==0) && !(G.f & G_WEIGHTPAINT)) + if((G.obedit==0) && (FACESEL_PAINT_TEST) && (G.qual==0) && !(G.f & G_WEIGHTPAINT)) rotate_uv_tface(); else if((G.obedit==0) && G.qual==LR_ALTKEY) { if(okee("Clear rotation")) { @@ -2342,6 +2345,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) break; case UKEY: + /*// Use Ctrl Z like everybody else if(G.obedit) { if(G.obedit->type==OB_MESH) { if(G.qual==0) BIF_undo(); else BIF_redo(); @@ -2349,6 +2353,11 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) else if ELEM5(G.obedit->type, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE) { if(G.qual==0) BIF_undo(); else BIF_redo(); } + }*/ + if(G.obedit) { + if(G.qual==0) { + uv_autocalc_tface(); + } } else if((G.qual==0)) { if(G.f & G_WEIGHTPAINT) @@ -2357,8 +2366,6 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) BIF_undo(); else if(G.f & G_TEXTUREPAINT) imagepaint_undo(); - /*else if (G.f & G_FACESELECT) - uv_autocalc_tface();*/ else { single_user(); } @@ -2370,7 +2377,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) if ((G.obedit) && G.obedit->type==OB_MESH) { align_view_to_selected(v3d); } - else if (G.f & G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { align_view_to_selected(v3d); } } @@ -2397,11 +2404,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) initTransform(TFM_WARP, CTX_NONE); Transform(); } - else if(G.qual==LR_ALTKEY) { - if(G.obedit) { - uv_autocalc_tface(); - } - } + /*else if(G.qual==LR_ALTKEY) {}*/ else if(G.qual==LR_CTRLKEY) { if(G.obedit) { if ELEM(G.obedit->type, OB_CURVE, OB_SURF) { @@ -2479,7 +2482,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) if ((G.obedit) && (G.obedit->type == OB_MESH)) { editmesh_align_view_to_selected(G.vd, 3); } - else if (G.f & G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { if(ob->type==OB_MESH) { Mesh *me= ob->data; faceselect_align_view_to_selected(G.vd, me, 3); diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c index 69057c2b75e..ed523008cf9 100644 --- a/source/blender/src/toolbox.c +++ b/source/blender/src/toolbox.c @@ -2095,7 +2095,7 @@ void toolbox_n(void) } } } - else if (G.f & G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { menu3 = tb_face_select; } } diff --git a/source/blender/src/transform_manipulator.c b/source/blender/src/transform_manipulator.c index 773ae3d17ec..8fcb00c526d 100644 --- a/source/blender/src/transform_manipulator.c +++ b/source/blender/src/transform_manipulator.c @@ -427,7 +427,7 @@ int calc_manipulator_stats(ScrArea *sa) /* restore, mode can be TFM_INIT */ Trans.mode= mode; } - else if(G.f & (G_FACESELECT + G_VERTEXPAINT + G_TEXTUREPAINT +G_WEIGHTPAINT)) { + else if(G.f & (G_VERTEXPAINT + G_TEXTUREPAINT +G_WEIGHTPAINT)) { ; } else { diff --git a/source/blender/src/unwrapper.c b/source/blender/src/unwrapper.c index 0b7bd896caf..ddcf356d669 100644 --- a/source/blender/src/unwrapper.c +++ b/source/blender/src/unwrapper.c @@ -290,7 +290,14 @@ void unwrap_lscm(short seamcut) short abf = G.scene->toolsettings->unwrapper == 1; short fillholes = G.scene->toolsettings->uvcalc_flag & 1; - if(!EM_texFaceCheck()) return; + /* add uvs if there not here */ + if (!EM_texFaceCheck()) { + if (em && em->faces.first) + EM_add_data_layer(&em->fdata, CD_MTFACE); + + if (!EM_texFaceCheck()) + return; + } handle = construct_param_handle(em, 0, fillholes, seamcut == 0); diff --git a/source/blender/src/view.c b/source/blender/src/view.c index b17dfbd2bb7..9b4f65fbc81 100644 --- a/source/blender/src/view.c +++ b/source/blender/src/view.c @@ -1398,7 +1398,7 @@ void centerview() /* like a localview without local! */ } } } - else if (G.f & G_FACESELECT) { + else if (FACESEL_PAINT_TEST) { ok= minmax_tface(min, max); } else { -- cgit v1.2.3