mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-15 17:22:12 +00:00
Fix mouse in controls setup menu
This commit is contained in:
parent
b38921ff53
commit
512435c59f
3 changed files with 25 additions and 6 deletions
|
@ -3645,6 +3645,12 @@ void M_SetupNextMenu(menu_t *menudef)
|
|||
hidetitlemap = false;
|
||||
}
|
||||
|
||||
// Guess I'll put this here, idk
|
||||
boolean M_MouseNeeded(void)
|
||||
{
|
||||
return (currentMenu == &MessageDef && currentMenu->prevMenu == &OP_ChangeControlsDef);
|
||||
}
|
||||
|
||||
//
|
||||
// M_Ticker
|
||||
//
|
||||
|
|
|
@ -320,6 +320,9 @@ typedef struct menu_s
|
|||
void M_SetupNextMenu(menu_t *menudef);
|
||||
void M_ClearMenus(boolean callexitmenufunc);
|
||||
|
||||
// Maybe this goes here????? Who knows.
|
||||
boolean M_MouseNeeded(void);
|
||||
|
||||
extern menu_t *currentMenu;
|
||||
|
||||
extern menu_t MainDef;
|
||||
|
|
|
@ -110,7 +110,6 @@ static SDL_bool disable_fullscreen = SDL_FALSE;
|
|||
#define USE_FULLSCREEN (disable_fullscreen||!allow_fullscreen)?0:cv_fullscreen.value
|
||||
static SDL_bool disable_mouse = SDL_FALSE;
|
||||
#define USE_MOUSEINPUT (!disable_mouse && cv_usemouse.value && havefocus)
|
||||
#define IGNORE_MOUSE (!cv_alwaysgrabmouse.value && (menuactive || paused || con_destlines || chat_on || gamestate != GS_LEVEL))
|
||||
#define MOUSE_MENU false //(!disable_mouse && cv_usemouse.value && menuactive && !USE_FULLSCREEN)
|
||||
#define MOUSEBUTTONS_MAX MOUSEBUTTONS
|
||||
|
||||
|
@ -362,6 +361,17 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static boolean IgnoreMouse(void)
|
||||
{
|
||||
if (cv_alwaysgrabmouse.value)
|
||||
return false;
|
||||
if (menuactive)
|
||||
return !M_MouseNeeded();
|
||||
if (paused || con_destlines || chat_on || gamestate != GS_LEVEL)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static void SDLdoGrabMouse(void)
|
||||
{
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
|
@ -388,7 +398,7 @@ void I_UpdateMouseGrab(void)
|
|||
{
|
||||
if (SDL_WasInit(SDL_INIT_VIDEO) == SDL_INIT_VIDEO && window != NULL
|
||||
&& SDL_GetMouseFocus() == window && SDL_GetKeyboardFocus() == window
|
||||
&& USE_MOUSEINPUT && !IGNORE_MOUSE)
|
||||
&& USE_MOUSEINPUT && !IgnoreMouse())
|
||||
SDLdoGrabMouse();
|
||||
}
|
||||
|
||||
|
@ -596,7 +606,7 @@ static void Impl_HandleWindowEvent(SDL_WindowEvent evt)
|
|||
}
|
||||
//else firsttimeonmouse = SDL_FALSE;
|
||||
|
||||
if (USE_MOUSEINPUT && !IGNORE_MOUSE)
|
||||
if (USE_MOUSEINPUT && !IgnoreMouse())
|
||||
SDLdoGrabMouse();
|
||||
}
|
||||
else if (!mousefocus && !kbfocus)
|
||||
|
@ -647,7 +657,7 @@ static void Impl_HandleMouseMotionEvent(SDL_MouseMotionEvent evt)
|
|||
|
||||
if (USE_MOUSEINPUT)
|
||||
{
|
||||
if ((SDL_GetMouseFocus() != window && SDL_GetKeyboardFocus() != window) || (IGNORE_MOUSE && !firstmove))
|
||||
if ((SDL_GetMouseFocus() != window && SDL_GetKeyboardFocus() != window) || (IgnoreMouse() && !firstmove))
|
||||
{
|
||||
SDLdoUngrabMouse();
|
||||
firstmove = false;
|
||||
|
@ -700,7 +710,7 @@ static void Impl_HandleMouseButtonEvent(SDL_MouseButtonEvent evt, Uint32 type)
|
|||
// this apparently makes a mouse button down event but not a mouse button up event,
|
||||
// resulting in whatever key was pressed down getting "stuck" if we don't ignore it.
|
||||
// -- Monster Iestyn (28/05/18)
|
||||
if (SDL_GetMouseFocus() != window || IGNORE_MOUSE)
|
||||
if (SDL_GetMouseFocus() != window || IgnoreMouse())
|
||||
return;
|
||||
|
||||
/// \todo inputEvent.button.which
|
||||
|
@ -1082,7 +1092,7 @@ void I_StartupMouse(void)
|
|||
}
|
||||
else
|
||||
firsttimeonmouse = SDL_FALSE;
|
||||
if (cv_usemouse.value && !IGNORE_MOUSE)
|
||||
if (cv_usemouse.value && !IgnoreMouse())
|
||||
SDLdoGrabMouse();
|
||||
else
|
||||
SDLdoUngrabMouse();
|
||||
|
|
Loading…
Reference in a new issue