diff --git a/source/blender/editors/armature/pose_lib_2.cc b/source/blender/editors/armature/pose_lib_2.cc index 28794356888..60f886b3745 100644 --- a/source/blender/editors/armature/pose_lib_2.cc +++ b/source/blender/editors/armature/pose_lib_2.cc @@ -535,21 +535,19 @@ static int poselib_blend_modal(bContext *C, wmOperator *op, const wmEvent *event } if (pbd->needs_redraw) { - char status_string[UI_MAX_DRAW_STR]; - char slider_string[UI_MAX_DRAW_STR]; - char tab_string[50]; - ED_slider_status_string_get(pbd->slider, slider_string, sizeof(slider_string)); + WorkspaceStatus status(C); if (pbd->state == POSE_BLEND_BLENDING) { - STRNCPY(tab_string, IFACE_("[Tab] - Show original pose")); + status.item(IFACE_("Show Original Pose"), ICON_EVENT_TAB); } else { - STRNCPY(tab_string, IFACE_("[Tab] - Show blended pose")); + status.item(IFACE_("Show Blended Pose"), ICON_EVENT_TAB); } - SNPRINTF(status_string, IFACE_("%s | %s | [Ctrl] - Flip Pose"), tab_string, slider_string); - ED_workspace_status_text(C, status_string); + ED_slider_status_get(pbd->slider, status); + + status.item_bool(IFACE_("Flip Pose"), pbd->is_flipped, ICON_EVENT_CTRL); poselib_blend_apply(C, op); } diff --git a/source/blender/editors/include/ED_util.hh b/source/blender/editors/include/ED_util.hh index da57cf1c943..29b7bd52a86 100644 --- a/source/blender/editors/include/ED_util.hh +++ b/source/blender/editors/include/ED_util.hh @@ -12,6 +12,7 @@ struct Main; struct bContext; +class WorkspaceStatus; namespace blender::bke::id { class IDRemapper; @@ -86,6 +87,8 @@ void ED_slider_status_string_get(const tSlider *slider, char *status_string, size_t size_of_status_string); +void ED_slider_status_get(const tSlider *slider, WorkspaceStatus &status); + float ED_slider_factor_get(const tSlider *slider); void ED_slider_factor_set(tSlider *slider, float factor); diff --git a/source/blender/editors/util/ed_draw.cc b/source/blender/editors/util/ed_draw.cc index 2a1c502e458..d15c9ec3c40 100644 --- a/source/blender/editors/util/ed_draw.cc +++ b/source/blender/editors/util/ed_draw.cc @@ -556,6 +556,22 @@ void ED_slider_status_string_get(const tSlider *slider, increments_str); } +void ED_slider_status_get(const tSlider *slider, WorkspaceStatus &status) +{ + if (slider->allow_overshoot_lower || slider->allow_overshoot_upper) { + status.item_bool(IFACE_("Overshoot"), slider->overshoot, ICON_EVENT_E); + } + else { + status.item(IFACE_("Overshoot Disabled"), ICON_INFO); + } + + status.item_bool(IFACE_("Precision"), slider->precision, ICON_EVENT_SHIFT); + + if (slider->allow_increments) { + status.item_bool(IFACE_("Increments"), slider->increments, ICON_EVENT_CTRL); + } +} + void ED_slider_destroy(bContext *C, tSlider *slider) { /* Remove draw callback. */