(Windows) Start implementing 'remember window positions'. Right now only

saves/remembers X, Y position
This commit is contained in:
twinaphex 2018-11-25 09:02:32 +01:00
parent 881a7d571e
commit e1afdf8c3c
25 changed files with 100 additions and 14 deletions

View File

@ -1514,6 +1514,7 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings,
SETTING_BOOL("video_msg_bgcolor_enable", &settings->bools.video_msg_bgcolor_enable, true, message_bgcolor_enable, false);
SETTING_BOOL("video_window_show_decorations", &settings->bools.video_window_show_decorations, true, window_decorations, false);
SETTING_BOOL("video_window_save_positions", &settings->bools.video_window_save_positions, true, false, false);
SETTING_BOOL("sustained_performance_mode", &settings->bools.sustained_performance_mode, true, sustained_performance_mode, false);
@ -1672,6 +1673,8 @@ static struct config_uint_setting *populate_settings_uint(settings_t *settings,
SETTING_UINT("video_stream_quality", &settings->uints.video_stream_quality, true, RECORD_CONFIG_TYPE_STREAMING_LOW_QUALITY, false);
SETTING_UINT("video_record_scale_factor", &settings->uints.video_record_scale_factor, true, 1, false);
SETTING_UINT("video_stream_scale_factor", &settings->uints.video_stream_scale_factor, true, 1, false);
SETTING_UINT("video_windowed_position_x", &settings->uints.window_position_x, true, 0, false);
SETTING_UINT("video_windowed_position_y", &settings->uints.window_position_y, true, 0, false);
*size = count;

View File

@ -293,6 +293,7 @@ typedef struct settings
bool automatically_add_content_to_playlist;
bool video_window_show_decorations;
bool video_window_save_positions;
bool sustained_performance_mode;
} bools;
@ -439,6 +440,9 @@ typedef struct settings
unsigned midi_volume;
unsigned streaming_mode;
unsigned window_position_x;
unsigned window_position_y;
} uints;
struct

View File

