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>2004-12-15 14:36:46 +0300
committerTon Roosendaal <ton@blender.org>2004-12-15 14:36:46 +0300
commit6719d88aab15627bdbe05f7ac116addffd2e165f (patch)
tree509395a67234006eecac181375f9214b06c5a3b1
parent82421a2d7097698eb7689c7d128a8c8d6e8dea9f (diff)
Bug #2019
Separate in Mesh editmode, selectmode 'face', and with a selection that used to be in vertex mode a full select (like selecting the 2 opposing faces in a cube) caused crash. There was still no good face-select awareness there... tsk! :)
-rw-r--r--source/blender/src/drawview.c16
-rw-r--r--source/blender/src/editmesh.c46
-rw-r--r--source/blender/src/editmesh_tools.c2
3 files changed, 19 insertions, 45 deletions
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index 3692e5c0e5f..9f60de5153d 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -2502,15 +2502,15 @@ void inner_play_anim_loop(int init, int mode)
set_timecursor(CFRA);
- clear_all_constraints();
- do_all_ipos();
- BPY_do_all_scripts(SCRIPT_FRAMECHANGED);
- do_all_keys();
- do_all_actions();
- do_all_ikas();
-
+ //clear_all_constraints();
+ //do_all_ipos();
+ //BPY_do_all_scripts(SCRIPT_FRAMECHANGED);
+ //do_all_keys();
+ //do_all_actions();
+ //do_all_ikas();
+ update_for_newframe_muted();
- test_all_displists();
+ //test_all_displists();
#ifdef NAN_LINEAR_PHYSICS
update_anim_sumo();
diff --git a/source/blender/src/editmesh.c b/source/blender/src/editmesh.c
index 6a7372ae16a..e7b6812c73c 100644
--- a/source/blender/src/editmesh.c
+++ b/source/blender/src/editmesh.c
@@ -1300,7 +1300,6 @@ void separate_mesh(void)
Base *base, *oldbase;
ListBase edve, eded, edvl;
float trans[9];
- int ok, flag;
TEST_EDITMESH
@@ -1332,23 +1331,14 @@ void separate_mesh(void)
base= base->next;
}
- /* test for split */
- ok= 0;
- eed= em->edges.first;
- while(eed) {
- flag= (eed->v1->f & SELECT)+(eed->v2->f & SELECT);
- if(flag==SELECT) {
- ok= 1;
- break;
- }
- eed= eed->next;
- }
- if(ok) {
- /* SPLIT: first make duplicate */
- adduplicateflag(SELECT);
- /* SPLIT: old faces have 3x flag 128 set, delete these ones */
- delfaceflag(128);
- }
+ /* no test for split, split doesn't split when a loose part is selected */
+ /* SPLIT: first make duplicate */
+ adduplicateflag(SELECT);
+ /* SPLIT: old faces have 3x flag 128 set, delete these ones */
+ delfaceflag(128);
+
+ /* since we do tricky things with verts/edges/faces, this makes sure all is selected coherent */
+ EM_selectmode_set();
/* set apart: everything that is not selected */
edve.first= edve.last= eded.first= eded.last= edvl.first= edvl.last= 0;
@@ -1438,7 +1428,7 @@ void separate_mesh_loose(void)
Base *base, *oldbase;
ListBase edve, eded, edvl;
float trans[9];
- int ok, vertsep=0, flag;
+ int vertsep=0;
short done=0, check=1;
TEST_EDITMESH
@@ -1514,23 +1504,7 @@ void separate_mesh_loose(void)
*/
if(G.totvert==vertsep) done=1;
else{
- /* Test for splitting: Separate selected */
- ok= 0;
- eed= em->edges.first;
- while(eed) {
- flag= (eed->v1->f & SELECT)+(eed->v2->f & SELECT);
- if(flag==SELECT) {
- ok= 1;
- break;
- }
- eed= eed->next;
- }
- if(ok) {
- /* SPLIT: first make duplicate */
- adduplicateflag(SELECT);
- /* SPLIT: old faces have 3x flag 128 set, delete these ones */
- delfaceflag(128);
- }
+ /* No splitting: select connected goes fine */
EM_select_flush(); // from verts->edges->faces
diff --git a/source/blender/src/editmesh_tools.c b/source/blender/src/editmesh_tools.c
index cde1f9dba79..2401df87f69 100644
--- a/source/blender/src/editmesh_tools.c
+++ b/source/blender/src/editmesh_tools.c
@@ -578,7 +578,7 @@ void split_mesh(void)
countall();
allqueue(REDRAWVIEW3D, 0);
makeDispList(G.obedit);
- BIF_undo_push("Hash");
+ BIF_undo_push("Split");
}