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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to