From caf12fe943ad72390f508f9c3869ae987cde0207 Mon Sep 17 00:00:00 2001 From: danij Date: Wed, 29 Oct 2014 17:03:38 +0000 Subject: [PATCH] Fixed|Input: E_FOCUS events should never be echoed --- doomsday/client/src/ui/b_command.cpp | 2 +- doomsday/client/src/ui/b_main.cpp | 3 ++- doomsday/client/src/ui/clientwindow.cpp | 3 ++- doomsday/client/src/ui/dd_input.cpp | 2 +- doomsday/client/src/ui/p_control.cpp | 26 ++++++++++--------------- 5 files changed, 16 insertions(+), 20 deletions(-) diff --git a/doomsday/client/src/ui/b_command.cpp b/doomsday/client/src/ui/b_command.cpp index 7ab8f909a7..7fa1b083fb 100644 --- a/doomsday/client/src/ui/b_command.cpp +++ b/doomsday/client/src/ui/b_command.cpp @@ -164,7 +164,7 @@ static dd_bool B_ParseEvent(evbinding_t *eb, char const *desc) } else if(!Str_CompareIgnoreCase(str, "sym")) { - // It must be a symbolic event. + // A symbolic event. eb->type = E_SYMBOLIC; eb->device = 0; eb->symbolicName = strdup(desc); diff --git a/doomsday/client/src/ui/b_main.cpp b/doomsday/client/src/ui/b_main.cpp index 87cc020443..212c93e993 100644 --- a/doomsday/client/src/ui/b_main.cpp +++ b/doomsday/client/src/ui/b_main.cpp @@ -432,7 +432,8 @@ dd_bool B_Responder(ddevent_t *ev) { DENG2_ASSERT(ev); - if(symbolicEchoMode && ev->type != E_SYMBOLIC) + if(symbolicEchoMode && + ev->type != E_SYMBOLIC && ev->type != E_FOCUS) { // Make an echo. // Axis events need a bit of filtering. diff --git a/doomsday/client/src/ui/clientwindow.cpp b/doomsday/client/src/ui/clientwindow.cpp index 7a448b1537..44bf1ff6fc 100644 --- a/doomsday/client/src/ui/clientwindow.cpp +++ b/doomsday/client/src/ui/clientwindow.cpp @@ -464,7 +464,8 @@ DENG2_PIMPL(ClientWindow) } // Generate an event about this. - ddevent_t ev; + ddevent_t ev; de::zap(ev); + ev.device = uint(-1); ev.type = E_FOCUS; ev.focus.gained = hasFocus; ev.focus.inWindow = 1; /// @todo Ask WindowSystem for an identifier number. diff --git a/doomsday/client/src/ui/dd_input.cpp b/doomsday/client/src/ui/dd_input.cpp index cef43bb60e..3bde50ea07 100644 --- a/doomsday/client/src/ui/dd_input.cpp +++ b/doomsday/client/src/ui/dd_input.cpp @@ -856,7 +856,7 @@ static void postToQueue(eventqueue_t *q, ddevent_t *ev) /// @note Called by the I/O functions when input is detected. void DD_PostEvent(ddevent_t *ev) { - DENG2_ASSERT(ev && ev->device < NUM_INPUT_DEVICES); + DENG2_ASSERT(ev);// && ev->device < NUM_INPUT_DEVICES); eventqueue_t *q = &queue; if(useSharpInputEvents && diff --git a/doomsday/client/src/ui/p_control.cpp b/doomsday/client/src/ui/p_control.cpp index 7b6be7c8e6..6ab3a8ea38 100644 --- a/doomsday/client/src/ui/p_control.cpp +++ b/doomsday/client/src/ui/p_control.cpp @@ -294,23 +294,16 @@ void P_MaintainControlDoubleClicks(int playerNum, int control, float pos) if(newState == db->previousClickState && nowTime - db->previousClickTime < (uint) MAX_OF(0, doubleClickThresholdMilliseconds)) { - ddevent_t event; - Str* symbolicName = Str_NewStd(); + Str *symbolicName = Str_NewStd(); db->triggered = true; switch(newState) { - case DBCS_POSITIVE: - Str_Append(symbolicName, "control-doubleclick-positive-"); - break; + case DBCS_POSITIVE: Str_Append(symbolicName, "control-doubleclick-positive-"); break; + case DBCS_NEGATIVE: Str_Append(symbolicName, "control-doubleclick-negative-"); break; - case DBCS_NEGATIVE: - Str_Append(symbolicName, "control-doubleclick-negative-"); - break; - - default: - break; + default: break; } // Compose the name of the symbolic event. @@ -322,12 +315,13 @@ void P_MaintainControlDoubleClicks(int playerNum, int control, float pos) << playerNum << control << newState << nowTime - db->previousClickTime << Str_Text(symbolicName); - event.device = 0; - event.type = E_SYMBOLIC; - event.symbolic.id = playerNum; - event.symbolic.name = Str_Text(symbolicName); + ddevent_t ev; de::zap(ev); + ev.device = uint(-1); + ev.type = E_SYMBOLIC; + ev.symbolic.id = playerNum; + ev.symbolic.name = Str_Text(symbolicName); - DD_PostEvent(&event); + DD_PostEvent(&ev); Str_Delete(symbolicName); }