Merge pull request #711 from copygirl/patch-1

Replace NativeWindow cursor_visible field with implementation's CursorVisible
This commit is contained in:
Jarl Gullberg 2018-01-06 21:24:16 +01:00 committed by GitHub
commit f11b6ce6ad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 24 deletions

View file

@ -47,7 +47,6 @@ namespace OpenTK
private readonly INativeWindow implementation; private readonly INativeWindow implementation;
private bool events; private bool events;
private bool cursor_visible = true;
private bool previous_cursor_visible = true; private bool previous_cursor_visible = true;
/// <summary> /// <summary>
@ -476,10 +475,12 @@ namespace OpenTK
/// </summary> /// </summary>
public bool CursorVisible public bool CursorVisible
{ {
get { return cursor_visible; } get
{
return implementation.CursorVisible;
}
set set
{ {
cursor_visible = value;
implementation.CursorVisible = value; implementation.CursorVisible = value;
} }
} }

View file

@ -1236,18 +1236,17 @@ namespace OpenTK.Platform.MacOS
public override bool CursorVisible public override bool CursorVisible
{ {
get { return cursorVisible; } get
{
return cursorVisible;
}
set set
{ {
if (value && !cursorVisible) if (value != cursorVisible)
{ {
SetCursorVisible(true); SetCursorVisible(value);
cursorVisible = value;
} }
else if (!value && cursorVisible)
{
SetCursorVisible(false);
}
cursorVisible = value;
} }
} }

View file

@ -935,7 +935,7 @@ namespace OpenTK.Platform.SDL2
{ {
lock (sync) lock (sync)
{ {
if (Exists) if (Exists && value != is_cursor_visible)
{ {
GrabCursor(!value); GrabCursor(!value);
is_cursor_visible = value; is_cursor_visible = value;

View file

@ -1256,10 +1256,17 @@ namespace OpenTK.Platform.Windows
public override bool CursorVisible public override bool CursorVisible
{ {
get { return cursor_visible_count >= 0; } // Not used get
{
return cursor_visible_count >= 0;
}
set set
{ {
if (value && cursor_visible_count < 0) if (value == CursorVisible)
{
return;
}
if (value)
{ {
do do
{ {
@ -1269,7 +1276,7 @@ namespace OpenTK.Platform.Windows
UngrabCursor(); UngrabCursor();
} }
else if (!value && cursor_visible_count >= 0) else
{ {
do do
{ {

View file

@ -1684,12 +1684,19 @@ namespace OpenTK.Platform.X11
public override bool CursorVisible public override bool CursorVisible
{ {
get { return cursor_visible; } get
{
return cursor_visible;
}
set set
{ {
if (value && !cursor_visible) if (value == cursor_visible)
{ {
using (new XLock(window.Display)) return;
}
using (new XLock(window.Display))
{
if (value)
{ {
UngrabMouse(); UngrabMouse();
@ -1699,16 +1706,12 @@ namespace OpenTK.Platform.X11
// Note: if cursorHandle = IntPtr.Zero, this restores the default cursor // Note: if cursorHandle = IntPtr.Zero, this restores the default cursor
// (equivalent to calling XUndefineCursor) // (equivalent to calling XUndefineCursor)
Functions.XDefineCursor(window.Display, window.Handle, cursorHandle); Functions.XDefineCursor(window.Display, window.Handle, cursorHandle);
cursor_visible = true;
} }
} else
else if (!value && cursor_visible)
{
using (new XLock(window.Display))
{ {
GrabMouse(); GrabMouse();
cursor_visible = false;
} }
cursor_visible = value;
} }
} }
} }