Adding functions to show and hide mouse cursor

This commit is contained in:
Constantine Tarasenkov 2015-02-03 05:47:28 +03:00
parent b926765ce0
commit cc6cf9a741
2 changed files with 45 additions and 0 deletions

View File

@ -52,6 +52,11 @@
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
#include <GLFW/glfw3.h> // GLFW3 library: Windows, OpenGL context and Input management
#ifdef __linux
#define GLFW_EXPOSE_NATIVE_X11 // Linux specific definitions for getting
#define GLFW_EXPOSE_NATIVE_GLX // native functions like glfwGetX11Window
#include <GLFW/glfw3native.h> // which are required for hiding mouse
#endif
//#include <GL/gl.h> // OpenGL functions (GLFW3 already includes gl.h)
//#define GLFW_DLL // Using GLFW DLL on Windows -> No, we use static version!
#endif
@ -176,6 +181,7 @@ static bool cursorOnScreen = false; // Tracks if cursor is inside client
static Texture2D cursor; // Cursor texture
static Vector2 mousePosition;
static bool mouseHidden;
static char previousKeyState[512] = { 0 }; // Required to check if key pressed/released once
static char currentKeyState[512] = { 0 }; // Required to check if key pressed/released once
@ -771,6 +777,42 @@ int GetMouseWheelMove(void)
}
#endif
void HideMouse()
{
#if defined(PLATFORM_DESKTOP)
#ifdef __linux
XColor Col;
const char Nil[] = {0};
Pixmap Pix = XCreateBitmapFromData(glfwGetX11Display(), glfwGetX11Window(window), Nil, 1, 1);
Cursor Cur = XCreatePixmapCursor(glfwGetX11Display(), Pix, Pix, &Col, &Col, 0, 0);
XDefineCursor(glfwGetX11Display(), glfwGetX11Window(window), Cur);
XFreeCursor(glfwGetX11Display(), Cur);
#else
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
#endif
#endif
mouseHidden = true;
}
void ShowMouse()
{
#if defined(PLATFORM_DESKTOP)
#ifdef __linux
XUndefineCursor(glfwGetX11Display(), glfwGetX11Window(window));
#else
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
#endif
#endif
mouseHidden = false;
}
bool IsMouseHidden()
{
return mouseHidden;
}
// TODO: Enable gamepad usage on Rapsberry Pi
// NOTE: emscripten not implemented
#if defined(PLATFORM_DESKTOP)

View File

@ -362,6 +362,9 @@ int GetMouseY(void); // Returns mouse positio
Vector2 GetMousePosition(void); // Returns mouse position XY
void SetMousePosition(Vector2 position); // Set mouse position XY
int GetMouseWheelMove(void); // Returns mouse wheel movement Y
void ShowMouse(void); // Shows mouse cursor
void HideMouse(void); // Hides mouse cursor
bool IsMouseHidden(void); // Returns true if mouse cursor is not visible
#endif
#if defined(PLATFORM_DESKTOP)