[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56571] trunk/blender/source/blender: fix [#30862] "Lock" and "Box" Quad View options won't stay put when toggling
Campbell Barton
ideasman42 at gmail.com
Wed May 8 15:01:05 CEST 2013
Revision: 56571
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56571
Author: campbellbarton
Date: 2013-05-08 13:01:05 +0000 (Wed, 08 May 2013)
Log Message:
-----------
fix [#30862] "Lock" and "Box" Quad View options won't stay put when toggling
Modified Paths:
--------------
trunk/blender/source/blender/editors/screen/screen_ops.c
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c 2013-05-08 13:00:52 UTC (rev 56570)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c 2013-05-08 13:01:05 UTC (rev 56571)
@@ -2707,6 +2707,22 @@
}
}
+static void region_quadview_init_rv3d(ScrArea *sa, ARegion *ar,
+ const char viewlock, const char view, const char persp)
+{
+ RegionView3D *rv3d = ar->regiondata;
+
+ rv3d->viewlock = viewlock;
+ rv3d->view = view;
+ rv3d->persp = persp;
+
+ ED_view3d_lock(rv3d);
+ view3d_localview_update_rv3d(rv3d);
+ if ((viewlock & RV3D_BOXCLIP) && (persp == RV3D_ORTHO)) {
+ ED_view3d_quadview_update(sa, ar, true);
+ }
+}
+
/* insert a region in the area region list */
static int region_quadview_exec(bContext *C, wmOperator *op)
{
@@ -2724,6 +2740,7 @@
if (sa->spacetype == SPACE_VIEW3D) {
RegionView3D *rv3d = ar->regiondata;
+ rv3d->viewlock_quad = rv3d->viewlock | RV3D_VIEWLOCK_INIT;
rv3d->viewlock = 0;
rv3d->rflag &= ~RV3D_CLIPPING;
}
@@ -2764,38 +2781,16 @@
*
* We could avoid manipulating rv3d->localvd here if exiting
* localview with a 4-split would assign these view locks */
- RegionView3D *rv3d;
+ RegionView3D *rv3d = ar->regiondata;
+ const char viewlock = (rv3d->viewlock_quad & RV3D_VIEWLOCK_INIT) ?
+ (rv3d->viewlock_quad & ~RV3D_VIEWLOCK_INIT) : RV3D_LOCKED;
- rv3d = ar->regiondata;
- rv3d->viewlock = RV3D_LOCKED; rv3d->view = RV3D_VIEW_FRONT; rv3d->persp = RV3D_ORTHO;
- ED_view3d_lock(rv3d);
- view3d_localview_update_rv3d(rv3d);
-
- ar = ar->next;
- rv3d = ar->regiondata;
- rv3d->viewlock = RV3D_LOCKED; rv3d->view = RV3D_VIEW_TOP; rv3d->persp = RV3D_ORTHO;
- ED_view3d_lock(rv3d);
- view3d_localview_update_rv3d(rv3d);
-
- ar = ar->next;
- rv3d = ar->regiondata;
- rv3d->viewlock = RV3D_LOCKED; rv3d->view = RV3D_VIEW_RIGHT; rv3d->persp = RV3D_ORTHO;
- ED_view3d_lock(rv3d);
- view3d_localview_update_rv3d(rv3d);
-
- ar = ar->next;
- rv3d = ar->regiondata;
+ region_quadview_init_rv3d(sa, ar, viewlock, RV3D_VIEW_FRONT, RV3D_ORTHO);
+ region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, RV3D_VIEW_TOP, RV3D_ORTHO);
+ region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, RV3D_VIEW_RIGHT, RV3D_ORTHO);
+ if (v3d->camera) region_quadview_init_rv3d(sa, (ar = ar->next), 0, RV3D_VIEW_CAMERA, RV3D_CAMOB);
+ else region_quadview_init_rv3d(sa, (ar = ar->next), 0, RV3D_VIEW_PERSPORTHO, RV3D_PERSP);
- /* check if we have a camera */
- if (v3d->camera) {
- rv3d->view = RV3D_VIEW_CAMERA; rv3d->persp = RV3D_CAMOB;
- }
- else {
- rv3d->view = RV3D_VIEW_PERSPORTHO; rv3d->persp = RV3D_PERSP;
- }
-
- ED_view3d_lock(rv3d);
- view3d_localview_update_rv3d(rv3d);
}
ED_area_tag_redraw(sa);
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2013-05-08 13:00:52 UTC (rev 56570)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2013-05-08 13:01:05 UTC (rev 56571)
@@ -190,7 +190,7 @@
void ED_view3d_clipping_set(RegionView3D *rv3d)
{
double plane[4];
- const unsigned int tot = (rv3d->viewlock) ? 4 : 6;
+ const unsigned int tot = (rv3d->viewlock & RV3D_BOXCLIP) ? 4 : 6;
unsigned int a;
for (a = 0; a < tot; a++) {
Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2013-05-08 13:00:52 UTC (rev 56570)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2013-05-08 13:01:05 UTC (rev 56571)
@@ -129,7 +129,8 @@
char persp;
char view;
char viewlock;
- char pad[4];
+ char viewlock_quad; /* options for quadview (store while out of quad view) */
+ char pad[3];
short twdrawflag;
short rflag;
@@ -246,9 +247,11 @@
#define RV3D_GPULIGHT_UPDATE 16
/* RegionView3d->viewlock */
-#define RV3D_LOCKED 1
-#define RV3D_BOXVIEW 2
-#define RV3D_BOXCLIP 4
+#define RV3D_LOCKED (1 << 0)
+#define RV3D_BOXVIEW (1 << 1)
+#define RV3D_BOXCLIP (1 << 2)
+/* RegionView3d->viewlock_quad */
+#define RV3D_VIEWLOCK_INIT (1 << 7)
/* RegionView3d->view */
#define RV3D_VIEW_USER 0
More information about the Bf-blender-cvs
mailing list