Preferences: add option for header position
authorCampbell Barton <ideasman42@gmail.com>
Thu, 13 Dec 2018 22:47:10 +0000 (09:47 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 13 Dec 2018 22:54:34 +0000 (09:54 +1100)
Sets the header position for newly created windows with few exceptions
(preferences is always bottom, file-selector is always top).

21 files changed:
release/scripts/startup/bl_ui/space_userpref.py
source/blender/blenloader/intern/versioning_userdef.c
source/blender/editors/screen/area.c
source/blender/editors/space_action/space_action.c
source/blender/editors/space_buttons/space_buttons.c
source/blender/editors/space_clip/space_clip.c
source/blender/editors/space_console/space_console.c
source/blender/editors/space_file/space_file.c
source/blender/editors/space_graph/space_graph.c
source/blender/editors/space_image/space_image.c
source/blender/editors/space_info/space_info.c
source/blender/editors/space_nla/space_nla.c
source/blender/editors/space_node/space_node.c
source/blender/editors/space_outliner/space_outliner.c
source/blender/editors/space_script/space_script.c
source/blender/editors/space_sequencer/space_sequencer.c
source/blender/editors/space_text/space_text.c
source/blender/editors/space_userpref/space_userpref.c
source/blender/editors/space_view3d/space_view3d.c
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_userdef.c

index 76bb14b4b735e1f0772110ad3ea28def86617388..dbe3f86dc1a58d7060133301f63fe516baa96610 100644 (file)
@@ -194,6 +194,11 @@ class USERPREF_PT_interface(Panel):
         sub.prop(view, "pie_menu_confirm")
         col.separator()
 
+        col.label(text="Header:")
+        sub = col.split()
+        sub.label(text="Default Position")
+        sub.row().prop(view, "header_align_default", expand=True)
+
         col.prop(view, "show_splash")
 
         col.label(text="Warnings:")
index 8e8f42bdf10a79ba097e16b151fe5dc83daa6589..e43ed4af43753c60089a3c6c9d5966497b8e151a 100644 (file)
@@ -360,7 +360,7 @@ void BLO_version_defaults_userpref_blend(Main *bmain, UserDef *userdef)
                    USER_FLAG_DEPRECATED_6 | USER_FLAG_DEPRECATED_7 |
                    USER_FLAG_DEPRECATED_9 | USER_DEVELOPER_UI);
                userdef->uiflag &= ~(
-                   USER_UIFLAG_DEPRECATED_7);
+                   USER_HEADER_BOTTOM);
                userdef->transopts &= ~(
                    USER_TR_DEPRECATED_2 | USER_TR_DEPRECATED_3 | USER_TR_DEPRECATED_4 |
                    USER_TR_DEPRECATED_6 | USER_TR_DEPRECATED_7);
