[Bf-blender-cvs] [47139c69d7e] blender2.8: Keymap: only use delete confirmation for X-key

Campbell Barton noreply at git.blender.org
Tue Nov 20 00:16:28 CET 2018


Commit: 47139c69d7e46975c273a8f6981aca9e5cdda1d1
Author: Campbell Barton
Date:   Tue Nov 20 10:06:02 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB47139c69d7e46975c273a8f6981aca9e5cdda1d1

Keymap: only use delete confirmation for X-key

Only use confirmation w/ X-key since this is more likely to be pressed
by accident. Delete-key delete doesn't confirm.

Part of D3953 by @Zachman w/ edits

===================================================================

M	release/scripts/presets/keyconfig/keymap_data/blender_default.py
M	source/blender/editors/object/object_add.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_operator_props.c
M	source/blender/windowmanager/intern/wm_operators.c

===================================================================

diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 5ef14428cf9..5ecda0d063f 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -3245,9 +3245,9 @@ def km_object_mode(params):
         ("object.delete", {"type": 'X', "value": 'PRESS', "shift": True},
          {"properties": [("use_global", True)]}),
         ("object.delete", {"type": 'DEL', "value": 'PRESS'},
-         {"properties": [("use_global", False)]}),
+         {"properties": [("use_global", False), ("confirm", False)]}),
         ("object.delete", {"type": 'DEL', "value": 'PRESS', "shift": True},
-         {"properties": [("use_global", True)]}),
+         {"properties": [("use_global", True), ("confirm", False)]}),
         op_menu("VIEW3D_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
         op_menu("VIEW3D_MT_object_apply", {"type": 'A', "value": 'PRESS', "ctrl": True}),
         op_menu("VIEW3D_MT_make_links", {"type": 'L', "value": 'PRESS', "ctrl": True}),
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index ffb38ab3a7c..c4eb0aad337 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1410,7 +1410,7 @@ void OBJECT_OT_delete(wmOperatorType *ot)
 	ot->idname = "OBJECT_OT_delete";
 
 	/* api callbacks */
-	ot->invoke = WM_operator_confirm;
+	ot->invoke = WM_operator_confirm_or_exec;
 	ot->exec = object_delete_exec;
 	ot->poll = ED_operator_objectmode;
 
@@ -1420,6 +1420,7 @@ void OBJECT_OT_delete(wmOperatorType *ot)
 	PropertyRNA *prop;
 	prop = RNA_def_boolean(ot->srna, "use_global", 0, "Delete Globally", "Remove object from all scenes");
 	RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
+	WM_operator_properties_confirm_or_exec(ot);
 }
 
 /**************************** Copy Utilities ******************************/
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 7628217d88f..8e12ac96ea3 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -287,7 +287,8 @@ void		WM_menu_name_call(struct bContext *C, const char *menu_name, short context
 int         WM_enum_search_invoke_previews(struct bContext *C, struct wmOperator *op, short prv_cols, short prv_rows);
 int			WM_enum_search_invoke(struct bContext *C, struct wmOperator *op, const struct wmEvent *event);
 			/* invoke callback, confirm menu + exec */
-int			WM_operator_confirm		(struct bContext *C, struct wmOperator *op, const struct wmEvent *event);
+int			WM_operator_confirm(struct bContext *C, struct wmOperator *op, const struct wmEvent *event);
+int			WM_operator_confirm_or_exec(struct bContext *C, struct wmOperator *op, const struct wmEvent *event);
 		/* invoke callback, file selector "filepath" unset + exec */
 int			WM_operator_filesel		(struct bContext *C, struct wmOperator *op, const struct wmEvent *event);
 bool        WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const struct ImageFormatData *im_format);
@@ -348,6 +349,7 @@ bool        WM_operator_last_properties_store(struct wmOperator *op);
 
 
 /* wm_operator_props.c */
+void        WM_operator_properties_confirm_or_exec(struct wmOperatorType *ot);
 void        WM_operator_properties_filesel(
         struct wmOperatorType *ot, int filter, short type, short action,
         short flag, short display, short sort);
diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c
index 4515223f829..f8fa652ed63 100644
--- a/source/blender/windowmanager/intern/wm_operator_props.c
+++ b/source/blender/windowmanager/intern/wm_operator_props.c
@@ -44,6 +44,15 @@
 #include "WM_api.h"
 #include "WM_types.h"
 
+
+void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
+{
+	PropertyRNA *prop;
+
+	prop = RNA_def_boolean(ot->srna, "confirm", true, "Confirm", "Prompt for confirmation");
+	RNA_def_property_flag(prop, PROP_HIDDEN | PROP_SKIP_SAVE);
+}
+
 /* default properties for fileselect */
 void WM_operator_properties_filesel(
         wmOperatorType *ot, int filter, short type, short action,
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 1bb79755e46..e0bd48dfec1 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -863,6 +863,18 @@ int WM_operator_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event
 	return WM_operator_confirm_message(C, op, NULL);
 }
 
+int WM_operator_confirm_or_exec(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
+{
+	const bool confirm = RNA_boolean_get(op->ptr, "confirm");
+	if (confirm) {
+		return WM_operator_confirm_message(C, op, NULL);
+	}
+	else {
+		return op->type->exec(C, op);
+	}
+}
+
+
 /* op->invoke, opens fileselect if path property not set, otherwise executes */
 int WM_operator_filesel(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
 {



More information about the Bf-blender-cvs mailing list