From ebeb10e018015c12ddc72990a91a7af2d0a41e59 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 22 Feb 2010 15:02:13 +1300 Subject: [PATCH] alt-f4 quits; window is placed at (0,0); ctrl/alt/shift work on mouse click --- OpenRa.Game/Game.cs | 4 ++-- OpenRa.Gl/GraphicsDevice.cs | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 42156bcc61..fca6a83f82 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -288,7 +288,7 @@ namespace OpenRa } static int2 lastPos; - public static void DispatchMouseInput(MouseInputEvent ev, MouseEventArgs e, Keys ModifierKeys) + public static void DispatchMouseInput(MouseInputEvent ev, MouseEventArgs e, Modifiers modifierKeys) { int sync = Game.world.SyncHash(); @@ -308,7 +308,7 @@ namespace OpenRa Button = (MouseButton)(int)e.Button, Event = ev, Location = new int2(e.Location), - Modifiers = (Modifiers)(int)ModifierKeys, + Modifiers = modifierKeys, }); if( sync != Game.world.SyncHash() ) diff --git a/OpenRa.Gl/GraphicsDevice.cs b/OpenRa.Gl/GraphicsDevice.cs index 55fb0326e1..38d77a15e3 100644 --- a/OpenRa.Gl/GraphicsDevice.cs +++ b/OpenRa.Gl/GraphicsDevice.cs @@ -60,6 +60,8 @@ namespace OpenRa.GlRenderer Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_BLUE_SIZE, 8); Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_ALPHA_SIZE, 8); + Sdl.SDL_putenv( "SDL_VIDEO_WINDOW_POS=0,0" ); + surf = Sdl.SDL_SetVideoMode(width, height, 0, Sdl.SDL_OPENGL | (windowed ? 0 : Sdl.SDL_FULLSCREEN)); Sdl.SDL_WM_SetCaption("OpenRA", "OpenRA"); Sdl.SDL_ShowCursor(0); @@ -122,6 +124,7 @@ namespace OpenRa.GlRenderer CheckGlError(); } + Modifiers mods = 0; MouseButtons lastButtonBits = (MouseButtons)0; static MouseButtons MakeButton(byte b) @@ -152,7 +155,7 @@ namespace OpenRa.GlRenderer Game.DispatchMouseInput(MouseInputEvent.Down, new MouseEventArgs(button, 1, e.button.x, e.button.y, 0), - Keys.None); + mods); } break; case Sdl.SDL_MOUSEBUTTONUP: @@ -162,19 +165,19 @@ namespace OpenRa.GlRenderer Game.DispatchMouseInput(MouseInputEvent.Up, new MouseEventArgs(button, 1, e.button.x, e.button.y, 0), - Keys.None); + mods); } break; case Sdl.SDL_MOUSEMOTION: { Game.DispatchMouseInput(MouseInputEvent.Move, new MouseEventArgs(lastButtonBits, 0, e.motion.x, e.motion.y, 0), - Keys.None); + mods); } break; case Sdl.SDL_KEYDOWN: { - var mods = ( ( e.key.keysym.mod & Sdl.KMOD_ALT ) != 0 ? Modifiers.Alt : 0 ) + mods = ( ( e.key.keysym.mod & Sdl.KMOD_ALT ) != 0 ? Modifiers.Alt : 0 ) | ( ( e.key.keysym.mod & Sdl.KMOD_CTRL ) != 0 ? Modifiers.Ctrl : 0 ) | ( ( e.key.keysym.mod & Sdl.KMOD_SHIFT ) != 0 ? Modifiers.Shift : 0 ); if( e.key.keysym.unicode != 0 ) @@ -185,6 +188,8 @@ namespace OpenRa.GlRenderer var keyName = Sdl.SDL_GetKeyName( e.key.keysym.sym ); if( keyName.Length == 1 ) Game.HandleKeyPress( new KeyPressEventArgs( keyName[ 0 ] ), mods ); + else if( keyName == "f4" && ( ( mods & Modifiers.Alt ) != 0 ) ) + OpenRa.Game.Exit(); } } break;