diff --git a/base/sources/iron_ui_nodes.c b/base/sources/iron_ui_nodes.c index b1511880..81130ed3 100644 --- a/base/sources/iron_ui_nodes.c +++ b/base/sources/iron_ui_nodes.c @@ -746,7 +746,8 @@ void ui_node_draw(ui_node_t *node, ui_node_canvas_t *canvas) { gpu_texture_t *image = ui_nodes_preview_image(node); if (image != NULL) { draw_set_color(0xffffffff); - draw_scaled_image(image, nx, ny - w, w, w); + float ph = w * (image->height / (float)image->width); + draw_scaled_image(image, nx, ny - ph, w, ph); } } diff --git a/paint/sources/ui_nodes.ts b/paint/sources/ui_nodes.ts index a4feb162..46b5bf4d 100644 --- a/paint/sources/ui_nodes.ts +++ b/paint/sources/ui_nodes.ts @@ -53,7 +53,7 @@ let _ui_nodes_node_search_first: bool; let _ui_nodes_node_search_done: ()=>void; function ui_viewnodes_init() { - ui_nodes_preview_image = uiviewnodes_preview_image; + ui_nodes_preview_image = ui_nodes_get_node_preview_image; ui_nodes_on_link_drag = ui_viewnodes_on_link_drag; ui_nodes_on_socket_released = ui_viewnodes_on_socket_released; ui_nodes_on_canvas_released = ui_viewnodes_on_canvas_released; @@ -62,10 +62,6 @@ function ui_viewnodes_init() { nodes_material_init(); } -function uiviewnodes_preview_image(n: ui_node_t): gpu_texture_t { - return ui_nodes_get_node_preview_image(n); -} - function ui_viewnodes_on_link_drag(link_drag_id: i32, is_new_link: bool) { if (!is_new_link) { return; @@ -975,13 +971,14 @@ function ui_nodes_render() { // Node previews if (context_raw.selected_node_preview && nodes.nodes_selected_id.length > 0) { let sel: ui_node_t = ui_get_node(c.nodes, nodes.nodes_selected_id[0]); - let tw: f32 = 128 * UI_SCALE(); - let tx: f32 = ui_nodes_ww - tw - 8 * UI_SCALE(); - let ty: f32 = ui_nodes_wh - tw - 8 * UI_SCALE(); let img: gpu_texture_t = ui_nodes_get_node_preview_image(sel); if (img != null && !(sel.flags & _ui_node_flag_t.PREVIEW)) { + let tw: f32 = 128 * UI_SCALE(); + let th: f32 = tw * (img.height / img.width); + let tx: f32 = ui_nodes_ww - tw - 8 * UI_SCALE(); + let ty: f32 = ui_nodes_wh - th - 8 * UI_SCALE(); if (img == context_raw.node_preview) { - ui_draw_shadow(tx, ty, tw, tw); + ui_draw_shadow(tx, ty, tw, th); } let single_channel: bool = sel.type == "LAYER_MASK"; if (single_channel) { @@ -989,7 +986,7 @@ function ui_nodes_render() { gpu_set_int(ui_view2d_channel_loc, 1); } draw_set_color(0xffffffff); - draw_scaled_image(img, tx, ty, tw, tw); + draw_scaled_image(img, tx, ty, tw, th); if (single_channel) { draw_set_pipeline(null); } diff --git a/paint/sources/ui_view2d.ts b/paint/sources/ui_view2d.ts index 2166a5c7..280d43dc 100644 --- a/paint/sources/ui_view2d.ts +++ b/paint/sources/ui_view2d.ts @@ -135,7 +135,13 @@ function ui_view2d_render() { tex = project_get_image(context_raw.texture); } else if (ui_view2d_type == view_2d_type_t.NODE) { - tex = context_raw.node_preview; + let nodes: ui_nodes_t = ui_nodes_get_nodes(); + let c: ui_node_canvas_t = ui_nodes_get_canvas(true); + let sel: ui_node_t = ui_get_node(c.nodes, nodes.nodes_selected_id[0]); + let img: gpu_texture_t = ui_nodes_get_node_preview_image(sel); + if (img != null) { + tex = ui_nodes_get_node_preview_image(sel); + } } else if (ui_view2d_type == view_2d_type_t.LAYER) { let layer: slot_layer_t = l;