diff options
-rw-r--r-- | release/scripts/startup/bl_operators/wm.py | 20 | ||||
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 2 | ||||
-rw-r--r-- | source/blender/editors/interface/interface.c | 3 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_splash_screen.c | 21 |
4 files changed, 31 insertions, 15 deletions
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index db15f4597bf..3b94a964148 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -2479,10 +2479,10 @@ class WM_OT_batch_rename(Operator): return wm.invoke_props_dialog(self, width=400) -class WM_MT_splash(Menu): - bl_label = "Splash" +class WM_MT_splash_quick_setup(Menu): + bl_label = "Quick Setup" - def draw_setup(self, context): + def draw(self, context): wm = context.window_manager # prefs = context.preferences @@ -2570,18 +2570,11 @@ class WM_MT_splash(Menu): layout.separator() layout.separator() - def draw(self, context): - # Draw setup screen if no preferences have been saved yet. - import os - userconfig_path = bpy.utils.user_resource('CONFIG') - userdef_path = os.path.join(userconfig_path, "userpref.blend") - - if not os.path.isfile(userdef_path): - self.draw_setup(context) - return +class WM_MT_splash(Menu): + bl_label = "Splash" - # Pass + def draw(self, context): layout = self.layout layout.operator_context = 'EXEC_DEFAULT' layout.emboss = 'PULLDOWN_MENU' @@ -2730,6 +2723,7 @@ classes = ( WM_OT_toolbar_prompt, BatchRenameAction, WM_OT_batch_rename, + WM_MT_splash_quick_setup, WM_MT_splash, WM_MT_splash_about, ) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index bc013953b1e..81641239c6a 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -166,6 +166,8 @@ enum { /** The block is only used during the search process and will not be drawn. * Currently just for the case of a closed panel's sub-panel (and its sub-panels). */ UI_BLOCK_SEARCH_ONLY = 1 << 25, + /** Hack for quick setup (splash screen) to draw text centered. */ + UI_BLOCK_QUICK_SETUP = 1 << 26, }; /** #uiPopupBlockHandle.menuretval */ diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 3fec88810c9..1aff68871e4 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -4060,7 +4060,8 @@ static uiBut *ui_def_but(uiBlock *block, but->drawflag |= UI_BUT_ICON_LEFT; } } - else if (((block->flag & UI_BLOCK_LOOP) && !ui_block_is_popover(block)) || + else if (((block->flag & UI_BLOCK_LOOP) && !ui_block_is_popover(block) && + !(block->flag & UI_BLOCK_QUICK_SETUP)) || ELEM(but->type, UI_BTYPE_MENU, UI_BTYPE_TEXT, diff --git a/source/blender/windowmanager/intern/wm_splash_screen.c b/source/blender/windowmanager/intern/wm_splash_screen.c index a3619a69152..ae726e73fe7 100644 --- a/source/blender/windowmanager/intern/wm_splash_screen.c +++ b/source/blender/windowmanager/intern/wm_splash_screen.c @@ -226,7 +226,26 @@ static uiBlock *wm_block_create_splash(bContext *C, ARegion *region, void *UNUSE 0, style); - MenuType *mt = WM_menutype_find("WM_MT_splash", true); + MenuType *mt; + char userpref[FILE_MAX]; + const char *const cfgdir = BKE_appdir_folder_id(BLENDER_USER_CONFIG, NULL); + + if (cfgdir) { + BLI_path_join(userpref, sizeof(userpref), cfgdir, BLENDER_USERPREF_FILE, NULL); + } + + /* Draw setup screen if no preferences have been saved yet. */ + if (!BLI_exists(userpref)) { + mt = WM_menutype_find("WM_MT_splash_quick_setup", true); + + /* The UI_BLOCK_QUICK_SETUP flag prevents the button text from being left-aligned, + as it is for all menus due to the UI_BLOCK_LOOP flag, see in 'ui_def_but'. */ + UI_block_flag_enable(block, UI_BLOCK_QUICK_SETUP); + } + else { + mt = WM_menutype_find("WM_MT_splash", true); + } + if (mt) { UI_menutype_draw(C, mt, layout); } |