You can try if you want,
add bool m_sizeHack; line as last line to class in WindowImplX.hpp and make these two changes:
void WindowImplX11::setSize(const Vector2u& size)
{
if (m_sizeHack)
{
XSizeHints* sizeHints = XAllocSizeHints();
sizeHints->flags = PMinSize | PMaxSize;
sizeHints->min_width = sizeHints->max_width = size.x;
sizeHints->min_height = sizeHints->max_height = size.y;
XSetWMNormalHints(m_display, m_window, sizeHints);
XFree(sizeHints);
}
else
{
XResizeWindow(m_display, m_window, size.x, size.y);//can also put that outside of else so it always runs, not just when size hack is false
}
XFlush(m_display);
}
// This is a hack to force some windows managers to disable resizing
if (m_sizeHack = !(style & Style::Resize))//intentional assignment
{
XSizeHints* sizeHints = XAllocSizeHints();
sizeHints->flags = PMinSize | PMaxSize;
sizeHints->min_width = sizeHints->max_width = width;
sizeHints->min_height = sizeHints->max_height = height;
XSetWMNormalHints(m_display, m_window, sizeHints);
XFree(sizeHints);
}
Still does the same(correct) thing on Xfce, and it seems that size hints are enough and it doesn't need XResizeWindow if size hints are set like that, but that may vary.
I don't know X at all by the way, so this might be very suboptimal.