diff options
author | Hans Goudey <h.goudey@me.com> | 2020-10-23 02:14:14 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2020-10-23 02:14:14 +0300 |
commit | 165b4f85ec23776d8219c9dca5f18795126fe2bc (patch) | |
tree | 1c686a4e1fc1300e146d95f7f0caf6393a7c03a0 /source | |
parent | ff8ecf105cde612d379137db8d571c44445820a7 (diff) | |
parent | 8e060b44da04f4385a36a1a441e2ec45f1fd19f2 (diff) |
Merge branch 'blender-v2.91-release'
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_outliner/outliner_draw.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c index 3045529747d..5a789ee0b01 100644 --- a/source/blender/editors/space_outliner/outliner_draw.c +++ b/source/blender/editors/space_outliner/outliner_draw.c @@ -1935,8 +1935,14 @@ static void outliner_mode_toggle_fn(bContext *C, void *tselem_poin, void *UNUSED return; } + /* Check that the the item is actually an object. */ + BLI_assert(tselem->id != NULL && GS(tselem->id->name) == ID_OB); + + Object *ob = (Object *)tselem->id; + const bool object_data_shared = (ob->data == tvc.obact->data); + wmWindow *win = CTX_wm_window(C); - const bool do_extend = win->eventstate->ctrl != 0; + const bool do_extend = win->eventstate->ctrl != 0 && !object_data_shared; outliner_item_mode_toggle(C, &tvc, te, do_extend); } @@ -1974,11 +1980,15 @@ static void outliner_draw_mode_column_toggle(uiBlock *block, draw_active_icon = false; } + const bool object_data_shared = (ob->data == ob_active->data); + draw_active_icon = draw_active_icon || object_data_shared; + int icon; const char *tip; if (draw_active_icon) { icon = UI_icon_from_object_mode(ob_active->mode); - tip = TIP_("Remove from the current mode"); + tip = object_data_shared ? TIP_("Change the object in the current mode") : + TIP_("Remove from the current mode"); } else { icon = ICON_DOT; |