X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fgadgets.c;h=89eb008150ca324bf23a6f8f9c01ae7fcfd14e39;hb=75bc7c4024af3aba122923f2341d0b29f67c7a6d;hp=e788b754366263ee773818a0f8362cba0880f7a2;hpb=4a0a9d29b36c9367444191a3e6c5ab9fc7b5ae4f;p=rocksndiamonds.git diff --git a/src/libgame/gadgets.c b/src/libgame/gadgets.c index e788b754..89eb0081 100644 --- a/src/libgame/gadgets.c +++ b/src/libgame/gadgets.c @@ -238,6 +238,7 @@ static void DrawGadget(struct GadgetInfo *gi, boolean pressed, boolean direct) { case GD_TYPE_NORMAL_BUTTON: case GD_TYPE_CHECK_BUTTON: + case GD_TYPE_CHECK_BUTTON_2: case GD_TYPE_RADIO_BUTTON: BlitBitmapOnBackground(gd->bitmap, drawto, @@ -828,6 +829,7 @@ static void DrawGadget_OverlayTouchButton(struct GadgetInfo *gi) { case GD_TYPE_NORMAL_BUTTON: case GD_TYPE_CHECK_BUTTON: + case GD_TYPE_CHECK_BUTTON_2: case GD_TYPE_RADIO_BUTTON: SDL_SetTextureAlphaMod(gd->bitmap->texture_masked, alpha); SDL_SetTextureBlendMode(gd->bitmap->texture_masked, SDL_BLENDMODE_BLEND); @@ -1629,8 +1631,7 @@ void ClickOnGadget(struct GadgetInfo *gi, int button) boolean HandleGadgets(int mx, int my, int button) { - static unsigned int pressed_delay = 0; - static unsigned int pressed_delay_value = GADGET_FRAME_DELAY; + static DelayCounter pressed_delay = { GADGET_FRAME_DELAY }; static int last_button = 0; static int last_mx = 0, last_my = 0; static int pressed_mx = 0, pressed_my = 0; @@ -1756,7 +1757,7 @@ boolean HandleGadgets(int mx, int my, int button) (button != 0 && last_gi != NULL && new_gi == last_gi); gadget_pressed_delay_reached = - DelayReached(&pressed_delay, pressed_delay_value); + DelayReached(&pressed_delay); gadget_released = (release_event && last_gi != NULL); gadget_released_inside = (gadget_released && new_gi == last_gi); @@ -1937,12 +1938,12 @@ boolean HandleGadgets(int mx, int my, int button) ResetDelayCounter(&pressed_delay); // start gadget delay with longer delay after first click on gadget - pressed_delay_value = GADGET_FRAME_DELAY_FIRST; + pressed_delay.value = GADGET_FRAME_DELAY_FIRST; } else // gadget hold pressed for some time { // after first repeated gadget click, continue with shorter delay value - pressed_delay_value = GADGET_FRAME_DELAY; + pressed_delay.value = GADGET_FRAME_DELAY; } if (gi->type & GD_TYPE_SCROLLBAR && !gadget_dragging) @@ -2159,7 +2160,11 @@ boolean HandleGadgets(int mx, int my, int button) boolean deactivate_gadget = TRUE; boolean gadget_changed = TRUE; - if (gi->type & GD_TYPE_SELECTBOX) + if (gi->type == GD_TYPE_CHECK_BUTTON_2) + { + gi->checked = !gi->checked; + } + else if (gi->type & GD_TYPE_SELECTBOX) { if (keep_selectbox_open || mouse_released_where_pressed ||