Graph Editor: view-selected takes scrubbing and marker region into account
This commit is contained in:
parent
dcec863b2f
commit
b03ee4828b
|
@ -62,6 +62,10 @@ void BLI_rcti_resize(struct rcti *rect, int x, int y);
|
|||
void BLI_rctf_resize(struct rctf *rect, float x, float y);
|
||||
void BLI_rcti_scale(rcti *rect, const float scale);
|
||||
void BLI_rctf_scale(rctf *rect, const float scale);
|
||||
void BLI_rctf_padding_y(struct rctf *rect,
|
||||
const float boundary_height,
|
||||
const float padding_top,
|
||||
const float padding_bottom);
|
||||
void BLI_rctf_interp(struct rctf *rect,
|
||||
const struct rctf *rect_a,
|
||||
const struct rctf *rect_b,
|
||||
|
|
|
@ -643,6 +643,25 @@ void BLI_rctf_scale(rctf *rect, const float scale)
|
|||
rect->ymax = cent_y + size_y_half;
|
||||
}
|
||||
|
||||
void BLI_rctf_padding_y(rctf *rect,
|
||||
const float boundary_height,
|
||||
const float padding_top,
|
||||
const float padding_bottom)
|
||||
{
|
||||
BLI_assert(padding_top >= 0.0f);
|
||||
BLI_assert(padding_bottom >= 0.0f);
|
||||
BLI_assert(boundary_height > 0.0f);
|
||||
|
||||
float total_padding = padding_top + padding_bottom;
|
||||
if (total_padding == 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
float total_extend = BLI_rctf_size_y(rect) * total_padding / (boundary_height - total_padding);
|
||||
rect->ymax += total_extend * (padding_top / total_padding);
|
||||
rect->ymin -= total_extend * (padding_bottom / total_padding);
|
||||
}
|
||||
|
||||
void BLI_rctf_interp(rctf *rect, const rctf *rect_a, const rctf *rect_b, const float fac)
|
||||
{
|
||||
const float ifac = 1.0f - fac;
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
#include "DEG_depsgraph_build.h"
|
||||
|
||||
#include "UI_view2d.h"
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "ED_anim_api.h"
|
||||
#include "ED_keyframing.h"
|
||||
|
@ -282,10 +283,18 @@ static int graphkeys_viewall(bContext *C,
|
|||
do_sel_only,
|
||||
include_handles);
|
||||
|
||||
/* Give some more space at the borders. */
|
||||
BLI_rctf_scale(&cur_new, 1.1f);
|
||||
|
||||
UI_view2d_smooth_view(C, ac.ar, &cur_new, smooth_viewtx);
|
||||
/* Take regions into account, that could block the view. */
|
||||
float padding_top = UI_SCRUBBING_MARGIN_Y;
|
||||
float padding_bottom = 0;
|
||||
if (!BLI_listbase_is_empty(ED_context_get_markers(C))) {
|
||||
padding_bottom = UI_MARKER_MARGIN_Y;
|
||||
}
|
||||
BLI_rctf_padding_y(&cur_new, ac.ar->sizey * UI_DPI_FAC, padding_top, padding_bottom);
|
||||
|
||||
UI_view2d_smooth_view(C, ac.ar, &cur_new, smooth_viewtx);
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue