[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51545] trunk/blender/source/blender/ editors/screen/screen_ops.c: skip hidden datablocks when switching screens.

Campbell Barton ideasman42 at gmail.com
Tue Oct 23 17:30:42 CEST 2012


Revision: 51545
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51545
Author:   campbellbarton
Date:     2012-10-23 15:30:41 +0000 (Tue, 23 Oct 2012)
Log Message:
-----------
skip hidden datablocks when switching screens.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_ops.c

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2012-10-23 15:07:09 UTC (rev 51544)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2012-10-23 15:30:41 UTC (rev 51545)
@@ -2071,15 +2071,23 @@
 
 /* ************** switch screen operator ***************************** */
 
+static int screen_set_is_ok(bScreen *screen, bScreen *screen_prev)
+{
+	return ((screen->winid == 0)    &&
+	        (screen->full == 0)     &&
+	        (screen != screen_prev) &&
+	        (screen->id.name[2] != '.' || !(U.uiflag & USER_HIDE_DOT)));
+}
 
 /* function to be called outside UI context, or for redo */
 static int screen_set_exec(bContext *C, wmOperator *op)
 {
+	Main *bmain = CTX_data_main(C);
 	bScreen *screen = CTX_wm_screen(C);
 	bScreen *screen_prev = screen;
 	
 	ScrArea *sa = CTX_wm_area(C);
-	int tot = BLI_countlist(&CTX_data_main(C)->screen);
+	int tot = BLI_countlist(&bmain->screen);
 	int delta = RNA_int_get(op->ptr, "delta");
 	
 	/* temp screens are for userpref or render display */
@@ -2089,17 +2097,19 @@
 	if (delta == 1) {
 		while (tot--) {
 			screen = screen->id.next;
-			if (screen == NULL) screen = CTX_data_main(C)->screen.first;
-			if (screen->winid == 0 && screen->full == 0 && screen != screen_prev)
+			if (screen == NULL) screen = bmain->screen.first;
+			if (screen_set_is_ok(screen, screen_prev)) {
 				break;
+			}
 		}
 	}
 	else if (delta == -1) {
 		while (tot--) {
 			screen = screen->id.prev;
-			if (screen == NULL) screen = CTX_data_main(C)->screen.last;
-			if (screen->winid == 0 && screen->full == 0 && screen != screen_prev)
+			if (screen == NULL) screen = bmain->screen.last;
+			if (screen_set_is_ok(screen, screen_prev)) {
 				break;
+			}
 		}
 	}
 	else {




More information about the Bf-blender-cvs mailing list