paint: ui fixes

This commit is contained in:
luboslenco
2026-03-27 17:12:08 +01:00
parent f28adda69c
commit b752705d0e
3 changed files with 18 additions and 6 deletions
+1 -1
View File
@@ -653,7 +653,7 @@ void ui_viewnodes_on_link_drag(i32 link_drag_id, bool is
void ui_viewnodes_on_socket_released(i32 socket_id);
void ui_viewnodes_on_canvas_released();
ui_canvas_control_t *ui_viewnodes_on_canvas_control();
ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down);
ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down, bool is_node_view);
f32 ui_nodes_get_zoom_delta();
bool ui_nodes_is_tab_selected();
i32 ui_nodes_tab_index();
+15 -3
View File
@@ -379,12 +379,12 @@ void ui_viewnodes_on_canvas_released() {
}
ui_canvas_control_t *ui_viewnodes_on_canvas_control() {
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_nodes_controls_down);
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_nodes_controls_down, true);
ui_nodes_controls_down = control->controls_down;
return control;
}
ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down) {
ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down, bool is_node_view) {
if (config_raw->wrap_mouse && controls_down) {
if (ui->input_x < ui->_window_x) {
ui->input_x = ui->_window_x + ui->_window_w;
@@ -411,6 +411,7 @@ ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down) {
!operator_shortcut(any_map_get(config_keymap, "action_zoom"), SHORTCUT_TYPE_DOWN) && !ui->input_down_r && ui->input_wheel_delta == 0.0) {
controls_down = false;
}
if (!controls_down) {
ui_canvas_control_t *cc = GC_ALLOC_INIT(ui_canvas_control_t, {.pan_x = 0, .pan_y = 0, .zoom = 0, .controls_down = controls_down});
return cc;
@@ -422,6 +423,13 @@ ui_canvas_control_t *ui_nodes_get_canvas_control(bool controls_down) {
.pan_y = pan ? ui->input_dy : 0.0,
.zoom = ui->input_wheel_delta != 0.0 ? -ui->input_wheel_delta / 10 : zoom_delta,
.controls_down = controls_down});
if (is_node_view && ui->input_x < ui->_window_x) {
control->pan_x = 0.0;
control->pan_y = 0.0;
control->zoom = 0.0;
}
if (ui->combo_selected_handle != NULL) {
control->zoom = 0.0;
}
@@ -491,7 +499,7 @@ void ui_nodes_update(void *_) {
ui_nodes_wx = math_floor(sys_w()) + ui_toolbar_w(true);
ui_nodes_wy = ui_header_h * 2;
if (ui_view2d_show) {
if (ui_view2d_show && base_view3d_show) {
ui_nodes_wy += sys_h() - config_raw->layout->buffer[LAYOUT_SIZE_NODES_H];
}
@@ -912,6 +920,10 @@ void ui_nodes_render(void *_) {
}
}
if (!base_view3d_show) {
ui_nodes_wh -= ui_header_h * 4;
}
if (ui_window(ui_nodes_hwnd, ui_nodes_wx, ui_nodes_wy, ui_nodes_ww, ui_nodes_wh, false)) {
if (!config_raw->touch_ui) {
+2 -2
View File
@@ -439,13 +439,13 @@ void ui_view2d_update(void *_) {
if (!base_ui_enabled || !ui_view2d_show || mouse_x < ui_view2d_wx || mouse_x > ui_view2d_wx + ui_view2d_ww || mouse_y < ui_view2d_wy + headerh ||
mouse_y > ui_view2d_wy + ui_view2d_wh) {
if (ui_view2d_controls_down) {
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_view2d_controls_down);
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_view2d_controls_down, false);
ui_view2d_controls_down = control->controls_down;
}
return;
}
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_view2d_controls_down);
ui_canvas_control_t *control = ui_nodes_get_canvas_control(ui_view2d_controls_down, false);
ui_view2d_pan_x += control->pan_x;
ui_view2d_pan_y += control->pan_y;
ui_view2d_controls_down = control->controls_down;