Godot: Input.set_mouse_mode (Input.MOUSE_MODE_HIDDEN) oculta o cursor mesmo no cromo da janela

Criado em 5 mai. 2016  ·  3Comentários  ·  Fonte: godotengine/godot

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.

bug windows core

Comentários muito úteis

Algum progresso foi feito aqui em meu fork: https://github.com/mattiascibien/godot/tree/hide-cursor-fix

Todos 3 comentários

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

Esta página foi útil?
0 / 5 - 0 avaliações