Hide UI rework/arrow key fix (#2504)

* Unbreak arrow keys

* Use bitshift for Flags instead of literal
This commit is contained in:
ooa113y 2021-08-05 00:28:19 +03:00 committed by GitHub
parent 5ceaf344ce
commit 46ffc81d90
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 43 additions and 21 deletions

View file

@ -4,5 +4,6 @@
{
public Key ToggleVsync { get; set; }
public Key Screenshot { get; set; }
public Key ShowUi { get; set; }
}
}

View file

@ -1,5 +1,5 @@
{
"version": 28,
"version": 29,
"enable_file_log": true,
"res_scale": 1,
"res_scale_custom": 1,
@ -58,7 +58,8 @@
"enable_mouse": false,
"hotkeys": {
"toggle_vsync": "Tab",
"screenshot": "F8"
"screenshot": "F8",
"show_ui": "F4"
},
"keyboard_config": [],
"controller_config": [],

View file

@ -14,7 +14,7 @@ namespace Ryujinx.Configuration
/// <summary>
/// The current version of the file format
/// </summary>
public const int CurrentVersion = 28;
public const int CurrentVersion = 29;
public int Version { get; set; }

View file

@ -543,7 +543,8 @@ namespace Ryujinx.Configuration
Hid.Hotkeys.Value = new KeyboardHotkeys
{
ToggleVsync = Key.Tab,
Screenshot = Key.F8
Screenshot = Key.F8,
ShowUi = Key.F4
};
Hid.InputConfig.Value = new List<InputConfig>
{
@ -859,6 +860,20 @@ namespace Ryujinx.Configuration
configurationFileUpdated = true;
}
if (configurationFileFormat.Version < 29)
{
Common.Logging.Logger.Warning?.Print(LogClass.Application, $"Outdated configuration version {configurationFileFormat.Version}, migrating to version 29.");
configurationFileFormat.Hotkeys = new KeyboardHotkeys
{
ToggleVsync = Key.Tab,
Screenshot = Key.F8,
ShowUi = Key.F4
};
configurationFileUpdated = true;
}
Logger.EnableFileLog.Value = configurationFileFormat.EnableFileLog;
Graphics.ResScale.Value = configurationFileFormat.ResScale;
Graphics.ResScaleCustom.Value = configurationFileFormat.ResScaleCustom;

View file

@ -101,6 +101,7 @@ namespace Ryujinx.Ui
[GUI] MenuItem _simulateWakeUpMessage;
[GUI] MenuItem _scanAmiibo;
[GUI] MenuItem _takeScreenshot;
[GUI] MenuItem _hideUi;
[GUI] MenuItem _fullScreen;
[GUI] CheckMenuItem _startFullScreen;
[GUI] CheckMenuItem _favToggle;
@ -243,6 +244,8 @@ namespace Ryujinx.Ui
_gameTable.SearchColumn = 2;
_gameTable.SearchEqualFunc = (model, col, key, iter) => !((string)model.GetValue(iter, col)).Contains(key, StringComparison.InvariantCultureIgnoreCase);
_hideUi.Label = _hideUi.Label.Replace("SHOWUIKEY", ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi.ToString());
UpdateColumns();
UpdateGameTable();
@ -1072,15 +1075,6 @@ namespace Ryujinx.Ui
ConfigurationState.Instance.Graphics.AspectRatio.Value = ((int)aspectRatio + 1) > Enum.GetNames(typeof(AspectRatio)).Length - 1 ? AspectRatio.Fixed4x3 : aspectRatio + 1;
}
private void Focus_Menu_Bar(object sender, KeyReleaseEventArgs args)
{
if (args.Event.Key == Gdk.Key.Alt_L)
{
ToggleExtraWidgets(true);
_menuBar.GrabFocus();
}
}
private void Row_Clicked(object sender, ButtonReleaseEventArgs args)
{
if (args.Event.Button != 3 /* Right Click */)

View file

@ -6,7 +6,6 @@
<property name="can_focus">False</property>
<property name="title" translatable="yes">Ryujinx</property>
<property name="window_position">center</property>
<signal name="key-release-event" handler="Focus_Menu_Bar" swapped="no" />
<child>
<object class="GtkBox" id="_box">
<property name="visible">True</property>
@ -15,7 +14,7 @@
<child>
<object class="GtkMenuBar" id="_menuBar">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem" id="_fileMenu">
<property name="visible">True</property>
@ -343,7 +342,7 @@
<object class="GtkMenuItem" id="_hideUi">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Hide UI (Alt to show)</property>
<property name="label" translatable="yes">Hide UI (SHOWUIKEY to show)</property>
<property name="use_underline">True</property>
<signal name="activate" handler="HideUi_Pressed" swapped="no" />
</object>

View file

@ -568,6 +568,12 @@ namespace Ryujinx.Ui
Renderer.Screenshot();
}
if (currentHotkeyState.HasFlag(KeyboardHotkeyState.ShowUi) &&
!_prevHotkeyState.HasFlag(KeyboardHotkeyState.ShowUi))
{
(Toplevel as MainWindow).ToggleExtraWidgets(true);
}
_prevHotkeyState = currentHotkeyState;
}
@ -593,9 +599,10 @@ namespace Ryujinx.Ui
[Flags]
private enum KeyboardHotkeyState
{
None,
ToggleVSync,
Screenshot
None = 0,
ToggleVSync = 1 << 0,
Screenshot = 1 << 1,
ShowUi = 1 << 2
}
private KeyboardHotkeyState GetHotkeyState()
@ -612,6 +619,11 @@ namespace Ryujinx.Ui
state |= KeyboardHotkeyState.Screenshot;
}
if (_keyboardInterface.IsPressed((Key)ConfigurationState.Instance.Hid.Hotkeys.Value.ShowUi))
{
state |= KeyboardHotkeyState.ShowUi;
}
return state;
}
}