Sistema operacional ou dispositivo:
Windows 10 Pro x64
Descrição do problema (o que aconteceu e o que era esperado):
Usando Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
oculta o cursor do sistema não apenas dentro da área do cliente onde o jogo é exibido, mas também o oculta no topo da janela chrome / border / frame / non-client area. Isso torna difícil acertar os botões minimizar / maximizar / fechar. Talvez isso possa ser otimizado.
Não é possível reproduzir isso no Linux X11, então presumo que seja um bug no código da plataforma Windows.
Eu acho que o problema reside na chamada para o Win32API ShowCursor(p_mode==MOUSE_MODE_VISIBLE);
que realmente esconde o cursor globalmente e não apenas para a área do cliente.
Parece que para ocultar o cursor uma chamada para SetCursor(NULL)
deve ser feita. Esta função também retorna o último cursor que foi usado quando chamado, então acho que podemos mantê-lo em uma variável para restaurá-lo mais tarde com SetCursor(old_cursor)
.
Não sei como isso vai se comportar em tela cheia.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648393 (v = vs.85) .aspx
EDIT: de acordo com isso , parece que setcursor deve ser feito dentro do loop de mensagem da janela.
EDIT2: o que acho que devemos fazer é realmente usar o loop OS_Windows :: WndProc para escondê-lo e mostrá-lo neste caso. Estou pensando em soluções. Assim que eu encontrar um, irei mantê-lo informado.
Algum progresso foi feito aqui em meu fork: https://github.com/mattiascibien/godot/tree/hide-cursor-fix
Comentários muito úteis
Algum progresso foi feito aqui em meu fork: https://github.com/mattiascibien/godot/tree/hide-cursor-fix