[Bf-blender-cvs] [b789e5a82a0] userpref_redesign: Own left-bottom aligned region for Save Preference button

Julian Eisel noreply at git.blender.org
Mon Dec 24 13:01:01 CET 2018


Commit: b789e5a82a0a5953e09622f43f20895456e352ab
Author: Julian Eisel
Date:   Mon Dec 24 00:15:36 2018 +0100
Branches: userpref_redesign
https://developer.blender.org/rBb789e5a82a0a5953e09622f43f20895456e352ab

Own left-bottom aligned region for Save Preference button

* Own region allows scrolling the navigation bar independently (Save
  Preference button stays visible).
* We may want to change background color and size, but I'll leave that
  for others to do.
* Region can be hidden but not scaled or scrolled.
* Bumps subversion.
* Added new execute region type which we may want to use in more places.
* Had to do some tweaks to drawing/layout code to get the dynamically
  sized region to work without glitches.
* Also correct navigation bar versioning code to use full area width for
  header.

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

M	release/datafiles/userdef/userdef_default_theme.c
M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/blenloader/intern/versioning_userdef.c
M	source/blender/editors/interface/interface_panel.c
M	source/blender/editors/interface/resources.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/editors/space_userpref/space_userpref.c
M	source/blender/makesdna/DNA_screen_types.h
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_screen.c
M	source/blender/makesrna/intern/rna_userdef.c

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

diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index 008aeffd9bd..7a7f804bbed 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -822,6 +822,7 @@ const bTheme U_theme_default = {
 		.button_text = RGBA(0xe5e5e5ff),
 		.button_text_hi = RGBA(0xffffffff),
 		.navigation_bar = RGBA(0x4b4b4bff),
+		.execution_buts = RGBA(0x4b4b4bff),
 		.panelcolors = {
 			.header = RGBA(0x42424200),
 			.back = RGBA(0x333333b3),
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 44b09701541..e0a383b9b64 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -36,12 +36,6 @@ class USERPREF_HT_header(Header):
 
         layout.template_header()
 
-        row = layout.row()
-
-        row.separator_spacer()
-
-        row.operator("wm.save_userpref")
-
 
 class USERPREF_PT_navigation(Panel):
     bl_label = ""
@@ -62,6 +56,24 @@ class USERPREF_PT_navigation(Panel):
         col.prop(prefs, "active_section", expand=True)
 
 
+class USERPREF_PT_save_preferences(Panel):
+    bl_label = ""
+    bl_space_type = 'PREFERENCES'
+    bl_region_type = 'EXECUTE'
+    bl_options = {'HIDE_HEADER'}
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'EXEC_AREA'
+
+        prefs = context.preferences
+
+        layout.scale_x = 1.3
+        layout.scale_y = 1.3
+
+        layout.operator("wm.save_userpref")
+
+
 class PreferencePanel(Panel):
     bl_space_type = 'PREFERENCES'
     bl_region_type = 'WINDOW'
@@ -1498,11 +1510,6 @@ class USERPREF_PT_keymap(Panel):
         prefs = context.preferences
         return (prefs.active_section == 'KEYMAP')
 
-    @staticmethod
-    def draw_input_prefs(inputs, layout):
-        import sys
-
-
     def draw(self, context):
         from rna_keymap_ui import draw_keymaps
 
@@ -1517,9 +1524,6 @@ class USERPREF_PT_keymap(Panel):
 
         col = layout.column()
 
-        # Input settings
-        self.draw_input_prefs(keymappref, col)
-
         # Keymap Settings
         draw_keymaps(context, col)
 
@@ -1975,6 +1979,7 @@ classes = (USERPREF_PT_theme_user_interface,) + tuple(ThemeGenericClassGenerator
 classes += (
     USERPREF_HT_header,
     USERPREF_PT_navigation,
+    USERPREF_PT_save_preferences,
 
     USERPREF_PT_interface_display,
     USERPREF_PT_interface_display_info,
diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index 2d044fd9399..bc2212f6091 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -28,7 +28,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         280
-#define BLENDER_SUBVERSION      39
+#define BLENDER_SUBVERSION      40
 /* Several breakages with 280, e.g. collections vs layers */
 #define BLENDER_MINVERSION      280
 #define BLENDER_MINSUBVERSION   0
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index c110594125a..647ccf25c3f 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2420,35 +2420,13 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 						ARegion *navigation_region = BKE_spacedata_find_region_type(slink, area, RGN_TYPE_NAV_BAR);
 
 						if (!navigation_region) {
+							ARegion *main_region = BKE_spacedata_find_region_type(slink, area, RGN_TYPE_WINDOW);
 							ListBase *regionbase = (slink == area->spacedata.first) ?
 							                       &area->regionbase : &slink->regionbase;
 
 							navigation_region = MEM_callocN(sizeof(ARegion), "userpref navigation-region do_versions");
 
-							BLI_addhead(regionbase, navigation_region); /* order matters, addhead not addtail! */
-							navigation_region->regiontype = RGN_TYPE_NAV_BAR;
-							navigation_region->alignment = RGN_ALIGN_LEFT;
-						}
-					}
-				}
-			}
-		}
-	}
-
-	if (!MAIN_VERSION_ATLEAST(bmain, 280, 37)) {
-		for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
-			for (ScrArea *area = screen->areabase.first; area; area = area->next) {
-				for (SpaceLink *slink = area->spacedata.first; slink; slink = slink->next) {
-					if (slink->spacetype == SPACE_USERPREF) {
-						ARegion *navigation_region = BKE_spacedata_find_region_type(slink, area, RGN_TYPE_NAV_BAR);
-
-						if (!navigation_region) {
-							ListBase *regionbase = (slink == area->spacedata.first) ?
-							                           &area->regionbase : &slink->regionbase;
-
-							navigation_region = MEM_callocN(sizeof(ARegion), "userpref navigation-region do_versions");
-
-							BLI_addhead(regionbase, navigation_region); /* order matters, addhead not addtail! */
+							BLI_insertlinkbefore(regionbase, main_region, navigation_region); /* order matters, addhead not addtail! */
 							navigation_region->regiontype = RGN_TYPE_NAV_BAR;
 							navigation_region->alignment = RGN_ALIGN_LEFT;
 						}
@@ -2754,9 +2732,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 		}
 	}
 
-	{
-		/* Versioning code until next subversion bump goes here. */
-
+	if (!MAIN_VERSION_ATLEAST(bmain, 280, 40)) {
 		if (!DNA_struct_elem_find(fd->filesdna, "ToolSettings", "char", "snap_transform_mode_flag")) {
 			for (Scene *scene = bmain->scene.first; scene; scene = scene->id.next) {
 				scene->toolsettings->snap_transform_mode_flag =
@@ -2790,5 +2766,34 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 				}
 			}
 		}
+
+		for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
+			for (ScrArea *area = screen->areabase.first; area; area = area->next) {
+				for (SpaceLink *sl = area->spacedata.first; sl; sl = sl->next) {
+					if (sl->spacetype == SPACE_USERPREF) {
+						ARegion *execute_region = BKE_spacedata_find_region_type(sl, area, RGN_TYPE_EXECUTE);
+
+						if (!execute_region) {
+							ListBase *regionbase = (sl == area->spacedata.first) ? &area->regionbase : &sl->regionbase;
+							ARegion *ar_navbar = BKE_spacedata_find_region_type(sl, area, RGN_TYPE_NAV_BAR);
+
+							execute_region = MEM_callocN(sizeof(ARegion), "execute region for properties");
+
+							BLI_assert(ar_navbar);
+
+							BLI_insertlinkafter(regionbase, ar_navbar, execute_region);
+
+							execute_region->regiontype = RGN_TYPE_EXECUTE;
+							execute_region->alignment = RGN_ALIGN_BOTTOM | RGN_SPLIT_PREV;
+							execute_region->flag |= RGN_FLAG_DYNAMIC_SIZE;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	{
+		/* Versioning code until next subversion bump goes here. */
 	}
 }
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index bb0ad9d3ce5..de5a1c8a79e 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -106,6 +106,11 @@ static void do_versions_theme(UserDef *userdef, bTheme *btheme)
 		copy_v4_v4_char(btheme->tclip.metadatabg, U_theme_default.tima.metadatabg);
 		copy_v4_v4_char(btheme->tclip.metadatatext, U_theme_default.tima.metadatatext);
 	}
+
+	if (!USER_VERSION_ATLEAST(280, 40)) {
+		copy_v4_v4_char(btheme->tuserpref.execution_buts, btheme->tuserpref.navigation_bar);
+	}
+
 #undef USER_VERSION_ATLEAST
 }
 
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 1e97cbc29d0..b8e9ddd26ac 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -147,7 +147,7 @@ static int panel_aligned(ScrArea *sa, ARegion *ar)
 		return BUT_VERTICAL;
 	else if (sa->spacetype == SPACE_IMAGE && ar->regiontype == RGN_TYPE_PREVIEW)
 		return BUT_VERTICAL;
-	else if (ELEM(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS, RGN_TYPE_TOOL_PROPS, RGN_TYPE_HUD, RGN_TYPE_NAV_BAR))
+	else if (ELEM(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS, RGN_TYPE_TOOL_PROPS, RGN_TYPE_HUD, RGN_TYPE_NAV_BAR, RGN_TYPE_EXECUTE))
 		return BUT_VERTICAL;
 
 	return 0;
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 09b8933206e..e48ad21ea62 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -183,6 +183,8 @@ const unsigned char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colo
 						cp = ts->header;
 					else if (theme_regionid == RGN_TYPE_NAV_BAR)
 						cp = ts->navigation_bar;
+					else if (theme_regionid == RGN_TYPE_EXECUTE)
+						cp = ts->execution_buts;
 					else
 						cp = ts->button;
 
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index 47c44468bc7..26960c3d114 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1605,6 +1605,7 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
 	if (!(area->flag & AREA_FLAG_REGION_SIZE_UPDATE)) {
 		return;
 	}
+	const bScreen *screen = WM_window_get_active_screen(win);
 
 	WM_window_rect_calc(win, &window_rect);
 	area_calc_totrct(area, &window_rect);
@@ -1614,6 +1615,9 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
 	overlap_rect = rect;
 	region_rect_recursive(area, area->regionbase.first, &rect, &overlap_rect, 0);
 
+	/* Dynamically sized regions may have changed region sizes, so we have to force azone update. */
+	area_azone_initialize(win, screen, area);
+
 	for (ARegion *ar = area->regionbase.first; ar; ar = ar->next) {
 		region_subwindow(ar);
 
@@ -1621,6 +1625,9 @@ void ED_area_update_region_sizes(wmWindowManager *wm, wmWindow *win, ScrArea *ar
 		if (ar->type->init) {
 			ar->type->init(wm, ar);
 		}
+
+		/* Some AZones use View2D data which is only updated in region init, so call that first! */
+		region_azones_add(screen, area, ar, ar->alignment & ~RG

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list