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:
authorCampbell Barton <ideasman42@gmail.com>2010-02-08 13:12:02 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-02-08 13:12:02 +0300
commit7f3e8b6da8e03e9cb3c47ce8eef92e532a86eed5 (patch)
treeb5604e9c00965495c1c63a74952bb1a9c17ba3de /source/blender/editors/space_view3d/view3d_select.c
parent46c0caf7c6eeace0ec218f7a51e5810d0bb3020e (diff)
[#21018] Lasso select fails [26694]
fix for #20936 broke lasso and border select whe not in wire view.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_select.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index b5de24b9ae7..c44b7ec6b59 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -469,18 +469,24 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves
/* workaround: init mats first, EM_mask_init_backbuf_border can change
view matrix to pixel space, breaking edge select with backbuf. fixes bug #20936 */
- ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
+
+ /* [#21018] breaks zbuf select. run below. only if bbsel fails */
+ /* ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d) */
+
+ glLoadMatrixf(vc->rv3d->viewmat);
bbsel= EM_mask_init_backbuf_border(vc, mcords, moves, rect.xmin, rect.ymin, rect.xmax, rect.ymax);
if(ts->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
EM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
+ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
mesh_foreachScreenVert(vc, do_lasso_select_mesh__doSelectVert, &data, 1);
}
}
if(ts->selectmode & SCE_SELECT_EDGE) {
/* Does both bbsel and non-bbsel versions (need screen cos for both) */
+ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
data.pass = 0;
mesh_foreachScreenEdge(vc, do_lasso_select_mesh__doSelectEdge, &data, 0);
@@ -495,6 +501,7 @@ static void do_lasso_select_mesh(ViewContext *vc, short mcords[][2], short moves
if (bbsel) {
EM_backbuf_checkAndSelectFaces(vc->em, select);
} else {
+ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
mesh_foreachScreenFace(vc, do_lasso_select_mesh__doSelectFace, &data);
}
}
@@ -1397,13 +1404,19 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exte
/* workaround: init mats first, EM_mask_init_backbuf_border can change
view matrix to pixel space, breaking edge select with backbuf. fixes bug #20936 */
- ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d); /* for foreach's screen/vert projection */
+ /*ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);*/ /* for foreach's screen/vert projection */
+
+ /* [#21018] breaks zbuf select. run below. only if bbsel fails */
+ /* ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d) */
+
+ glLoadMatrixf(vc->rv3d->viewmat);
bbsel= EM_init_backbuf_border(vc, rect->xmin, rect->ymin, rect->xmax, rect->ymax);
if(ts->selectmode & SCE_SELECT_VERTEX) {
if (bbsel) {
EM_backbuf_checkAndSelectVerts(vc->em, select);
} else {
+ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
mesh_foreachScreenVert(vc, do_mesh_box_select__doSelectVert, &data, 1);
}
}
@@ -1423,6 +1436,7 @@ static void do_mesh_box_select(ViewContext *vc, rcti *rect, int select, int exte
if(bbsel) {
EM_backbuf_checkAndSelectFaces(vc->em, select);
} else {
+ ED_view3d_init_mats_rv3d(vc->obedit, vc->rv3d);
mesh_foreachScreenFace(vc, do_mesh_box_select__doSelectFace, &data);
}
}