@ -617,6 +617,24 @@ static LRESULT win32_handle_keyboard_event(HWND hwnd, UINT message,
}
#endif
static void win32_save_position(void)
{
WINDOWPLACEMENT placement;
settings_t *settings = config_get_ptr();
memset(&placement, 0, sizeof(placement));
placement.length = sizeof(placement);
GetWindowPlacement(main_window.hwnd, &placement);
g_win32_pos_x = placement.rcNormalPosition.left;
g_win32_pos_y = placement.rcNormalPosition.top;
if (settings && settings->bools.video_window_save_positions)
{
settings->uints.window_position_x = g_win32_pos_x;
settings->uints.window_position_y = g_win32_pos_y;
}
}
static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message,
WPARAM wparam, LPARAM lparam)
{
@ -649,21 +667,16 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message,
*quit = true;
return win32_handle_keyboard_event(hwnd, message, wparam, lparam);
case WM_MOVE:
win32_save_position();
break;
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
{
WINDOWPLACEMENT placement;
memset(&placement, 0, sizeof(placement));
placement.length = sizeof(placement);
win32_save_position();
GetWindowPlacement(main_window.hwnd, &placement);
g_win32_pos_x = placement.rcNormalPosition.left;
g_win32_pos_y = placement.rcNormalPosition.top;
g_win32_quit = true;
*quit = true;
}
g_win32_quit = true;
*quit = true;
break;
case WM_SIZE:
/* Do not send resize message if we minimize. */
@ -678,6 +691,7 @@ static LRESULT CALLBACK WndProcCommon(bool *quit, HWND hwnd, UINT message,
g_win32_resized = true;
}
}
win32_save_position();
*quit = true;
break;
case WM_COMMAND:
@ -719,6 +733,7 @@ LRESULT CALLBACK WndProcD3D(HWND hwnd, UINT message,
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
case WM_MOVE:
case WM_SIZE:
case WM_COMMAND:
ret = WndProcCommon(&quit, hwnd, message, wparam, lparam);
@ -779,6 +794,7 @@ LRESULT CALLBACK WndProcGL(HWND hwnd, UINT message,
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
case WM_MOVE:
case WM_SIZE:
case WM_COMMAND:
ret = WndProcCommon(&quit,
@ -878,6 +894,7 @@ LRESULT CALLBACK WndProcGDI(HWND hwnd, UINT message,
case WM_CLOSE:
case WM_DESTROY:
case WM_QUIT:
case WM_MOVE:
case WM_SIZE:
case WM_COMMAND:
ret = WndProcCommon(&quit, hwnd, message, wparam, lparam);
@ -918,6 +935,11 @@ bool win32_window_create(void *data, unsigned style,
#endif
settings_t *settings = config_get_ptr();
#ifndef _XBOX
if (settings->bools.video_window_save_positions)
{
g_win32_pos_x = settings->uints.window_position_x;
g_win32_pos_y = settings->uints.window_position_y;
}
main_window.hwnd = CreateWindowEx(0,
"RetroArch", "RetroArch",
style,

View File

@ -3722,3 +3722,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -4749,3 +4749,5 @@ MSG_HASH(
MSG_MISSING_ASSETS,
"Warning: Missing assets, use the Online Updater if available"
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3500,3 +3500,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3636,3 +3636,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -7730,3 +7730,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3375,3 +3375,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -7747,4 +7747,6 @@ MSG_HASH(
MSG_HASH(
MSG_MISSING_ASSETS,
"ADVERTENCIA: Faltan recursos, use el Actualizador si está disponible"
)
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3534,3 +3534,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3594,3 +3594,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"Nessun preferito disponibile."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -4043,3 +4043,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3495,3 +3495,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -1567,6 +1567,8 @@ MSG_HASH(MENU_ENUM_LABEL_INPUT_DRIVER_LINUXRAW,
"linuxraw")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS,
"video_window_show_decorations")
MSG_HASH(MENU_ENUM_LABEL_VIDEO_WINDOW_SAVE_POSITION,
"video_window_save_position")
MSG_HASH(MENU_ENUM_LABEL_MENU_RGUI_BORDER_FILLER_ENABLE,
"menu_rgui_border_filler_enable")
MSG_HASH(MENU_ENUM_LABEL_MENU_RGUI_BORDER_FILLER_THICKNESS_ENABLE,

View File

@ -3381,3 +3381,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"Geen favorieten beschikbaar."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3797,3 +3797,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"Brak ulubionych."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -7779,4 +7779,6 @@ MSG_HASH(
MSG_HASH(
MSG_MISSING_ASSETS,
"Aviso: Recursos ausentes, use o Atualizador Online se disponível"
)
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3461,3 +3461,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3664,3 +3664,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -7779,4 +7779,6 @@ MSG_HASH(
MSG_HASH(
MSG_MISSING_ASSETS,
"Warning: Missing assets, use the Online Updater if available"
)
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -3534,3 +3534,5 @@ MSG_HASH(
MENU_ENUM_LABEL_VALUE_NO_FAVORITES_AVAILABLE,
"No favorites available."
)
MSG_HASH(MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
"Save Window Positions")

View File

@ -6621,6 +6621,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_VIDEO_WINDOW_SHOW_DECORATIONS,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_VIDEO_WINDOW_SAVE_POSITION,
PARSE_ONLY_BOOL, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_VIDEO_SCALE_INTEGER,
PARSE_ONLY_BOOL, false);

View File

@ -5516,6 +5516,21 @@ static bool setting_append_list(
SD_FLAG_NONE);
menu_settings_list_current_add_cmd(list, list_info, CMD_EVENT_REINIT);
CONFIG_BOOL(
list, list_info,
&settings->bools.video_window_save_positions,
MENU_ENUM_LABEL_VIDEO_WINDOW_SAVE_POSITION,
MENU_ENUM_LABEL_VALUE_VIDEO_WINDOW_SAVE_POSITION,
false,
MENU_ENUM_LABEL_VALUE_OFF,
MENU_ENUM_LABEL_VALUE_ON,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler,
SD_FLAG_NONE);
CONFIG_BOOL(
list, list_info,
&settings->bools.video_scale_integer,

View File

@ -1941,6 +1941,7 @@ enum msg_hash_enums
MENU_LABEL(NETPLAY_USE_MITM_SERVER),
MENU_LABEL(NETPLAY_MITM_SERVER),
MENU_LABEL(VIDEO_WINDOW_SHOW_DECORATIONS),
MENU_LABEL(VIDEO_WINDOW_SAVE_POSITION),
MENU_ENUM_LABEL_VALUE_QT_INFO,
MENU_ENUM_LABEL_VALUE_QT_MENU_FILE,