Input: Mouse capture mode fixes/improvements
This commit is contained in:
parent
8a137ba72e
commit
b69071497a
13 changed files with 36 additions and 12 deletions
|
@ -79,12 +79,10 @@ MouseMovement KeyManager::GetMouseMovement(double mouseSensitivity)
|
|||
{
|
||||
double factor = EmulationSettings::GetVideoScale() / mouseSensitivity;
|
||||
MouseMovement mov;
|
||||
int16_t x = _xMouseMovement;
|
||||
int16_t y = _yMouseMovement;
|
||||
mov.dx = (int16_t)(x / factor);
|
||||
mov.dy = (int16_t)(y/ factor);
|
||||
_xMouseMovement -= x;
|
||||
_yMouseMovement -= y;
|
||||
mov.dx = (int16_t)(_xMouseMovement / factor);
|
||||
mov.dy = (int16_t)(_yMouseMovement / factor);
|
||||
_xMouseMovement -= (int16_t)(mov.dx * factor);
|
||||
_yMouseMovement -= (int16_t)(mov.dy * factor);
|
||||
|
||||
return mov;
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ using System.Text;
|
|||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
|
||||
namespace Mesen.GUI
|
||||
{
|
||||
|
@ -157,6 +158,9 @@ namespace Mesen.GUI
|
|||
public static void CaptureMouse()
|
||||
{
|
||||
if(AllowMouseCapture) {
|
||||
if(!_mouseCaptured) {
|
||||
InteropEmu.DisplayMessage("Input", ResourceHelper.GetMessage("MouseModeEnabled"));
|
||||
}
|
||||
_mouseCaptured = true;
|
||||
HideMouse();
|
||||
Form frm = Application.OpenForms[0];
|
||||
|
|
|
@ -677,6 +677,8 @@
|
|||
<Message ID="ClearHistory">Esborra el registre</Message>
|
||||
<Message ID="LastFolderUsed">Darrera carpeta utilitzada</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Continua</Message>
|
||||
<Message ID="Pause">Pausa</Message>
|
||||
<Message ID="StartServer">Inicia un servidor</Message>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
<Message ID="ClearHistory">Clear History</Message>
|
||||
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Resume</Message>
|
||||
<Message ID="Pause">Pause</Message>
|
||||
<Message ID="StartServer">Start Server</Message>
|
||||
|
|
|
@ -695,6 +695,8 @@
|
|||
<Message ID="ClearHistory">Limpiar historial</Message>
|
||||
<Message ID="LastFolderUsed">Última carpeta usada</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Continuar</Message>
|
||||
<Message ID="Pause">Pausa</Message>
|
||||
<Message ID="StartServer">Iniciar servidor</Message>
|
||||
|
|
|
@ -707,6 +707,8 @@
|
|||
<Message ID="ClearHistory">Effacer l'historique</Message>
|
||||
<Message ID="LastFolderUsed">Dernier dossier utilisé</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mode souris activé - appuyez sur ESC ou pause pour y mettre fin.</Message>
|
||||
|
||||
<Message ID="Resume">Continuer</Message>
|
||||
<Message ID="Pause">Pause</Message>
|
||||
<Message ID="StartServer">Démarrer serveur</Message>
|
||||
|
|
|
@ -691,6 +691,8 @@
|
|||
<Message ID="ClearHistory">履歴を消去</Message>
|
||||
<Message ID="LastFolderUsed">最後に使用したフォルダ</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">マウスモード有効。 無効にするにはESCやポースボタンを使ってください。</Message>
|
||||
|
||||
<Message ID="Resume">再開</Message>
|
||||
<Message ID="Pause">ポーズ</Message>
|
||||
<Message ID="StartServer">サーバを起動する</Message>
|
||||
|
|
|
@ -693,6 +693,8 @@
|
|||
<Message ID="ClearHistory">Limpar histórico</Message>
|
||||
<Message ID="LastFolderUsed">Última pasta usada</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Continuar</Message>
|
||||
<Message ID="Pause">Pausar</Message>
|
||||
<Message ID="StartServer">Iniciar servidor</Message>
|
||||
|
|
|
@ -696,6 +696,8 @@
|
|||
<Message ID="ClearHistory">Clear History</Message>
|
||||
<Message ID="LastFolderUsed">Last Folder Used</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Продолжить</Message>
|
||||
<Message ID="Pause">Пауза</Message>
|
||||
<Message ID="StartServer">Запустить сервер</Message>
|
||||
|
|
|
@ -696,6 +696,8 @@
|
|||
<Message ID="ClearHistory">Очистити історію</Message>
|
||||
<Message ID="LastFolderUsed">Використовувана остання папка</Message>
|
||||
|
||||
<Message ID="MouseModeEnabled">Mouse mode enabled - press ESC or pause to release the cursor.</Message>
|
||||
|
||||
<Message ID="Resume">Продовжити</Message>
|
||||
<Message ID="Pause">Пауза</Message>
|
||||
<Message ID="StartServer">Запустити сервер</Message>
|
||||
|
|
|
@ -30,6 +30,15 @@ namespace Mesen.GUI.Forms
|
|||
}
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
||||
{
|
||||
if(keyData == Keys.Escape) {
|
||||
CursorManager.ReleaseMouse();
|
||||
}
|
||||
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
bool IMessageFilter.PreFilterMessage(ref Message m)
|
||||
{
|
||||
if(this.ContainsFocus) {
|
||||
|
|
|
@ -43,6 +43,7 @@ namespace Mesen.GUI.Forms
|
|||
protected override void OnMouseDown(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseDown(e);
|
||||
CursorManager.CaptureMouse();
|
||||
SetMouseButtonState(Control.MouseButtons);
|
||||
}
|
||||
|
||||
|
|
|
@ -1003,10 +1003,6 @@ namespace Mesen.GUI.Forms
|
|||
return false;
|
||||
}
|
||||
|
||||
if(keyData == Keys.Escape) {
|
||||
CursorManager.ReleaseMouse();
|
||||
}
|
||||
|
||||
if(this.HideMenuStrip && (keyData & Keys.Alt) == Keys.Alt) {
|
||||
if(this.menuStrip.Visible && !this.menuStrip.ContainsFocus) {
|
||||
this.menuStrip.Visible = false;
|
||||
|
|
Loading…
Add table
Reference in a new issue