Preferences: fit a little better when opened in place of properties editor.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 17 Jan 2019 13:31:18 +0000 (14:31 +0100)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 17 Jan 2019 14:04:38 +0000 (15:04 +0100)
release/scripts/startup/bl_ui/space_userpref.py
source/blender/editors/include/UI_interface.h
source/blender/editors/space_userpref/space_userpref.c

index 8f2d4b39f23ecbeadf7e5f9695fc9406ade5940d..9b4f9b49a6ba8625432b3c92f67c1c63586ed422 100644 (file)
@@ -35,6 +35,10 @@ class USERPREF_HT_header(Header):
 
         layout.template_header()
 
+        layout.separator_spacer()
+
+        layout.operator("wm.save_userpref")
+
 
 class USERPREF_PT_navigation_bar(Panel):
     bl_label = "Preferences Navigation"
@@ -60,6 +64,15 @@ class USERPREF_PT_save_preferences(Panel):
     bl_region_type = 'EXECUTE'
     bl_options = {'HIDE_HEADER'}
 
+    @classmethod
+    def poll(cls, context):
+        # Hide when header is visible
+        for region in context.area.regions:
+            if region.type == 'HEADER' and region.height <= 1:
+                return True
+
+        return False
+
     def draw(self, _context):
         layout = self.layout
         layout.operator_context = 'EXEC_AREA'
index 1454b0c16909906372c3806f8cab9c33d8d7fd6e..1db42ec0a53aad4a9924a372baacbd46ab1c1a69 100644 (file)
@@ -226,6 +226,7 @@ enum {
 #define UI_PANEL_WIDTH          340
 #define UI_COMPACT_PANEL_WIDTH  160
 #define UI_NAVIGATION_REGION_WIDTH UI_COMPACT_PANEL_WIDTH
+#define UI_NARROW_NAVIGATION_REGION_WIDTH 100
 
 #define UI_PANEL_CATEGORY_MARGIN_WIDTH (U.widget_unit * 1.0f)
 
index b7f6b045d4b554d4420d3ef7af9e27f54a737496..efaafb6cdb7bdbeb6a8b8f391dc3f4a0034cd6de 100644 (file)
@@ -53,7 +53,7 @@
 
 /* ******************** default callbacks for userpref space ***************** */
 
-static SpaceLink *userpref_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scene))
+static SpaceLink *userpref_new(const ScrArea *area, const Scene *UNUSED(scene))
 {
        ARegion *ar;
        SpaceUserPref *spref;
@@ -76,6 +76,11 @@ static SpaceLink *userpref_new(const ScrArea *UNUSED(area), const Scene *UNUSED(
        ar->regiontype = RGN_TYPE_NAV_BAR;
        ar->alignment = RGN_ALIGN_LEFT;
 
+       /* Use smaller size when opened in area like properties editor. */
+       if (area->winx && area->winx < 3.0f * UI_NAVIGATION_REGION_WIDTH * UI_DPI_FAC) {
+               ar->sizex = UI_NARROW_NAVIGATION_REGION_WIDTH;
+       }
+
        /* execution region */
        ar = MEM_callocN(sizeof(ARegion), "execution region for userpref");