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;
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;
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];
}
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;
}
/*
ui_px mouse[2], mouse_delta[2], mouse_click[2];
u32 mouse_state[2];
u32 ignore_input_frames;
+ bool mouse_pos_overriden;
int wants_mouse;
ui_rect click_fader, click_fader_end;
int ui_click_down( u32 mask );
int ui_clicking( u32 mask );
int ui_click_up( u32 mask );
+void ui_set_mouse_pos( ui_px x, ui_px y );
void ui_prerender(void);
u32 ui_colour( enum ui_scheme_colour id );
int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data );
void ui_enum( ui_rect inout_panel, const char *str_label,
struct ui_enum_opt *options, u32 len, i32 *value );
-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 );
void ui_colourpicker( ui_rect inout_panel, const char *str_label, v4f value );
int ui_textbox( ui_rect inout_panel, const char *label,