From bdbc97d7c7d3453a459dde0b1d24381f3d17e92d Mon Sep 17 00:00:00 2001 From: luboslenco Date: Tue, 9 Jun 2026 09:20:42 +0200 Subject: [PATCH] paint: draw fixes --- paint/sources/ui/ui_view2d.c | 96 ++++++++++++++++++------------------ 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/paint/sources/ui/ui_view2d.c b/paint/sources/ui/ui_view2d.c index 131dae8e..67e90f8b 100644 --- a/paint/sources/ui/ui_view2d.c +++ b/paint/sources/ui/ui_view2d.c @@ -172,17 +172,17 @@ void ui_view2d_update(void *_) { bool decal_mask = context_is_decal_mask_paint(); bool set_clone_source = - g_context->tool == TOOL_TYPE_CLONE && - operator_shortcut(string("%s+%s", any_map_get(g_keymap, "set_clone_source"), any_map_get(g_keymap, "action_paint")), SHORTCUT_TYPE_DOWN); + g_context->tool == TOOL_TYPE_CLONE && + operator_shortcut(string("%s+%s", any_map_get(g_keymap, "set_clone_source"), any_map_get(g_keymap, "action_paint")), SHORTCUT_TYPE_DOWN); if (!g_ui->input_down) { ui_view2d_layer_touched = false; } if (ui_view2d_type == VIEW_2D_TYPE_LAYER && !ui_view2d_text_input_hover && - (operator_shortcut(any_map_get(g_keymap, "action_paint"), SHORTCUT_TYPE_DOWN) || - operator_shortcut(string("%s+%s", any_map_get(g_keymap, "brush_ruler"), any_map_get(g_keymap, "action_paint")), SHORTCUT_TYPE_DOWN) || decal_mask || - set_clone_source || g_config->brush_live)) { + (operator_shortcut(any_map_get(g_keymap, "action_paint"), SHORTCUT_TYPE_DOWN) || + operator_shortcut(string("%s+%s", any_map_get(g_keymap, "brush_ruler"), any_map_get(g_keymap, "action_paint")), SHORTCUT_TYPE_DOWN) || + decal_mask || set_clone_source || g_config->brush_live)) { if (g_config->touch_ui) { // Paint only when clicking on the layer rect @@ -210,53 +210,51 @@ void ui_view2d_update(void *_) { } } - if (g_ui->is_typing) { - return; - } + if (!g_ui->is_typing) { + if (keyboard_started("left")) { + ui_view2d_pan_x -= 5; + } + else if (keyboard_started("right")) { + ui_view2d_pan_x += 5; + } + if (keyboard_started("up")) { + ui_view2d_pan_y -= 5; + } + else if (keyboard_started("down")) { + ui_view2d_pan_y += 5; + } - if (keyboard_started("left")) { - ui_view2d_pan_x -= 5; - } - else if (keyboard_started("right")) { - ui_view2d_pan_x += 5; - } - if (keyboard_started("up")) { - ui_view2d_pan_y -= 5; - } - else if (keyboard_started("down")) { - ui_view2d_pan_y += 5; - } + if (!g_context->paint2d && g_config->touch_ui && g_ui->input_down && ui_view2d_type != VIEW_2D_TYPE_UVMAP) { + ui_view2d_pan_x += g_ui->input_dx; + ui_view2d_pan_y += g_ui->input_dy; + } - if (!g_context->paint2d && g_config->touch_ui && g_ui->input_down && ui_view2d_type != VIEW_2D_TYPE_UVMAP) { - ui_view2d_pan_x += g_ui->input_dx; - ui_view2d_pan_y += g_ui->input_dy; - } + // Limit panning to keep texture in viewport + i32 border = 32; + f32 wm = fmin(ui_view2d_ww, ui_view2d_wh); + f32 tw = ui_view2d_ww * 0.9 * ui_view2d_pan_scale; + f32 tx = ui_view2d_ww / 2.0 - tw / 2.0 + ui_view2d_pan_x; + f32 hh = sys_h(); + f32 ty = hh / 2.0 - tw / 2.0 + ui_view2d_pan_y; - // Limit panning to keep texture in viewport - i32 border = 32; - f32 wm = fmin(ui_view2d_ww, ui_view2d_wh); - f32 tw = ui_view2d_ww * 0.9 * ui_view2d_pan_scale; - f32 tx = ui_view2d_ww / 2.0 - tw / 2.0 + ui_view2d_pan_x; - f32 hh = sys_h(); - f32 ty = hh / 2.0 - tw / 2.0 + ui_view2d_pan_y; + if (tx + border > ui_view2d_ww) { + ui_view2d_pan_x = ui_view2d_ww / 2.0 + tw / 2.0 - border; + } + else if (tx - border < -tw) { + ui_view2d_pan_x = -tw / 2.0 - ui_view2d_ww / 2.0 + border; + } + if (ty + border > hh) { + ui_view2d_pan_y = hh / 2.0 + tw / 2.0 - border; + } + else if (ty - border < -tw) { + ui_view2d_pan_y = -tw / 2.0 - hh / 2.0 + border; + } - if (tx + border > ui_view2d_ww) { - ui_view2d_pan_x = ui_view2d_ww / 2.0 + tw / 2.0 - border; - } - else if (tx - border < -tw) { - ui_view2d_pan_x = -tw / 2.0 - ui_view2d_ww / 2.0 + border; - } - if (ty + border > hh) { - ui_view2d_pan_y = hh / 2.0 + tw / 2.0 - border; - } - else if (ty - border < -tw) { - ui_view2d_pan_y = -tw / 2.0 - hh / 2.0 + border; - } - - if (operator_shortcut(any_map_get(g_keymap, "view_reset"), SHORTCUT_TYPE_STARTED)) { - ui_view2d_pan_x = 0.0; - ui_view2d_pan_y = 0.0; - ui_view2d_pan_scale = 1.0; + if (operator_shortcut(any_map_get(g_keymap, "view_reset"), SHORTCUT_TYPE_STARTED)) { + ui_view2d_pan_x = 0.0; + ui_view2d_pan_y = 0.0; + ui_view2d_pan_scale = 1.0; + } } } @@ -578,7 +576,7 @@ void ui_view2d_update(void *_) { i32 scale_percent = math_round((tw / (float)tex->width) * 100); h_zoom->f = scale_percent; g_ui->_w = math_floor(ew + 3); - f32 new_percent = ui_slider(h_zoom, string("%d%%", scale_percent), 1, 100, true, 1, false, UI_ALIGN_LEFT, true); + f32 new_percent = ui_slider(h_zoom, string("%%", scale_percent), 1, 100, true, 1, true, UI_ALIGN_RIGHT, true); if (h_zoom->changed) { ui_view2d_pan_scale = new_percent / 100.0 * tex->width / (wm * 0.9); ui_view2d_hwnd->redraws = 2;