Fix #114461: Check Interactivity in button comparisons

Implementation of Julian Eisel's idea of including interactivity in
button comparisons to avoid bad label matches.

Pull Request: https://projects.blender.org/blender/blender/pulls/116228
This commit is contained in:
Harley Acheson 2023-12-20 01:14:10 +01:00 committed by Harley Acheson
parent c455f76267
commit 5741f7b8a9
1 changed files with 7 additions and 0 deletions

View File

@ -774,6 +774,13 @@ static bool ui_but_equals_old(const uiBut *but, const uiBut *oldbut)
return false;
}
/* If the old button is active for interaction, but the new one isn't interactive,
* do not consider them matching. Avoids incorrect matches with label buttons, which
* usually do not have data that can be used for comparison. See #114461. */
if (oldbut->active && !ui_but_is_interactive(but, false)) {
return false;
}
if ((but->type == UI_BTYPE_VIEW_ITEM) && (oldbut->type == UI_BTYPE_VIEW_ITEM)) {
uiButViewItem *but_item = (uiButViewItem *)but;
uiButViewItem *oldbut_item = (uiButViewItem *)oldbut;