Fix T90430: Crash when dragging material

Was trying to get asset information even when there was none, i.e. when
the material wasn't an asset or not dragged from the Asset Browser.
This commit is contained in:
Julian Eisel 2021-08-05 12:10:49 +02:00
parent 317f09ebf9
commit 02e0c6f42e
Notes: blender-bot 2023-02-13 17:59:13 +01:00
Referenced by issue #90430, Blender crashes when dragging a material (from the materials tab, Outliner, even Asset Browser)
3 changed files with 8 additions and 6 deletions

View File

@ -534,8 +534,8 @@ static char *view3d_mat_drop_tooltip(bContext *C,
const wmEvent *event,
struct wmDropBox *drop)
{
wmDragAsset *asset_drag = WM_drag_get_asset_data(drag, ID_MA);
RNA_string_set(drop->ptr, "name", asset_drag->name);
const char *name = WM_drag_get_item_name(drag);
RNA_string_set(drop->ptr, "name", name);
return ED_object_ot_drop_named_material_tooltip(C, drop->ptr, event);
}

View File

@ -728,6 +728,8 @@ void WM_drag_free_imported_drag_ID(struct Main *bmain,
struct wmDrag *drag,
struct wmDropBox *drop);
const char *WM_drag_get_item_name(struct wmDrag *drag);
/* Set OpenGL viewport and scissor */
void wmViewport(const struct rcti *winrct);
void wmPartialViewport(rcti *drawrct, const rcti *winrct, const rcti *partialrct);

View File

@ -469,7 +469,7 @@ static void wm_drop_operator_draw(const char *name, int x, int y)
UI_fontstyle_draw_simple_backdrop(fstyle, x, y, name, col_fg, col_bg);
}
static const char *wm_drag_name(wmDrag *drag)
const char *WM_drag_get_item_name(wmDrag *drag)
{
switch (drag->type) {
case WM_DRAG_ID: {
@ -583,11 +583,11 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect)
}
if (rect) {
int w = UI_fontstyle_string_width(fstyle, wm_drag_name(drag));
int w = UI_fontstyle_string_width(fstyle, WM_drag_get_item_name(drag));
drag_rect_minmax(rect, x, y, x + w, y + iconsize);
}
else {
UI_fontstyle_draw_simple(fstyle, x, y, wm_drag_name(drag), text_col);
UI_fontstyle_draw_simple(fstyle, x, y, WM_drag_get_item_name(drag), text_col);
}
/* operator name with roundbox */
@ -614,7 +614,7 @@ void wm_drags_draw(bContext *C, wmWindow *win, rcti *rect)
}
if (rect) {
int w = UI_fontstyle_string_width(fstyle, wm_drag_name(drag));
int w = UI_fontstyle_string_width(fstyle, WM_drag_get_item_name(drag));
drag_rect_minmax(rect, x, y, x + w, y + iconsize);
}
else {