Problem: If the focus lost/gained escape sequence is received twice it is
not ignored. (Christ van Willigen)
Solution: Adjust the logic to ignore the escape code.
&& key_name[0] == KS_EXTRA
)
{
- if (key_name[1] == KE_FOCUSGAINED && !focus_state)
+ if (key_name[1] == KE_FOCUSGAINED)
{
- ui_focus_change(TRUE);
- did_cursorhold = TRUE;
- focus_state = TRUE;
+ if (!focus_state)
+ {
+ ui_focus_change(TRUE);
+ did_cursorhold = TRUE;
+ focus_state = TRUE;
+ }
key_name[1] = (int)KE_IGNORE;
}
- else if (key_name[1] == KE_FOCUSLOST && focus_state)
+ else if (key_name[1] == KE_FOCUSLOST)
{
- ui_focus_change(FALSE);
- did_cursorhold = TRUE;
- focus_state = FALSE;
+ if (focus_state)
+ {
+ ui_focus_change(FALSE);
+ did_cursorhold = TRUE;
+ focus_state = FALSE;
+ }
key_name[1] = (int)KE_IGNORE;
}
}
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 2352,
/**/
2351,
/**/