gui: improve menus

This commit is contained in:
itsmattkc committed 2026-05-07 11:06:36 -07:00
1 parent f956b9c356
commit c516647bec
4 files changed
+47 -19

No files matched your search

+4 -3
View File
@@ -50,14 +50,15 @@ static const char *lang_str[__VPI_LANG_T_COUNT] = {
"WARNING",
"This option will install a Polkit rule that will allow Vanilla's backend to run as root without password entry.\n\nThere are inherent risks to bypassing security systems. Only enable this if you are willing to accept those risks.\n\nNOTE: If you are using the Steam Deck, this will also disable read-only access to your system partition.",
"I acknowledge",
"Enable Root Password Skip",
"Disable Root Password Skip",
"Root Password Skip",
"Root Password Skip",
"Swap AB/XY buttons",
"Keyboard Controls",
"Reset To Defaults",
"Reset",
"Full Screen",
"Hardware Decoding"
"Hardware Decoding",
"Cursor In Full Screen"
};
const char *lang(vpi_lang_t id)
+1
View File
@@ -59,6 +59,7 @@ typedef enum {
VPI_LANG_RESET,
VPI_LANG_FULLSCREEN,
VPI_LANG_HWDEC,
VPI_LANG_CURSOR_IN_FS,
__VPI_LANG_T_COUNT
} vpi_lang_t;
+39 -13
View File
@@ -103,6 +103,14 @@ static void toggle_fullscreen(vui_context_t *vui, int button, void *v)
vui_button_update_checked(vui, button, vpi_config.fullscreen);
}
static void toggle_cursor_in_fullscreen(vui_context_t *vui, int button, void *v)
{
vpi_config.cursor_in_fullscreen = !vpi_config.cursor_in_fullscreen;
vpi_config_save();
vui_set_fullscreen(vui, vpi_config.fullscreen);
vui_button_update_checked(vui, button, vpi_config.cursor_in_fullscreen);
}
static void toggle_hwdec(vui_context_t *vui, int button, void *v)
{
vpi_config.force_software_decode = !vpi_config.force_software_decode;
@@ -149,6 +157,11 @@ void vpi_menu_settings(vui_context_t *vui, void *v)
SETTINGS_NAMES[sc] = VPI_LANG_FULLSCREEN;
SETTINGS_ACTION[sc] = toggle_fullscreen;
sc++;
int SHOW_CURSOR_IN_FS_BTN = sc;
SETTINGS_NAMES[sc] = VPI_LANG_CURSOR_IN_FS;
SETTINGS_ACTION[sc] = toggle_cursor_in_fullscreen;
sc++;
#else
SETTINGS_NAMES[sc] = VPI_LANG_QUIT;
SETTINGS_ACTION[sc] = thunk_to_quit;
@@ -157,9 +170,9 @@ void vpi_menu_settings(vui_context_t *vui, void *v)
// Polkit option (if on a platform that supports polkit)
#ifdef VANILLA_POLKIT_AVAILABLE
int pw_skip_str;
vui_button_callback_t pw_skip_action;
if (access(POLKIT_ACTION_DST, F_OK) == 0) {
int PW_SKIP_SETTING = sc;
const int PW_SKIP_ENABLED = access(POLKIT_ACTION_DST, F_OK) == 0;
if (PW_SKIP_ENABLED) {
SETTINGS_NAMES[sc] = VPI_LANG_DISABLE_PASSWORD_SKIP;
SETTINGS_ACTION[sc] = transition_to_uninstall_polkit_rule;
} else {
@@ -180,27 +193,40 @@ void vpi_menu_settings(vui_context_t *vui, void *v)
sc++;
#endif
int btnw = scrw*3/4;
int btnx = scrw/2 - btnw/2;
int btny = scrh/10;
// Back button
vpi_menu_create_back_button(vui, fglayer, return_to_main, (void *) (intptr_t) fglayer);
const int COLS = 2;
int btnfw = scrw;
int btnw = btnfw / 2;
int btnx = scrw/2 - btnfw/2;
int btny = BTN_SZ;
for (int index = 0; index < sc; index++) {
buttons[index] = vui_button_create(vui, btnx, btny, btnw, BTN_SZ, lang(SETTINGS_NAMES[index]), 0, VUI_BUTTON_STYLE_BUTTON, fglayer, SETTINGS_ACTION[index], (void *) (intptr_t) fglayer);
btny += BTN_SZ;
int row = index / COLS;
int col = index % COLS;
buttons[index] = vui_button_create(vui, btnx + btnw * col, btny + BTN_SZ * row, btnw, BTN_SZ, lang(SETTINGS_NAMES[index]), 0, VUI_BUTTON_STYLE_BUTTON, fglayer, SETTINGS_ACTION[index], (void *) (intptr_t) fglayer);
}
#ifdef VANILLA_POLKIT_AVAILABLE
// Make root password skip button checkable
vui_button_update_checkable(vui, buttons[PW_SKIP_SETTING], 1);
vui_button_update_checked(vui, buttons[PW_SKIP_SETTING], PW_SKIP_ENABLED);
#endif // VANILLA_POLKIT_AVAILABLE
#ifdef VANILLA_GUI_ENABLE_WINDOWED
// Make full screen button checkable
vui_button_update_checkable(vui, buttons[FS_SETTING], 1);
vui_button_update_checked(vui, buttons[FS_SETTING], vpi_config.fullscreen);
#endif
vui_button_update_checkable(vui, buttons[SHOW_CURSOR_IN_FS_BTN], 1);
vui_button_update_checked(vui, buttons[SHOW_CURSOR_IN_FS_BTN], vpi_config.cursor_in_fullscreen);
#endif // VANILLA_GUI_ENABLE_WINDOWED
#ifdef VANILLA_HAS_HWDEC
vui_button_update_checkable(vui, buttons[HWDEC_SETTING], 1);
vui_button_update_checked(vui, buttons[HWDEC_SETTING], !vpi_config.force_software_decode);
#endif
// Back button
vpi_menu_create_back_button(vui, fglayer, return_to_main, (void *) (intptr_t) fglayer);
#endif // VANILLA_HAS_HWDEC
vui_transition_fade_layer_in(vui, fglayer, 0, 0);
}
+3 -3
View File
@@ -1,6 +1,7 @@
#include "ui.h"
#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -288,20 +289,19 @@ void vui_select_direction(vui_context_t *ctx, vui_direction_t dir)
}
vui_direction_t btn_dir;
int btn_dist;
int diffx_abs = abs(diffx);
int diffy_abs = abs(diffy);
int btn_dist = sqrt(((int64_t)diffx_abs * diffx_abs) + ((int64_t)diffy_abs * diffy_abs));
if (diffx_abs > diffy_abs) {
btn_dist = diffx_abs;
if (diffx > 0) {
btn_dir = VUI_DIR_RIGHT;
} else {
btn_dir = VUI_DIR_LEFT;
}
} else {
btn_dist = diffy_abs;
if (diffy > 0) {
btn_dir = VUI_DIR_DOWN;
} else {