Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2011-01-15 17:07:11 +0300
committerTon Roosendaal <ton@blender.org>2011-01-15 17:07:11 +0300
commit384025f1a0ceaadfd1d623cc61f25d7426301a5b (patch)
tree792051d3d2978de5896875aa7989b0fb78855383 /source/blender/editors/mesh
parent4cb79661eb4b69b66a5c5c980790db360c7d7332 (diff)
Bugfix #25636
On using loop-selects, the active vertex got cleared, it could still simply indicate one of the vertices of indicated edge to become active. That keeps the Ui for vertex-groups drawing correct, for example. Also made loop-ring select store active edge for tools, like the loop-select.
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c7
-rw-r--r--source/blender/editors/mesh/loopcut.c12
2 files changed, 16 insertions, 3 deletions
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index cdccc1e0110..818f92c73c6 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -2078,8 +2078,11 @@ static void mouse_mesh_loop(bContext *C, short mval[2], short extend, short ring
// if (EM_texFaceCheck())
/* sets as active, useful for other tools */
- if(select && em->selectmode & SCE_SELECT_EDGE) {
- EM_store_selection(em, eed, EDITEDGE);
+ if(select) {
+ if(em->selectmode & SCE_SELECT_VERTEX)
+ EM_store_selection(em, eed->v1, EDITVERT);
+ if(em->selectmode & SCE_SELECT_EDGE)
+ EM_store_selection(em, eed, EDITEDGE);
}
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c
index 42df009bb16..933aed0a758 100644
--- a/source/blender/editors/mesh/loopcut.c
+++ b/source/blender/editors/mesh/loopcut.c
@@ -272,9 +272,12 @@ static void ringsel_finish(bContext *C, wmOperator *op)
int cuts= (lcd->do_cut)? RNA_int_get(op->ptr,"number_cuts"): 0;
if (lcd->eed) {
+ EditMesh *em = BKE_mesh_get_editmesh(lcd->ob->data);
+
edgering_sel(lcd, cuts, 1);
+
if (lcd->do_cut) {
- EditMesh *em = BKE_mesh_get_editmesh(lcd->ob->data);
+
esubdivideflag(lcd->ob, em, SELECT, 0.0f, 0.0f, 0, cuts, 0, SUBDIV_SELECT_LOOPCUT);
/* force edge slide to edge select mode in in face select mode */
@@ -293,6 +296,13 @@ static void ringsel_finish(bContext *C, wmOperator *op)
WM_event_add_notifier(C, NC_GEOM|ND_DATA, lcd->ob->data);
}
else {
+
+ /* sets as active, useful for other tools */
+ if(em->selectmode & SCE_SELECT_VERTEX)
+ EM_store_selection(em, lcd->eed->v1, EDITVERT);
+ if(em->selectmode & SCE_SELECT_EDGE)
+ EM_store_selection(em, lcd->eed, EDITEDGE);
+
EM_selectmode_flush(lcd->em);
WM_event_add_notifier(C, NC_GEOM|ND_SELECT, lcd->ob->data);
}