From 080d72a25787aa860141cdbc64d6eed620d11245 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 29 Apr 2019 16:56:14 +0200 Subject: [PATCH] Select: change Sequencer to match new behavior of 'deselect on nothing'. Note that unlike some others, this is always enabled for sequencer, since previous (2.7x) code was already deselecting everything when clicking in an empty area... Part of T63995. --- .../keyconfig/keymap_data/blender_default.py | 3 ++- .../space_sequencer/sequencer_select.c | 21 +++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 9885ece6771..1129af26bd8 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -2419,7 +2419,8 @@ def km_sequencer(params): ) ), ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'}, - {"properties": [("extend", False), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}), + {"properties": [("extend", False), ("deselect_all", True), + ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}), ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True}, {"properties": [("extend", True), ("linked_handle", False), ("left_right", 'NONE'), ("linked_time", False)]}), ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS', "alt": True}, diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index a193171f784..5ada34fc791 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -318,6 +318,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, const wmEvent *e Scene *scene = CTX_data_scene(C); Editing *ed = BKE_sequencer_editing_get(scene, false); const bool extend = RNA_boolean_get(op->ptr, "extend"); + const bool deselect_all = RNA_boolean_get(op->ptr, "deselect_all"); const bool linked_handle = RNA_boolean_get(op->ptr, "linked_handle"); const bool linked_time = RNA_boolean_get(op->ptr, "linked_time"); int left_right = RNA_enum_get(op->ptr, "left_right"); @@ -401,15 +402,13 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, const wmEvent *e } } else { - // seq = find_nearest_seq(scene, v2d, &hand, mval); - act_orig = ed->act_seq; - if (extend == 0 && linked_handle == 0) { - ED_sequencer_deselect_all(scene); - } - if (seq) { + if (!extend && !linked_handle) { + ED_sequencer_deselect_all(scene); + } + BKE_sequencer_active_set(scene, seq); if ((seq->type == SEQ_TYPE_IMAGE) || (seq->type == SEQ_TYPE_MOVIE)) { @@ -535,6 +534,9 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, const wmEvent *e select_linked_time(ed->seqbasep, seq); } } + else if (deselect_all) { + ED_sequencer_deselect_all(scene); + } } WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER | NA_SELECTED, scene); @@ -566,7 +568,14 @@ void SEQUENCER_OT_select(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; /* properties */ + PropertyRNA *prop; RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend the selection"); + prop = RNA_def_boolean(ot->srna, + "deselect_all", + false, + "Deselect On Nothing", + "Deselect all when nothing under the cursor"); + RNA_def_property_flag(prop, PROP_SKIP_SAVE); RNA_def_boolean( ot->srna, "linked_handle", 0, "Linked Handle", "Select handles next to the active strip"); /* for animation this is an enum but atm having an enum isn't useful for us */