[Bf-blender-cvs] [1be01b3d5b7] filebrowser_redesign: Merge 'master' into 'filebrowser_redesign'

Julian Eisel noreply at git.blender.org
Wed Apr 24 15:16:50 CEST 2019


Commit: 1be01b3d5b73feea2a3de1a1ce33e47f1c7edba6
Author: Julian Eisel
Date:   Fri Apr 19 22:15:34 2019 +0200
Branches: filebrowser_redesign
https://developer.blender.org/rB1be01b3d5b73feea2a3de1a1ce33e47f1c7edba6

Merge 'master' into 'filebrowser_redesign'

===================================================================



===================================================================

diff --cc source/blender/editors/screen/area.c
index 5be930b2772,f0e8fb3fa2f..94ee6ae498b
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@@ -1139,230 -1188,236 +1188,233 @@@ bool ED_region_is_overlap(int spacetype
  static void region_rect_recursive(
      ScrArea *sa, ARegion *ar, rcti *remainder, rcti *overlap_remainder, int quad)
  {
- 	rcti *remainder_prev = remainder;
- 
- 	if (ar == NULL)
- 		return;
- 
- 	int prev_winx = ar->winx;
- 	int prev_winy = ar->winy;
- 
- 	/* no returns in function, winrct gets set in the end again */
- 	BLI_rcti_init(&ar->winrct, 0, 0, 0, 0);
- 
- 	/* for test; allow split of previously defined region */
- 	if (ar->alignment & RGN_SPLIT_PREV)
- 		if (ar->prev)
- 			remainder = &ar->prev->winrct;
- 
- 	int alignment = ar->alignment & ~RGN_SPLIT_PREV;
- 
- 	/* set here, assuming userpref switching forces to call this again */
- 	ar->overlap = ED_region_is_overlap(sa->spacetype, ar->regiontype);
- 
- 	/* clear state flags first */
- 	ar->flag &= ~(RGN_FLAG_TOO_SMALL | RGN_FLAG_SIZE_CLAMP_X | RGN_FLAG_SIZE_CLAMP_Y);
- 	/* user errors */
- 	if ((ar->next == NULL) && !ELEM(alignment, RGN_ALIGN_QSPLIT, RGN_ALIGN_FLOAT)) {
- 		alignment = RGN_ALIGN_NONE;
- 	}
- 
- 	/* prefsize, taking into account DPI */
- 	int prefsizex = UI_DPI_FAC * ((ar->sizex > 1) ? ar->sizex + 0.5f : ar->type->prefsizex);
- 	int prefsizey;
- 
- 	if (ar->flag & RGN_FLAG_PREFSIZE_OR_HIDDEN) {
- 		prefsizex = UI_DPI_FAC * ar->type->prefsizex;
- 		prefsizey = UI_DPI_FAC * ar->type->prefsizey;
- 	}
- 	else if (ar->regiontype == RGN_TYPE_HEADER) {
- 		prefsizey = ED_area_headersize();
- 	}
- 	else if (ar->regiontype == RGN_TYPE_FOOTER) {
- 		prefsizey = ED_area_footersize();
- 	}
- 	else if (ED_area_is_global(sa)) {
- 		prefsizey = ED_region_global_size_y();
- 	}
- 	else {
- 		prefsizey = UI_DPI_FAC * (ar->sizey > 1 ? ar->sizey + 0.5f : ar->type->prefsizey);
- 	}
- 
- 	if (ar->flag & RGN_FLAG_HIDDEN) {
- 		/* hidden is user flag */
- 	}
- 	else if (alignment == RGN_ALIGN_FLOAT) {
- 		/**
- 		 * \note Currently this window type is only used for #RGN_TYPE_HUD,
- 		 * We expect the panel to resize it's self to be larger.
- 		 *
- 		 * This aligns to the lower left of the area.
- 		 */
- 		const int size_min[2] = {UI_UNIT_X, UI_UNIT_Y};
- 		rcti overlap_remainder_margin = *overlap_remainder;
+   rcti *remainder_prev = remainder;
+ 
+   if (ar == NULL)
+     return;
+ 
+   int prev_winx = ar->winx;
+   int prev_winy = ar->winy;
+ 
+   /* no returns in function, winrct gets set in the end again */
+   BLI_rcti_init(&ar->winrct, 0, 0, 0, 0);
+ 
+   /* for test; allow split of previously defined region */
+   if (ar->alignment & RGN_SPLIT_PREV)
+     if (ar->prev)
+       remainder = &ar->prev->winrct;
+ 
+   int alignment = ar->alignment & ~RGN_SPLIT_PREV;
+ 
+   /* set here, assuming userpref switching forces to call this again */
+   ar->overlap = ED_region_is_overlap(sa->spacetype, ar->regiontype);
+ 
+   /* clear state flags first */
+   ar->flag &= ~(RGN_FLAG_TOO_SMALL | RGN_FLAG_SIZE_CLAMP_X | RGN_FLAG_SIZE_CLAMP_Y);
+   /* user errors */
+   if ((ar->next == NULL) && !ELEM(alignment, RGN_ALIGN_QSPLIT, RGN_ALIGN_FLOAT)) {
+     alignment = RGN_ALIGN_NONE;
+   }
+ 
+   /* prefsize, taking into account DPI */
+   int prefsizex = UI_DPI_FAC * ((ar->sizex > 1) ? ar->sizex + 0.5f : ar->type->prefsizex);
+   int prefsizey;
+ 
+   if (ar->flag & RGN_FLAG_PREFSIZE_OR_HIDDEN) {
+     prefsizex = UI_DPI_FAC * ar->type->prefsizex;
+     prefsizey = UI_DPI_FAC * ar->type->prefsizey;
+   }
+   else if (ar->regiontype == RGN_TYPE_HEADER) {
+     prefsizey = ED_area_headersize();
+   }
+   else if (ar->regiontype == RGN_TYPE_TOOL_HEADER) {
+     prefsizey = ED_area_headersize();
+   }
+   else if (ar->regiontype == RGN_TYPE_FOOTER) {
+     prefsizey = ED_area_footersize();
+   }
+   else if (ED_area_is_global(sa)) {
+     prefsizey = ED_region_global_size_y();
+   }
 -  else if (ar->regiontype == RGN_TYPE_UI && sa->spacetype == SPACE_FILE) {
 -    prefsizey = UI_UNIT_Y * 2 + (UI_UNIT_Y / 2);
 -  }
+   else {
+     prefsizey = UI_DPI_FAC * (ar->sizey > 1 ? ar->sizey + 0.5f : ar->type->prefsizey);
+   }
+ 
+   if (ar->flag & RGN_FLAG_HIDDEN) {
+     /* hidden is user flag */
+   }
+   else if (alignment == RGN_ALIGN_FLOAT) {
+     /**
+      * \note Currently this window type is only used for #RGN_TYPE_HUD,
+      * We expect the panel to resize it's self to be larger.
+      *
+      * This aligns to the lower left of the area.
+      */
+     const int size_min[2] = {UI_UNIT_X, UI_UNIT_Y};
+     rcti overlap_remainder_margin = *overlap_remainder;
      BLI_rcti_resize(&overlap_remainder_margin,
- 		        max_ii(0, BLI_rcti_size_x(overlap_remainder) - UI_UNIT_X / 2),
- 		        max_ii(0, BLI_rcti_size_y(overlap_remainder) - UI_UNIT_Y / 2));
- 		ar->winrct.xmin = overlap_remainder_margin.xmin;
- 		ar->winrct.ymin = overlap_remainder_margin.ymin;
- 		ar->winrct.xmax = ar->winrct.xmin + prefsizex - 1;
- 		ar->winrct.ymax = ar->winrct.ymin + prefsizey - 1;
- 
- 		BLI_rcti_isect(&ar->winrct, &overlap_remainder_margin, &ar->winrct);
- 
- 		if (BLI_rcti_size_x(&ar->winrct) != prefsizex - 1) {
- 			ar->flag |= RGN_FLAG_SIZE_CLAMP_X;
- 		}
- 		if (BLI_rcti_size_y(&ar->winrct) != prefsizey - 1) {
- 			ar->flag |= RGN_FLAG_SIZE_CLAMP_Y;
- 		}
- 
- 		/* We need to use a test that wont have been previously clamped. */
- 		rcti winrct_test = {
- 			.xmin = ar->winrct.xmin,
- 			.ymin = ar->winrct.ymin,
- 			.xmax = ar->winrct.xmin + size_min[0],
- 			.ymax = ar->winrct.ymin + size_min[1],
- 		};
- 		BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
- 		if (BLI_rcti_size_x(&winrct_test) < size_min[0] ||
+                     max_ii(0, BLI_rcti_size_x(overlap_remainder) - UI_UNIT_X / 2),
+                     max_ii(0, BLI_rcti_size_y(overlap_remainder) - UI_UNIT_Y / 2));
+     ar->winrct.xmin = overlap_remainder_margin.xmin;
+     ar->winrct.ymin = overlap_remainder_margin.ymin;
+     ar->winrct.xmax = ar->winrct.xmin + prefsizex - 1;
+     ar->winrct.ymax = ar->winrct.ymin + prefsizey - 1;
+ 
+     BLI_rcti_isect(&ar->winrct, &overlap_remainder_margin, &ar->winrct);
+ 
+     if (BLI_rcti_size_x(&ar->winrct) != prefsizex - 1) {
+       ar->flag |= RGN_FLAG_SIZE_CLAMP_X;
+     }
+     if (BLI_rcti_size_y(&ar->winrct) != prefsizey - 1) {
+       ar->flag |= RGN_FLAG_SIZE_CLAMP_Y;
+     }
+ 
+     /* We need to use a test that wont have been previously clamped. */
+     rcti winrct_test = {
+         .xmin = ar->winrct.xmin,
+         .ymin = ar->winrct.ymin,
+         .xmax = ar->winrct.xmin + size_min[0],
+         .ymax = ar->winrct.ymin + size_min[1],
+     };
+     BLI_rcti_isect(&winrct_test, &overlap_remainder_margin, &winrct_test);
+     if (BLI_rcti_size_x(&winrct_test) < size_min[0] ||
          BLI_rcti_size_y(&winrct_test) < size_min[1]) {
- 			ar->flag |= RGN_FLAG_TOO_SMALL;
- 		}
- 	}
- 	else if (rct_fits(remainder, 'v', 1) < 0 || rct_fits(remainder, 'h', 1) < 0) {
- 		/* remainder is too small for any usage */
- 		ar->flag |= RGN_FLAG_TOO_SMALL;
- 	}
- 	else if (alignment == RGN_ALIGN_NONE) {
- 		/* typically last region */
- 		ar->winrct = *remainder;
- 		BLI_rcti_init(remainder, 0, 0, 0, 0);
- 	}
- 	else if (alignment == RGN_ALIGN_TOP || alignment == RGN_ALIGN_BOTTOM) {
- 		rcti *winrct = (ar->overlap) ? overlap_remainder : remainder;
- 
- 		if (rct_fits(winrct, 'v', prefsizey) < 0) {
- 			ar->flag |= RGN_FLAG_TOO_SMALL;
- 		}
- 		else {
- 			int fac = rct_fits(winrct, 'v', prefsizey);
- 
- 			if (fac < 0)
- 				prefsizey += fac;
- 
- 			ar->winrct = *winrct;
- 
- 			if (alignment == RGN_ALIGN_TOP) {
- 				ar->winrct.ymin = ar->winrct.ymax - prefsizey + 1;
- 				winrct->ymax = ar->winrct.ymin - 1;
- 			}
- 			else {
- 				ar->winrct.ymax = ar->winrct.ymin + prefsizey - 1;
- 				winrct->ymin = ar->winrct.ymax + 1;
- 			}
- 		}
- 	}
- 	else if (ELEM(alignment, RGN_ALIGN_LEFT, RGN_ALIGN_RIGHT)) {
- 		rcti *winrct = (ar->overlap) ? overlap_remainder : remainder;
- 
- 		if (rct_fits(winrct, 'h', prefsizex) < 0) {
- 			ar->flag |= RGN_FLAG_TOO_SMALL;
- 		}
- 		else {
- 			int fac = rct_fits(winrct, 'h', prefsizex);
- 
- 			if (fac < 0)
- 				prefsizex += fac;
- 
- 			ar->winrct = *winrct;
- 
- 			if (alignment == RGN_ALIGN_RIGHT) {
- 				ar->winrct.xmin = ar->winrct.xmax - prefsizex + 1;
- 				winrct->xmax = ar->winrct.xmin - 1;
- 			}
- 			else {
- 				ar->winrct.xmax = ar->winrct.xmin + prefsizex - 1;
- 				winrct->xmin = ar->winrct.xmax + 1;
- 			}
- 		}
- 	}
- 	else if (alignment == RGN_ALIGN_VSPLIT || alignment == RGN_ALIGN_HSPLIT) {
- 		/* percentage subdiv*/
- 		ar->winrct = *remainder;
- 
- 		if (alignment == RGN_ALIGN_HSPLIT) {
- 			if (rct_fits(remainder, 'h', prefsizex) > 4) {
- 				ar->winrct.xmax = BLI_rcti_cent_x(remainder);
- 				remainder->xmin = ar->winrct.xmax + 1;
- 			}
- 			else {
- 				BLI_rcti_init(remainder, 0, 0, 0, 0);
- 			}
- 		}
- 		else {
- 			if (rct_fits(remainder, 'v', prefsizey) > 4) {
- 				ar->winrct.ymax = BLI_rcti_cent_y(remainder);
- 				remainder->ymin = ar->winrct.ymax + 1;
- 			}
- 			else {
- 				BLI_rcti_init(remainder, 0, 0, 0, 0);
- 			}
- 		}
- 	}
- 	else if (alignment == RGN_ALIGN_QSPLIT) {
- 		ar->winrct = *remainder;
- 
- 		/* test if there's still 4 regions left */
- 		if (quad == 0) {
- 			ARegion *artest = ar->next;
- 			int count = 1;
- 
- 			while (artest) {
- 				artest->alignment = RGN_ALIGN_QSPLIT;
- 				artest = artest->next;
- 				count++;
- 			}
- 
- 			if (count != 4) {
- 				/* let's stop adding regions */
- 				BLI_rcti_init(remainder, 0, 0, 0, 0);
- 				if (G.debug & G_DEBUG)
- 					printf("region quadsplit failed\n");
- 			}
- 			else {
- 				quad = 1;
- 			}
- 		}
- 		if (quad) {
- 			if (quad == 1) { /* left bottom */
- 				ar->winrct.xmax = BLI_rcti_cent_x(remainder);
- 				ar->winrct.ymax = BLI_rcti_cent_y(remainder);
- 			}
- 			else if (quad == 2) { /* left top */
- 				ar->winrct.xmax = BLI_rcti_cent_x(remainder);
- 				ar->winrct.ymin = BLI_rcti_cent_y(remainder) + 1;
- 			}
- 			else if (quad == 3) { /* right bottom */
- 				ar->winrct.xmin = BLI_rcti_cent_x(remainder) + 1;
- 				ar->winrct.ymax = BLI_rcti_cent_y(remainder);
- 			}
- 			el

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list