New feature for UV/Editmode - 'Sync Mesh Selection' a button in the UV header this mode is disabled by default.

This is implimented by defining macro's that take the mode into account when get/set/checking the selection and that a face can be drawn.

When this is enabled, things work a bit differently
* all faces are drawn in the UV view (except hidden faces).
* selecting faces/verts in the UV window selects them on the mesh also and vice vercer.
* when EditMode (Face only) is enabled, selecting faces in the UV view is not sticky.
* hiding/(de)select all and invert selection simle call the editmesh functions.
* there is no way to select 1 uv corner of 1 face (because a mesh cannot have this as a valid selection) either all UV's that use a vert (sticky), or the whole face.
This commit is contained in:
2007-09-17 18:22:06 +00:00
parent d1e5c86b76
commit 0c7c57685e
11 changed files with 499 additions and 321 deletions

View File

@@ -4815,14 +4815,41 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
borderselect_sima(UV_SELECT_ALL);
break;
case CKEY:
if(G.qual==LR_CTRLKEY)
toggle_uv_select('s');
else if(G.qual==LR_SHIFTKEY)
toggle_uv_select('l');
else if(G.qual==LR_ALTKEY)
toggle_uv_select('o');
else
toggle_uv_select('f');
if (G.sima->flag & SI_SYNC_UVSEL) {
/* operate on the editmesh */
if (G.qual==0) {
if (G.scene->selectmode != SCE_SELECT_FACE)
toggle_uv_select('f');
/* we could do this too but better not to */
/*if ((G.scene->selectmode & SCE_SELECT_FACE)==0) {
G.scene->selectmode= SCE_SELECT_FACE;
EM_selectmode_set();
BIF_undo_push("Selectmode Set: Face");
} else {
G.scene->selectmode= SCE_SELECT_VERTEX;
EM_selectmode_set();
BIF_undo_push("Selectmode Set: Vertex");
}
countall();
allqueue(REDRAWVIEW3D, 1); */
} else {
error("Sync selection to Edit Mesh disables UV select options");
}
} else {
/* normal operaton */
if(G.qual==LR_CTRLKEY)
toggle_uv_select('s');
else if(G.qual==LR_SHIFTKEY)
toggle_uv_select('l');
else if(G.qual==LR_ALTKEY)
toggle_uv_select('o');
else
toggle_uv_select('f');
}
break;
case EKEY :
if(okee("Unwrap"))
@@ -4840,7 +4867,7 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
else if((G.qual==LR_SHIFTKEY))
hide_tface_uv(1);
else if((G.qual==0))
hide_tface_uv(0);
hide_tface_uv(0);
break;
case LKEY:
if(G.qual==0)