index dd7b6fe5ce11ec42d1b07fd5f0f1c2fbe3662648..aae135977cb7e385eba43add600d59868adc3951 100644 (file)
@@ -2515,7 +2515,8 @@ int ED_area_header_alignment_or_fallback(const ScrArea *area, int fallback)
 
 int ED_area_header_alignment(const ScrArea *area)
 {
-       return ED_area_header_alignment_or_fallback(area, RGN_ALIGN_TOP);
+       return ED_area_header_alignment_or_fallback(
+               area, (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP);
 }
 
 /**
index 0a7db803acc5745c650d166d02874c56bc928160..b41b97923e2a672e635ac92d339ddef7007978f0 100644 (file)
@@ -120,7 +120,7 @@ static SpaceLink *action_new(const ScrArea *sa, const Scene *scene)
 
        BLI_addtail(&saction->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* channel list region */
        ar = MEM_callocN(sizeof(ARegion), "channel region for action");
index 159757139fa7bdd511edbcdb374cdbce8e18ec79..4520f837a0a3ec3ebe3d50c990777be3e863c5ee 100644 (file)
@@ -73,7 +73,7 @@ static SpaceLink *buttons_new(const ScrArea *UNUSED(area), const Scene *UNUSED(s
 
        BLI_addtail(&sbuts->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* navigation bar */
        ar = MEM_callocN(sizeof(ARegion), "navigation bar for buts");
index 83b4f0aa6ce56a8c816f005d23bf4374b1d65e18..af7843a01a5beb056418bbaad4385d860a896421 100644 (file)
@@ -248,7 +248,7 @@ static SpaceLink *clip_new(const ScrArea *sa, const Scene *scene)
 
        BLI_addtail(&sc->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* tools view */
        ar = MEM_callocN(sizeof(ARegion), "tools for clip");
index 596d66da9a6fb4009991896188bcba97112c38bf..ece29bcd72140ca866197f886651a95514714af7 100644 (file)
@@ -68,7 +68,7 @@ static SpaceLink *console_new(const ScrArea *UNUSED(area), const Scene *UNUSED(s
 
        BLI_addtail(&sconsole->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
 
        /* main region */
index e0413e4834656e0bb55636597a01f88aea567c11..fb6dfdad4db6c749774f5951a256b38640448f28 100644 (file)
@@ -81,6 +81,7 @@ static SpaceLink *file_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scen
        ar = MEM_callocN(sizeof(ARegion), "header for file");
        BLI_addtail(&sfile->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
+       /* Ignore user preference "USER_HEADER_BOTTOM" here (always show top for new types). */
        ar->alignment = RGN_ALIGN_TOP;
 
        /* Tools region */
index 9a825715e18483f2417439681edaa47a375a5279..27e401c89483137af9160ee570a5fcd22f3b65ab 100644 (file)
@@ -123,7 +123,7 @@ static SpaceLink *graph_new(const ScrArea *UNUSED(sa), const Scene *scene)
 
        BLI_addtail(&sipo->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* channels */
        ar = MEM_callocN(sizeof(ARegion), "channels region for graphedit");
index b5c7657d890ed0409cc0cf8d30019cf14d3e3341..3c850ae1689200fdee92a8bb3ef1e8eab6062dca 100644 (file)
@@ -190,7 +190,7 @@ static SpaceLink *image_new(const ScrArea *UNUSED(area), const Scene *UNUSED(sce
 
        BLI_addtail(&simage->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* buttons/list view */
        ar = MEM_callocN(sizeof(ARegion), "buttons for image");
index d2b6d07541ede46584bdb54dafb0ac77cad70345..076b66ef012aff0d35f3d0b324b1579c3b78f9a6 100644 (file)
@@ -79,7 +79,7 @@ static SpaceLink *info_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scen
 
        BLI_addtail(&sinfo->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* main region */
        ar = MEM_callocN(sizeof(ARegion), "main region for info");
index d72014901a626b7adcad529da85b58a6c9bb050c..1a7793fadb9c7aa6cf45a1d84cfbc75fed00aec3 100644 (file)
@@ -115,7 +115,7 @@ static SpaceLink *nla_new(const ScrArea *sa, const Scene *scene)
 
        BLI_addtail(&snla->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* channel list region */
        ar = MEM_callocN(sizeof(ARegion), "channel list for nla");
index 8af5fe1b3a12d394df7a3c48aea5696c1492abd4..cbd67bfb7223299ee96151b52bd9de70c5d03199 100644 (file)
@@ -319,7 +319,7 @@ static SpaceLink *node_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scen
 
        BLI_addtail(&snode->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* buttons/list view */
        ar = MEM_callocN(sizeof(ARegion), "buttons for node");
index 57b13749f2bf83526c918ace66218e062ea373a2..95225774ddfc43ac3fc292ce743a49220ae23e7e 100644 (file)
@@ -301,7 +301,7 @@ static SpaceLink *outliner_new(const ScrArea *UNUSED(area), const Scene *UNUSED(
 
        BLI_addtail(&soutliner->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* main region */
        ar = MEM_callocN(sizeof(ARegion), "main region for outliner");
index 65c489e84098c4b5cabb43c05160c6ffb9ef26fb..e3ae8accb676e4467b9807ce2919772e6ae34422 100644 (file)
@@ -77,7 +77,7 @@ static SpaceLink *script_new(const ScrArea *UNUSED(area), const Scene *UNUSED(sc
 
        BLI_addtail(&sscript->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* main region */
        ar = MEM_callocN(sizeof(ARegion), "main region for script");
index 092911cb7c2a3517f479359ac28ed5d4c548a248..4e10ed62366a21d631845c853932ad9341921584 100644 (file)
@@ -130,7 +130,7 @@ static SpaceLink *sequencer_new(const ScrArea *UNUSED(sa), const Scene *scene)
 
        BLI_addtail(&sseq->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* buttons/list view */
        ar = MEM_callocN(sizeof(ARegion), "buttons for sequencer");
index 27b75f49b449ccbcf7cc3513f42fae599d8e46e4..8e04cd83fc558dce12684ac809b3982e282b7fbe 100644 (file)
@@ -80,7 +80,7 @@ static SpaceLink *text_new(const ScrArea *UNUSED(area), const Scene *UNUSED(scen
 
        BLI_addtail(&stext->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* properties region */
        ar = MEM_callocN(sizeof(ARegion), "properties region for text");
index 87da461f269dab61d1e2a474541c9c3cf14a7931..9a876f9d92571fd076d800e20a2d8851307a6bba 100644 (file)
@@ -73,6 +73,7 @@ static SpaceLink *userpref_new(const ScrArea *UNUSED(area), const Scene *UNUSED(
 
        BLI_addtail(&spref->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
+       /* Ignore user preference "USER_HEADER_BOTTOM" here (always show bottom for new types). */
        ar->alignment = RGN_ALIGN_BOTTOM;
 
        /* main region */
index 0e8e5e1ee22e1a1767b0a1709d0222c78c45066e..354d27bd293457796bea1252e41646a3ea62b109 100644 (file)
@@ -370,7 +370,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene)
 
        BLI_addtail(&v3d->regionbase, ar);
        ar->regiontype = RGN_TYPE_HEADER;
-       ar->alignment = RGN_ALIGN_TOP;
+       ar->alignment = (U.uiflag & USER_HEADER_BOTTOM) ? RGN_ALIGN_BOTTOM : RGN_ALIGN_TOP;
 
        /* tool shelf */
        ar = MEM_callocN(sizeof(ARegion), "toolshelf for view3d");
index a846e8f6468780876012d06473990665ead16ab3..929cb5b36a96914c46a5efd4a53d3769a7742cc7 100644 (file)
@@ -784,9 +784,7 @@ typedef enum eUserpref_UI_Flag {
        USER_DRAWVIEWINFO               = (1 << 4),
        USER_PLAINMENUS                 = (1 << 5),
        USER_LOCK_CURSOR_ADJUST = (1 << 6),
-       /* Avoid accidentally adjusting the layout
-        * (exact behavior may change based on what's considered reasonable to lock down). */
-       USER_UIFLAG_DEPRECATED_7 = (1 << 7),
+       USER_HEADER_BOTTOM              = (1 << 7),
        USER_ALLWINCODECS               = (1 << 8),
        USER_MENUOPENAUTO               = (1 << 9),
        USER_DEPTH_CURSOR               = (1 << 10),
index 84ce946ce19ef47de0c154eb81591dd0f016190f..24e6424effd826919c0b5e09b0091d1ec28c3d90 100644 (file)
@@ -3796,6 +3796,17 @@ static void rna_def_userdef_view(BlenderRNA *brna)
                                 "Otherwise menus, etc will always be top to bottom, left to right, "
                                 "no matter opening direction");
 
+       static const EnumPropertyItem header_align_default_items[] = {
+               {0, "TOP", 0, "Top", ""},
+               {USER_HEADER_BOTTOM, "BOTTOM", 0, "Bottom", ""},
+               {0, NULL, 0, NULL, NULL}
+       };
+       prop = RNA_def_property(srna, "header_align_default", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_items(prop, header_align_default_items);
+       RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag");
+       RNA_def_property_ui_text(prop, "Header Position", "Default header position for new space-types");
+       RNA_def_property_update(prop, 0, "rna_userdef_update");
+
        prop = RNA_def_property(srna, "use_mouse_depth_navigate", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_DEPTH_NAVIGATE);
        RNA_def_property_ui_text(prop, "Auto Depth",