slider api change
[vg.git] / vg_imgui.c
index 21936cca44b9315aca8e2516027cda3b6fa6346c..08209b7d2ef44c1d3259416f529df2da3ab2ce0f 100644 (file)
@@ -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;
 }
 
 /*