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>2014-04-25 21:18:18 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-04-25 21:18:18 +0400
commitd0533b6c07f525b103bed1003c5a89b0c83fe241 (patch)
treeaf8c09e983cb32e323bd963ba24abebef8384c80 /source/blender/editors/screen
parenta66ae2b4ae433636b6d5fdd0aaf126b595b5faba (diff)
Fix T39896: lock view rotation, behavior not consistent
Diffstat (limited to 'source/blender/editors/screen')
-rw-r--r--source/blender/editors/screen/screen_ops.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 91d99e32559..666ba003948 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -2869,9 +2869,11 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
ARegion *ar = CTX_wm_region(C);
/* some rules... */
- if (ar->regiontype != RGN_TYPE_WINDOW)
+ if (ar->regiontype != RGN_TYPE_WINDOW) {
BKE_report(op->reports, RPT_ERROR, "Only window region can be 4-splitted");
+ }
else if (ar->alignment == RGN_ALIGN_QSPLIT) {
+ /* Exit quad-view */
ScrArea *sa = CTX_wm_area(C);
ARegion *arn;
@@ -2879,10 +2881,19 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
ar->alignment = 0;
if (sa->spacetype == SPACE_VIEW3D) {
+ ARegion *ar_iter;
RegionView3D *rv3d = ar->regiondata;
- rv3d->viewlock_quad = rv3d->viewlock | RV3D_VIEWLOCK_INIT;
+ rv3d->viewlock_quad = RV3D_VIEWLOCK_INIT;
rv3d->viewlock = 0;
rv3d->rflag &= ~RV3D_CLIPPING;
+
+ /* accumulate locks, incase they're mixed */
+ for (ar_iter = sa->regionbase.first; ar_iter; ar_iter = ar_iter->next) {
+ if (ar_iter->regiontype == RGN_TYPE_WINDOW) {
+ RegionView3D *rv3d_iter = ar_iter->regiondata;
+ rv3d->viewlock_quad |= rv3d_iter->viewlock;
+ }
+ }
}
for (ar = sa->regionbase.first; ar; ar = arn) {
@@ -2897,9 +2908,11 @@ static int region_quadview_exec(bContext *C, wmOperator *op)
ED_area_tag_redraw(sa);
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
}
- else if (ar->next)
+ else if (ar->next) {
BKE_report(op->reports, RPT_ERROR, "Only last region can be 4-splitted");
+ }
else {
+ /* Enter quad-view */
ScrArea *sa = CTX_wm_area(C);
ARegion *newar;
int count;