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.
This commit is contained in:
Campbell Barton 2007-09-10 19:32:44 +00:00
parent 1f0b07c37b
commit 0bd32f3ac6
29 changed files with 152 additions and 182 deletions

@ -176,6 +176,7 @@ typedef struct Global {
#define G_DRAWSEAMS (1 << 20)
#define G_HIDDENEDGES (1 << 21)
/* Measurement info Drawing */
#define G_DRAW_EDGELEN (1 << 22)
#define G_DRAW_FACEAREA (1 << 23)
@ -193,6 +194,11 @@ typedef struct Global {
#define G_AUTOMATKEYS (1 << 30)
/* macro for testing face select mode
* Texture paint could be removed since selected faces are not used
* however hiding faces is useful */
#define FACESEL_PAINT_TEST ((G.f&G_FACESELECT) && (G.f & (G_VERTEXPAINT|G_WEIGHTPAINT|G_TEXTUREPAINT)))
/* G.fileflags */
#define G_AUTOPACK (1 << 0)

@ -1782,7 +1782,7 @@ CustomDataMask get_viewedit_datamask()
ScrArea *sa;
/* check if we need tfaces & mcols due to face select or texture paint */
if(G.f & G_FACESELECT || G.f & G_TEXTUREPAINT) {
if(FACESEL_PAINT_TEST || G.f & G_TEXTUREPAINT) {
mask |= CD_MASK_MTFACE | CD_MASK_MCOL;
} else {
/* check if we need tfaces & mcols due to view mode */
@ -2325,7 +2325,7 @@ static void mesh_build_data(Object *ob, CustomDataMask dataMask)
if(ob!=G.obedit) {
Object *obact = G.scene->basact?G.scene->basact->object:NULL;
int editing = (G.f & (G_FACESELECT|G_WEIGHTPAINT|G_VERTEXPAINT|G_TEXTUREPAINT));
int editing = (FACESEL_PAINT_TEST);
int needMapping = editing && (ob==obact);
if( (G.f & G_WEIGHTPAINT) && ob==obact ) {

@ -53,7 +53,6 @@ int minmax_tface(float *min, float *max);
void face_select(void);
void face_borderselect(void);
void uv_autocalc_tface(void);
void set_faceselect(void);
void set_texturepaint(void);
void get_same_uv(void);
void seam_mark_clear_tface(short mode);

@ -6925,7 +6925,7 @@ static PyObject *Mesh_removeLayer_internal( BPy_Mesh * self, PyObject * value, i
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 */
G.f |= ~G_FACESELECT; /* get out of faceselect mode */
}
}

@ -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 */
}

@ -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 */

@ -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)

@ -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());

@ -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)

@ -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);
}

@ -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;

@ -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);

@ -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 */

@ -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 */
}
}

@ -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);
}

@ -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->drawtype<OB_SOLID || (G.vd->flag & 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->drawtype<OB_SOLID || (G.vd->flag & 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);
}
}

@ -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);

@ -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;
}

@ -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();
}

@ -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) {

@ -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;

@ -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);
@ -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 */
@ -4835,24 +4833,6 @@ 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,34 +5203,40 @@ 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) ");
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) ");
xco+= XIC+10;
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);
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;
xco+= XIC+8;
/* 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;
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)");
/* 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;
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;
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) {

@ -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);
}

@ -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)

@ -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);

@ -2095,7 +2095,7 @@ void toolbox_n(void)
}
}
}
else if (G.f & G_FACESELECT) {
else if (FACESEL_PAINT_TEST) {
menu3 = tb_face_select;
}
}

@ -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 {

@ -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);

@ -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 {