[Bf-blender-cvs] [ca41548626f] master: UI: Simple confirm dialog when loading new file
Jacques Lucke
noreply at git.blender.org
Wed Apr 24 17:49:20 CEST 2019
Commit: ca41548626f5f49a769dc018ab54d7ed06c05489
Author: Jacques Lucke
Date: Wed Apr 24 17:45:34 2019 +0200
Branches: master
https://developer.blender.org/rBca41548626f5f49a769dc018ab54d7ed06c05489
UI: Simple confirm dialog when loading new file
I also had to make the "New" operator a submenu in the
`File Context Menu`, so that you can still select the template.
This partially solves T61599. Currently the confirm dialog
is not shown when an already existing file is opened.
Implementing that requires a bit more work and will be
done in a separate patch.
Reviewers: brecht
Differential Revision: https://developer.blender.org/D4732
===================================================================
M release/scripts/startup/bl_ui/space_topbar.py
M source/blender/windowmanager/intern/wm_files.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py
index e75f4d1bb5d..e2bd203f520 100644
--- a/release/scripts/startup/bl_ui/space_topbar.py
+++ b/release/scripts/startup/bl_ui/space_topbar.py
@@ -262,7 +262,7 @@ class TOPBAR_MT_file_new(Menu):
@staticmethod
def draw_ex(layout, _context, *, use_splash=False, use_more=False):
- layout.operator_context = 'EXEC_DEFAULT'
+ layout.operator_context = 'INVOKE_DEFAULT'
# Limit number of templates in splash screen, spill over into more menu.
paths = TOPBAR_MT_file_new.app_template_paths()
@@ -557,7 +557,7 @@ class TOPBAR_MT_file_context_menu(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.read_homefile", text="New", icon='FILE_NEW')
+ layout.menu("TOPBAR_MT_file_new", text="New", icon='FILE_NEW')
layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
layout.separator()
diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c
index c3642e7f7e7..d75853d623d 100644
--- a/source/blender/windowmanager/intern/wm_files.c
+++ b/source/blender/windowmanager/intern/wm_files.c
@@ -1846,6 +1846,17 @@ static int wm_homefile_read_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
+static int wm_homefile_read_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
+{
+ wmWindowManager *wm = CTX_wm_manager(C);
+ if (U.uiflag & USER_SAVE_PROMPT && !wm->file_saved) {
+ return WM_operator_confirm_message(C, op, "Changes in current file will be lost. Continue?");
+ }
+ else {
+ return wm_homefile_read_exec(C, op);
+ }
+}
+
void WM_OT_read_homefile(wmOperatorType *ot)
{
PropertyRNA *prop;
@@ -1853,6 +1864,7 @@ void WM_OT_read_homefile(wmOperatorType *ot)
ot->idname = "WM_OT_read_homefile";
ot->description = "Open the default file (doesn't save the current file)";
+ ot->invoke = wm_homefile_read_invoke;
ot->exec = wm_homefile_read_exec;
prop = RNA_def_string_file_path(
More information about the Bf-blender-cvs
mailing list