Fix #94080: clicking empty space in timeline creates undo step #105913

Open
Melissa-Goon wants to merge 7 commits from Melissa-Goon/blender:my-feature into main

When changing the target branch, be careful to rebase the branch in your fork to match. See documentation.
1 changed files with 11 additions and 8 deletions
Showing only changes of commit 67bf4755c1 - Show all commits

View File

@ -1726,6 +1726,10 @@ static int mouse_action_keys(bAnimContext *ac,
/* deselect all keyframes */
deselect_action_keys(ac, 0, SELECT_SUBTRACT);
/* If nothing selected, return OPERATOR_CANCELLED.*/
if (!found && ale == NULL) {
ret_value = OPERATOR_CANCELLED;
}
/* highlight channel clicked on */
if (ELEM(ac->datatype, ANIMCONT_ACTION, ANIMCONT_DOPESHEET, ANIMCONT_TIMELINE)) {
/* deselect all other channels first */
@ -1733,6 +1737,7 @@ static int mouse_action_keys(bAnimContext *ac,
/* Highlight Action-Group or F-Curve? */
if (ale != NULL && ale->data) {
if (ale->type == ANIMTYPE_GROUP) {
bActionGroup *agrp = ale->data;
@ -1756,7 +1761,6 @@ static int mouse_action_keys(bAnimContext *ac,
else if (ac->datatype == ANIMCONT_GPENCIL) {
Melissa-Goon marked this conversation as resolved Outdated

This condition doesn't depend on anything inside this else clause, so it can be moved outside of it. I think that's also better, because after deselect_action_keys() has called something may have changed, and having that undo step is important.

found and ale do not change after the call to actkeys_find_key_at_position(), so this code can be moved directly after that.

This condition doesn't depend on anything inside this `else` clause, so it can be moved outside of it. I think that's also better, because after `deselect_action_keys()` has called something may have changed, and having that undo step is important. `found` and `ale` do not change after the call to `actkeys_find_key_at_position()`, so this code can be moved directly after that.
/* deselect all other channels first */
ANIM_anim_channels_select_set(ac, ACHANNEL_SETFLAG_CLEAR);
/* Highlight GPencil Layer */
if (ale != NULL && ale->data != NULL && ale->type == ANIMTYPE_GPLAYER) {
bGPdata *gpd = (bGPdata *)ale->id;
@ -1808,7 +1812,6 @@ static int mouse_action_keys(bAnimContext *ac,
/* free this channel */
MEM_freeN(ale);
}
return ret_value;
}