Make sure we do an initial resize
The local window manager might give us a window of a different size
than the one we request. Make sure that the remote resize setting
gets respected even in this case.
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 3579618..423d2df 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -658,12 +658,20 @@
void DesktopWindow::handleDesktopSize()
{
- int width, height;
+ if (desktopSize.hasBeenSet()) {
+ int width, height;
- if (sscanf(desktopSize.getValueStr(), "%dx%d", &width, &height) != 2)
- return;
+ // An explicit size has been requested
- remoteResize(width, height);
+ if (sscanf(desktopSize.getValueStr(), "%dx%d", &width, &height) != 2)
+ return;
+
+ remoteResize(width, height);
+ } else if (::remoteResize) {
+ // No explicit size, but remote resizing is on so make sure it
+ // matches whatever size the window ended up being
+ remoteResize(w(), h());
+ }
}