mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-08-02 14:50:41 -07:00
gitadora: (arena model) fix window settings not working (#494)
## Link to GitHub Issue, if one exists #477 ## Description of change F11 menu (window settings) did not work for arena model because the game engine races to create many windows, so our logic of grabbing the first window created doesn't always get the main window. ## Testing
This commit is contained in:
@@ -56,8 +56,12 @@ void graphics_capture_initial_window(HWND hWnd) {
|
||||
graphics_load_windowed_parameters();
|
||||
|
||||
cfg::SCREENRESIZE->init_window_style = GetWindowLong(hWnd, GWL_STYLE);
|
||||
cfg::SCREENRESIZE->init_window_style_ex = GetWindowLong(hWnd, GWL_EXSTYLE);
|
||||
|
||||
log_debug("graphics-windowed", "graphics_capture_initial_window called");
|
||||
log_debug(
|
||||
"graphics-windowed",
|
||||
"graphics_capture_initial_window called, hWnd={}",
|
||||
fmt::ptr(hWnd));
|
||||
|
||||
RECT rect;
|
||||
if (!GetClientRect(hWnd, &rect)) {
|
||||
@@ -372,13 +376,19 @@ void graphics_update_window_style(HWND hWnd) {
|
||||
return;
|
||||
}
|
||||
|
||||
log_debug("graphics-windowed", "graphics_update_window_style called");
|
||||
log_debug(
|
||||
"graphics-windowed",
|
||||
"graphics_update_window_style called for hWnd={}",
|
||||
fmt::ptr(hWnd));
|
||||
|
||||
// update frame style
|
||||
auto style = cfg::SCREENRESIZE->init_window_style;
|
||||
auto style_ex = cfg::SCREENRESIZE->init_window_style_ex;
|
||||
switch (cfg::SCREENRESIZE->window_decoration) {
|
||||
case cfg::WindowDecorationMode::Borderless:
|
||||
style &= ~WS_OVERLAPPEDWINDOW;
|
||||
style_ex &= ~WS_EX_CLIENTEDGE;
|
||||
style_ex &= ~WS_EX_WINDOWEDGE;
|
||||
break;
|
||||
case cfg::WindowDecorationMode::ResizableFrame:
|
||||
style |= WS_OVERLAPPEDWINDOW;
|
||||
@@ -393,11 +403,26 @@ void graphics_update_window_style(HWND hWnd) {
|
||||
"graphics_update_window_style - calling SetWindowLong with Mode {}, style 0x{:x}",
|
||||
static_cast<int>(cfg::SCREENRESIZE->window_decoration),
|
||||
style);
|
||||
SetWindowLong(hWnd, GWL_STYLE, style);
|
||||
|
||||
const auto ret = SetWindowLong(hWnd, GWL_STYLE, style);
|
||||
(void)ret;
|
||||
|
||||
log_debug(
|
||||
"graphics-windowed",
|
||||
"graphics_update_window_style - SetWindowLong(GWL_STYLE) returned {:x}, GLE={}",
|
||||
ret,
|
||||
GetLastError());
|
||||
|
||||
const auto ret2 = SetWindowLong(hWnd, GWL_EXSTYLE, style_ex);
|
||||
(void)ret2;
|
||||
log_debug(
|
||||
"graphics-windowed",
|
||||
"graphics_update_window_style SetWindowLong(GWL_EXSTYLE) returned {:x}, GLE={}",
|
||||
ret2,
|
||||
GetLastError());
|
||||
|
||||
// SetWindowPos must be called after SetWindowLong if the frame style changed
|
||||
// this will be done in WM_STYLECHANGED handler
|
||||
log_debug("graphics-windowed", "graphics_update_window_style returned");
|
||||
}
|
||||
|
||||
void graphics_update_z_order(HWND hWnd, bool always_on_top) {
|
||||
|
||||
Reference in New Issue
Block a user