DEADSOFTWARE

fix key repeat in GUI
[d2df-sdl.git] / src / game / g_window.pas
index 50fccd40a095fc55d7e64c5f7b73d80b2c3c94b5..95e2c4ddc0844d228cde4ed1397c4bc6cc38c6c2 100644 (file)
@@ -61,7 +61,7 @@ uses
   g_console, e_input, g_options, g_game,
   g_basic, g_textures, e_sound, g_sound, g_menu, ENet, g_net,
   g_map, g_gfx, g_monsters, xprofiler,
-  g_touch;
+  g_touch, g_gui;
 
 
 const
@@ -513,9 +513,13 @@ begin
           if g_dbg_input then
             e_LogWritefln('Input Debug: keysym, press=%s, scancode=%s', [down, key]);
           e_KeyUpDown(key, down);
-          g_Console_ProcessBind(key, down)
+          g_Console_ProcessBind(key, down);
+        end
+        else if gConsoleShow or (g_ActiveWindow <> nil) then
+        begin
+          // key repeat in menus and shit
+          KeyPress(key);
         end;
-        if down then KeyPress(key);
       end;
 
     SDL_JOYBUTTONDOWN, SDL_JOYBUTTONUP:
@@ -527,7 +531,6 @@ begin
           e_LogWritefln('Input Debug: jbutton, joy=%s, button=%s, keycode=%s, press=%s', [ev.jbutton.which, ev.jbutton.button, key, down]);
         e_KeyUpDown(key, down);
         g_Console_ProcessBind(key, down);
-        if down then KeyPress(key)
       end
       else
       begin
@@ -556,7 +559,6 @@ begin
           end;
           e_KeyUpDown(minuskey, True);
           g_Console_ProcessBind(minuskey, True);
-          KeyPress(minuskey);
         end
         else if ev.jaxis.value > JoystickZeroAxes[ev.jaxis.which, ev.jaxis.axis] + e_JoystickDeadzones[ev.jaxis.which] then
         begin
@@ -567,7 +569,6 @@ begin
           end;
           e_KeyUpDown(key, True);
           g_Console_ProcessBind(key, True);
-          KeyPress(key);
         end
         else
         begin
@@ -606,7 +607,6 @@ begin
             key := e_JoyHatToKey(ev.jhat.which, ev.jhat.hat, i);
             e_KeyUpDown(key, down);
             g_Console_ProcessBind(key, down);
-            if down then KeyPress(key)
           end
         end;
         JoystickHatState[ev.jhat.which, ev.jhat.hat] := hat