Fix T98715: Crash drag-dropping collection from outliner to ID property

The value of disabled buttons shouldn't be changed through dropping onto
it. Check for the disabled state in the drop operator poll, so the
dragging code will change the cursor to show that dropping isn't
possible at the given cursor location.
This commit is contained in:
Julian Eisel 2022-06-14 11:53:38 +02:00 committed by Philipp Oeser
parent 1ea1b73e49
commit 589a8104c3
Notes: blender-bot 2023-02-14 09:34:18 +01:00
Referenced by issue #98715, Regression: Crash drag-dropping collection from outliner to ID property
Referenced by issue #98661, 3.2: Potential candidates for corrective releases
2 changed files with 22 additions and 1 deletions

View File

@ -2954,6 +2954,9 @@ void ui_but_text_password_hide(char password_str[UI_MAX_PASSWORD_STR],
void ui_but_set_string_interactive(bContext *C, uiBut *but, const char *value)
{
/* Caller should check. */
BLI_assert((but->flag & UI_BUT_DISABLED) == 0);
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
ui_textedit_string_set(but, but->active, value);

View File

@ -1940,6 +1940,24 @@ static void UI_OT_drop_color(wmOperatorType *ot)
/** \name Drop Name Operator
* \{ */
static bool drop_name_poll(bContext *C)
{
if (!ED_operator_regionactive(C)) {
return false;
}
const uiBut *but = UI_but_active_drop_name_button(C);
if (!but) {
return false;
}
if (but->flag & UI_BUT_DISABLED) {
return false;
}
return true;
}
static int drop_name_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
{
uiBut *but = UI_but_active_drop_name_button(C);
@ -1959,7 +1977,7 @@ static void UI_OT_drop_name(wmOperatorType *ot)
ot->idname = "UI_OT_drop_name";
ot->description = "Drop name to button";
ot->poll = ED_operator_regionactive;
ot->poll = drop_name_poll;
ot->invoke = drop_name_invoke;
ot->flag = OPTYPE_UNDO | OPTYPE_INTERNAL;