X-Git-Url: https://harrygodden.com/git/?p=vg.git;a=blobdiff_plain;f=vg_imgui.c;fp=vg_imgui.c;h=08209b7d2ef44c1d3259416f529df2da3ab2ce0f;hp=21936cca44b9315aca8e2516027cda3b6fa6346c;hb=2c7ca232199368af22640bf3e59f07575009d8cb;hpb=0dc955d83db73c25f74ca1f6917632415d5c36ee diff --git a/vg_imgui.c b/vg_imgui.c index 21936cc..08209b7 100644 --- a/vg_imgui.c +++ b/vg_imgui.c @@ -704,6 +704,14 @@ int ui_click_up( u32 mask ) return 0; } +void ui_set_mouse_pos( ui_px x, ui_px y ) +{ + SDL_WarpMouseInWindow( vg.window, x, y ); + vg_ui.mouse[0] = x; + vg_ui.mouse[1] = y; + vg_ui.mouse_pos_overriden = 1; +} + void ui_prerender(void) { int x, y; @@ -711,8 +719,12 @@ void ui_prerender(void) vg_ui.mouse_state[0] = SDL_GetMouseState( &x, &y ); vg_ui.mouse_delta[0] = x-vg_ui.mouse[0]; vg_ui.mouse_delta[1] = y-vg_ui.mouse[1]; - vg_ui.mouse[0] = x; - vg_ui.mouse[1] = y; + + if( !vg_ui.mouse_pos_overriden ) + { + vg_ui.mouse[0] = x; + vg_ui.mouse[1] = y; + } vg_ui.cur_vert = 0; vg_ui.cur_indice = 0; @@ -721,13 +733,16 @@ void ui_prerender(void) vg_ui.focused_control_hit = 0; vg_ui.cursor = k_ui_cursor_default; vg_ui.wants_mouse = 0; + vg_ui.mouse_pos_overriden = 0; - if( vg_ui.ignore_input_frames ){ + if( vg_ui.ignore_input_frames ) + { vg_ui.ignore_input_frames --; return; } - if( ui_click_down(UI_MOUSE_LEFT)||ui_click_down(UI_MOUSE_MIDDLE) ){ + if( ui_click_down(UI_MOUSE_LEFT)||ui_click_down(UI_MOUSE_MIDDLE) ) + { vg_ui.mouse_click[0] = vg_ui.mouse[0]; vg_ui.mouse_click[1] = vg_ui.mouse[1]; } @@ -1284,13 +1299,22 @@ static enum ui_button_state _ui_slider( return state; } -void ui_slider( ui_rect inout_panel, const char *str_label, +bool ui_slider( ui_rect inout_panel, const char *str_label, f32 min, f32 max, f32 *value, const char *format ) { ui_rect rect, label, box; ui_standard_widget( inout_panel, rect, 1 ); ui_label( rect, str_label, k_ui_scale, 0, box ); - _ui_slider( box, min, max, value, format ); + + enum ui_button_state mask_using = + k_ui_button_holding_inside | + k_ui_button_holding_outside | + k_ui_button_click; + + if( _ui_slider( box, min, max, value, format ) & mask_using ) + return 1; + else + return 0; } /*