@ -464,8 +464,6 @@ static void xdgToplevelHandleConfigure(void* userData,
struct wl_array * states )
{
_GLFWwindow * window = userData ;
float aspectRatio ;
float targetRatio ;
uint32_t * state ;
GLFWbool maximized = GLFW_FALSE ;
GLFWbool fullscreen = GLFW_FALSE ;
@ -489,28 +487,6 @@ static void xdgToplevelHandleConfigure(void* userData,
}
}
if ( width ! = 0 & & height ! = 0 )
{
if ( ! maximized & & ! fullscreen )
{
if ( window - > numer ! = GLFW_DONT_CARE & & window - > denom ! = GLFW_DONT_CARE )
{
aspectRatio = ( float ) width / ( float ) height ;
targetRatio = ( float ) window - > numer / ( float ) window - > denom ;
if ( aspectRatio < targetRatio )
height = width / targetRatio ;
else if ( aspectRatio > targetRatio )
width = height * targetRatio ;
}
}
_glfwInputWindowSize ( window , width , height ) ;
window - > wl . width = width ;
window - > wl . height = height ;
resizeWindow ( window ) ;
_glfwInputWindowDamage ( window ) ;
}
if ( window - > wl . activated & & ! activated )
{
if ( window - > monitor & & window - > autoIconify )
@ -525,6 +501,17 @@ static void xdgToplevelHandleConfigure(void* userData,
window - > wl . activated = activated ;
window - > wl . maximized = maximized ;
window - > wl . fullscreen = fullscreen ;
if ( width & & height )
{
window - > wl . pending . width = width ;
window - > wl . pending . height = height ;
}
else
{
window - > wl . pending . width = window - > wl . width ;
window - > wl . pending . height = window - > wl . height ;
}
}
static void xdgToplevelHandleClose ( void * userData ,
@ -544,7 +531,34 @@ static void xdgSurfaceHandleConfigure(void* userData,
struct xdg_surface * surface ,
uint32_t serial )
{
_GLFWwindow * window = userData ;
int width = window - > wl . pending . width ;
int height = window - > wl . pending . height ;
xdg_surface_ack_configure ( surface , serial ) ;
if ( ! window - > wl . maximized & & ! window - > wl . fullscreen )
{
if ( window - > numer ! = GLFW_DONT_CARE & & window - > denom ! = GLFW_DONT_CARE )
{
const float aspectRatio = ( float ) width / ( float ) height ;
const float targetRatio = ( float ) window - > numer / ( float ) window - > denom ;
if ( aspectRatio < targetRatio )
height = width / targetRatio ;
else if ( aspectRatio > targetRatio )
width = height * targetRatio ;
}
}
if ( width ! = window - > wl . width | | height ! = window - > wl . height )
{
window - > wl . width = width ;
window - > wl . height = height ;
resizeWindow ( window ) ;
_glfwInputWindowSize ( window , width , height ) ;
_glfwInputWindowDamage ( window ) ;
}
}
static const struct xdg_surface_listener xdgSurfaceListener = {