From 0fa16ae6e75fc44a990a57ced9f9397eefb439e4 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sat, 9 Dec 2023 17:26:19 +0100 Subject: [PATCH] fixed creating additional click events from global animation events When handling global animation events that trigger user events handled as either key, gadget or screen events, prevent creating additional key or button events to be handled by global animations again, as this can confuse further button event processing, which may cause buttons or menu items to be selected by accident. --- src/events.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/events.c b/src/events.c index 87eaa2b9..2e3c7ca9 100644 --- a/src/events.c +++ b/src/events.c @@ -40,6 +40,7 @@ static DelayCounter special_cursor_delay = { 1000 }; static boolean special_cursor_enabled = FALSE; static boolean stop_processing_events = FALSE; +static boolean is_global_anim_event = FALSE; // forward declarations for internal use @@ -2214,7 +2215,8 @@ void HandleKey(Key key, int key_status) ignore_repeated_key = FALSE; // send key release event to global animation event handling - HandleGlobalAnimClicks(-1, -1, KEY_RELEASED, FALSE); + if (!is_global_anim_event) + HandleGlobalAnimClicks(-1, -1, KEY_RELEASED, FALSE); return; } @@ -2271,9 +2273,9 @@ void HandleKey(Key key, int key_status) } // some key events are handled like clicks for global animations - boolean click = (key == KSYM_space || - key == KSYM_Return || - key == KSYM_Escape); + boolean click = (!is_global_anim_event && (key == KSYM_space || + key == KSYM_Return || + key == KSYM_Escape)); if (click && HandleGlobalAnimClicks(-1, -1, MB_LEFTBUTTON, TRUE)) { @@ -2833,9 +2835,13 @@ boolean DoKeysymAction(int keysym) { Key key = (Key)(-keysym); + is_global_anim_event = TRUE; + HandleKey(key, KEY_PRESSED); HandleKey(key, KEY_RELEASED); + is_global_anim_event = FALSE; + return TRUE; } -- 2.34.1