]> source.dussan.org Git - tigervnc.git/commitdiff
[Bugfix] TXViewport: check if we need another scrollbar after adding one
authorAdam Tkac <atkac@redhat.com>
Mon, 17 Jan 2011 10:35:46 +0000 (10:35 +0000)
committerAdam Tkac <atkac@redhat.com>
Mon, 17 Jan 2011 10:35:46 +0000 (10:35 +0000)
Thanks to Paulo Zanoni for the patch.

git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4234 3789f03b-4d11-0410-bbf8-ca57d06f2519

unix/tx/TXViewport.cxx

index 7a1e95b71ac6b19e8652f4d0b3e2b3ccd151ebbf..60648933f1db24d5170439b43570342ed8cc65b6 100644 (file)
@@ -123,10 +123,19 @@ void TXViewport::resizeNotify()
   winMaxWidth = child->width();
   winMaxHeight = child->height();
 
-  needXScrollbar = (!bumpScroll && width() < child->width() &&
-                   height() > scrollbarSize && width() > scrollbarSize);
-  needYScrollbar = (!bumpScroll && height() < child->height() &&
-                   height() > scrollbarSize && width() > scrollbarSize);
+  needXScrollbar = false;
+  needYScrollbar = false;
+  if (!bumpScroll && height() > scrollbarSize && width() > scrollbarSize) {
+    needXScrollbar = (width() < child->width());
+    needYScrollbar = (height() < child->height());
+    // Adding an horizontal scrollbar occupies space, which might cause the
+    // need to add a vertical scrollbar, and vice-versa. These additional
+    // checks should solve this problem
+    if (needXScrollbar && (height() - scrollbarSize < child->height()))
+       needYScrollbar = true;
+    if (needYScrollbar && (width() - scrollbarSize < child->width()))
+       needXScrollbar = true;
+  }
 
   if (needXScrollbar)
     winMaxHeight += scrollbarSize;