Fix T65306: UI widgets clipped when scaled up

Normal UI widget and 3D navigation gizmo where clipping at high DPI.
This commit is contained in:
2020-02-04 22:17:01 +11:00
parent 62dba60e49
commit 3dde6360ff
4 changed files with 33 additions and 12 deletions

View File

@@ -1736,7 +1736,7 @@ void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rec
/* sphere color */
float diffuse[3] = {1.0f, 1.0f, 1.0f};
float light[3];
float size;
const float size = 0.5f * min_ff(BLI_rcti_size_x(rect), BLI_rcti_size_y(rect));
/* backdrop */
UI_draw_roundbox_corner_set(UI_CNR_ALL);
@@ -1752,11 +1752,10 @@ void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rec
/* transform to button */
GPU_matrix_push();
if (BLI_rcti_size_x(rect) < BLI_rcti_size_y(rect)) {
size = 0.5f * BLI_rcti_size_x(rect);
}
else {
size = 0.5f * BLI_rcti_size_y(rect);
bool use_project_matrix = (size >= -GPU_MATRIX_ORTHO_CLIP_NEAR_DEFAULT);
if (use_project_matrix) {
GPU_matrix_push_projection();
GPU_matrix_ortho_set_z(-size, size);
}
GPU_matrix_translate_2f(rect->xmin + 0.5f * BLI_rcti_size_x(rect),
@@ -1784,6 +1783,10 @@ void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rec
GPU_blend(false);
GPU_line_smooth(false);
if (use_project_matrix) {
GPU_matrix_pop_projection();
}
/* matrix after circle */
GPU_matrix_pop();