Returning from full screen to resizable window now forces a direct window resize, closes #1129.
This commit is contained in:
@@ -102,6 +102,7 @@ extern HANDLE ghMutex;
|
|||||||
extern LCID lang_id;
|
extern LCID lang_id;
|
||||||
extern HICON hIcon[256];
|
extern HICON hIcon[256];
|
||||||
extern RECT oldclip;
|
extern RECT oldclip;
|
||||||
|
extern int sbar_height;
|
||||||
|
|
||||||
// extern int status_is_open;
|
// extern int status_is_open;
|
||||||
|
|
||||||
@@ -111,6 +112,7 @@ extern WCHAR wopenfilestring[512];
|
|||||||
extern uint8_t filterindex;
|
extern uint8_t filterindex;
|
||||||
|
|
||||||
|
|
||||||
|
extern void ResizeWindowByClientArea(HWND hwnd, int width, int height);
|
||||||
extern void InitCrashDump(void);
|
extern void InitCrashDump(void);
|
||||||
|
|
||||||
extern HICON LoadIconEx(PCTSTR pszIconName);
|
extern HICON LoadIconEx(PCTSTR pszIconName);
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#define UNICODE
|
#define UNICODE
|
||||||
#define NTDDI_VERSION 0x06010000
|
#define NTDDI_VERSION 0x06010000
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#include <commctrl.h>
|
||||||
#include <shlobj.h>
|
#include <shlobj.h>
|
||||||
#include <shobjidl.h>
|
#include <shobjidl.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@@ -784,6 +785,10 @@ get_vidpause(void)
|
|||||||
void
|
void
|
||||||
plat_setfullscreen(int on)
|
plat_setfullscreen(int on)
|
||||||
{
|
{
|
||||||
|
RECT rect;
|
||||||
|
int temp_x, temp_y;
|
||||||
|
int dpi = win_get_dpi(hwndMain);
|
||||||
|
|
||||||
/* Are we changing from the same state to the same state? */
|
/* Are we changing from the same state to the same state? */
|
||||||
if ((!!on) == (!!video_fullscreen))
|
if ((!!on) == (!!video_fullscreen))
|
||||||
return;
|
return;
|
||||||
@@ -805,8 +810,34 @@ plat_setfullscreen(int on)
|
|||||||
video_fullscreen = on | 2;
|
video_fullscreen = on | 2;
|
||||||
if (vid_apis[vid_api].set_fs)
|
if (vid_apis[vid_api].set_fs)
|
||||||
vid_apis[vid_api].set_fs(on);
|
vid_apis[vid_api].set_fs(on);
|
||||||
if (!on)
|
if (!on) {
|
||||||
plat_resize(scrnsz_x, scrnsz_y);
|
plat_resize(scrnsz_x, scrnsz_y);
|
||||||
|
if (vid_resize) {
|
||||||
|
/* scale the screen base on DPI */
|
||||||
|
if (dpi_scale) {
|
||||||
|
temp_x = MulDiv(unscaled_size_x, dpi, 96);
|
||||||
|
temp_y = MulDiv(unscaled_size_y, dpi, 96);
|
||||||
|
} else {
|
||||||
|
temp_x = unscaled_size_x;
|
||||||
|
temp_y = unscaled_size_y;
|
||||||
|
}
|
||||||
|
/* Main Window. */
|
||||||
|
ResizeWindowByClientArea(hwndMain, temp_x, temp_y + sbar_height);
|
||||||
|
|
||||||
|
/* Render window. */
|
||||||
|
MoveWindow(hwndRender, 0, 0, temp_x, temp_y, TRUE);
|
||||||
|
GetWindowRect(hwndRender, &rect);
|
||||||
|
|
||||||
|
/* Status bar. */
|
||||||
|
MoveWindow(hwndSBAR, 0, rect.bottom, temp_x, 17, TRUE);
|
||||||
|
|
||||||
|
if (mouse_capture)
|
||||||
|
ClipCursor(&rect);
|
||||||
|
|
||||||
|
scrnsz_x = unscaled_size_x;
|
||||||
|
scrnsz_y = unscaled_size_y;
|
||||||
|
}
|
||||||
|
}
|
||||||
video_fullscreen &= 1;
|
video_fullscreen &= 1;
|
||||||
video_force_resize_set(1);
|
video_force_resize_set(1);
|
||||||
if (!on)
|
if (!on)
|
||||||
|
Reference in New Issue
Block a user