X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=8a03effdde53b42af0d2afe7b9f58f201859fd04;hb=72b2940bea34cebf61175bc62a474cb78dcec467;hp=bad6c0c15d992629c5f0973cf2962b5c2cecef0a;hpb=d7bb50dd6727a25908eaecca817b361d9b09158e;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index bad6c0c1..8a03effd 100644 --- a/src/events.c +++ b/src/events.c @@ -169,7 +169,7 @@ void SleepWhileUnmapped() } } - if (game_status==PLAYING) + if (game_status == PLAYING) XAutoRepeatOff(display); } @@ -274,13 +274,36 @@ void HandleFocusEvent(XFocusChangeEvent *event) if (event->type == FocusOut) { + int i; + XAutoRepeatOn(display); old_joystick_status = joystick_status; joystick_status = JOYSTICK_OFF; + + /* simulate key release events for still pressed keys */ key_joystick_mapping = 0; + for (i=0; itype == FocusIn) { + /* When there are two Rocks'n'Diamonds windows which overlap and + the player moves the pointer from one game window to the other, + a 'FocusOut' event is generated for the window the pointer is + leaving and a 'FocusIn' event is generated for the window the + pointer is entering. In some cases, it can happen that the + 'FocusIn' event is handled by the one game process before the + 'FocusOut' event by the other game process. In this case the + X11 environment would end up with activated keyboard auto repeat, + because unfortunately this is a global setting and not (which + would be far better) set for each X11 window individually. + The effect would be keyboard auto repeat while playing the game + (game_status == PLAYING), which is not desired. + To avoid this special case, we just wait 1/50 second before + processing the 'FocusIn' event. + */ + + Delay(20); if (game_status == PLAYING) XAutoRepeatOff(display); if (old_joystick_status != -1) @@ -311,12 +334,6 @@ void HandleButton(int mx, int my, int button) { old_mx = mx; old_my = my; - - /* - HandleVideoButtons(mx,my, button); - HandleSoundButtons(mx,my, button); - HandleGameButtons(mx,my, button); - */ } HandleGadgets(mx, my, button); @@ -340,7 +357,6 @@ void HandleButton(int mx, int my, int button) break; case LEVELED: - LevelEd(mx,my, button); break; case HELPSCREEN: @@ -546,7 +562,6 @@ void HandleKey(KeySym key, int key_status) case LEVELED: HandleLevelEditorKeyInput(key); - LevelNameTyping(key); break; case PLAYING: @@ -589,7 +604,7 @@ void HandleKey(KeySym key, int key_status) break; #endif -#if 1 +#if 0 case XK_m: if (MoveSpeed == 8) {