X-Git-Url: https://harrygodden.com/git/?p=vg.git;a=blobdiff_plain;f=vg_imgui.c;fp=vg_imgui.c;h=bb4f46f54d7f7d152904985871c75d0f9f6c2140;hp=60bb296bfab0a3d8eb9984b8f3f853d4523aa0d8;hb=fb7a6a573f4259045cdc08d556298b6c41bda5fb;hpb=7e5fa8d856fd520ca1ebfff341845ccd4cf3154c diff --git a/vg_imgui.c b/vg_imgui.c index 60bb296..bb4f46f 100644 --- a/vg_imgui.c +++ b/vg_imgui.c @@ -839,7 +839,7 @@ u32 ui_ntext( ui_rect rect, const char *str, u32 len, ui_px scale, text_cursor[0] -= vg_ui.font->sx*scale; ui_rect glyph; - ui_text_glyph( vg_ui.font, '\xb6' /*FIXME*/, glyph ); + ui_text_glyph( vg_ui.font, '\xb1' /*FIXME*/, glyph ); ui_fill_rect( text_cursor, 0x00ffffff, glyph ); text_cursor[0] += vg_ui.font->sx*scale; } @@ -1199,6 +1199,14 @@ void ui_postrender(void) * ----------------------------------------------------------------------------- */ +enum ui_button_state ui_checkbox_base( ui_rect box, i32 *data ) +{ + enum ui_button_state state = ui_button_base( box ); + if( state == k_ui_button_click ) + *data = (*data) ^ 0x1; + return state; +} + int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ) { ui_rect rect, label, box; @@ -1206,12 +1214,34 @@ int ui_checkbox( ui_rect inout_panel, const char *str_label, i32 *data ) ui_split( rect, k_ui_axis_v, -rect[3], 0, label, box ); ui_text( label, str_label, k_ui_scale, k_ui_align_middle_left, 0 ); + + enum ui_button_state state = ui_checkbox_base( box, data ); - int changed = ui_colourbutton( box, k_ui_bg, 0, 0 ) == k_ui_button_click; - if( changed ) - *data = (*data) ^ 0x1; + if( state == k_ui_button_holding_inside ) + { + ui_fill( box, ui_colour(k_ui_bg+2) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else if( state == k_ui_button_holding_outside ) + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else if( state == k_ui_button_hover ) + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_fg), 0 ); + } + else + { + ui_fill( box, ui_colour(k_ui_bg) ); + ui_outline( box, 1, ui_colour(k_ui_bg+4), 0 ); + } + + bool changed = (state == k_ui_button_click); - if( *data ){ + if( *data ) + { ui_rect_pad( box, (ui_px[2]){4,4} ); ui_fill( box, ui_colour( k_ui_orange ) ); }