aboutsummaryrefslogtreecommitdiffstats
path: root/unix/tx
diff options
context:
space:
mode:
authorAdam Tkac <atkac@redhat.com>2008-03-14 13:37:09 +0000
committerAdam Tkac <atkac@redhat.com>2008-03-14 13:37:09 +0000
commitb33e79e72dc3f9d81fa3eee5b809891b9a357baf (patch)
treec34a932e93858ee8dc3a1a036c94211f27550cc4 /unix/tx
parent8650688cb3c098b2496d1d1d2e3ab82ee8eaec14 (diff)
downloadtigervnc-b33e79e72dc3f9d81fa3eee5b809891b9a357baf.tar.gz
tigervnc-b33e79e72dc3f9d81fa3eee5b809891b9a357baf.zip
viewer could aborted when only one scrollbar should be used
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2420 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'unix/tx')
-rw-r--r--unix/tx/TXViewport.cxx26
-rw-r--r--unix/tx/TXViewport.h3
2 files changed, 22 insertions, 7 deletions
diff --git a/unix/tx/TXViewport.cxx b/unix/tx/TXViewport.cxx
index abe51734..2ee2336b 100644
--- a/unix/tx/TXViewport.cxx
+++ b/unix/tx/TXViewport.cxx
@@ -25,7 +25,8 @@
TXViewport::TXViewport(Display* dpy_, int w, int h, TXWindow* parent_)
: TXWindow(dpy_, w, h, parent_), child(0), hScrollbar(0),
vScrollbar(0), scrollbarSize(15), xOff(0), yOff(0), bumpScrollTimer(this),
- bumpScroll(false), needScrollbars(false), bumpScrollX(0), bumpScrollY(0)
+ bumpScroll(false), needXScrollbar(false), needYScrollbar(false),
+ bumpScrollX(0), bumpScrollY(0)
{
clipper = new TXWindow(dpy, width()-scrollbarSize, height()-scrollbarSize,
this);
@@ -117,13 +118,23 @@ bool TXViewport::handleTimeout(rfb::Timer* timer) {
void TXViewport::resizeNotify()
{
- needScrollbars = (!bumpScroll &&
- (width() < child->width() || height() < child->height()) &&
- (width() > scrollbarSize && height() > scrollbarSize));
- if (needScrollbars) {
+ needXScrollbar = (!bumpScroll && width() < child->width() &&
+ height() > scrollbarSize && width() > scrollbarSize);
+ needYScrollbar = (!bumpScroll && height() < child->height() &&
+ height() > scrollbarSize && width() > scrollbarSize);
+
+ if (needXScrollbar && needYScrollbar) {
clipper->resize(width()-scrollbarSize, height()-scrollbarSize);
hScrollbar->map();
vScrollbar->map();
+ } else if (needXScrollbar) {
+ clipper->resize(width(), height()-scrollbarSize);
+ hScrollbar->map();
+ vScrollbar->unmap();
+ } else if (needYScrollbar) {
+ clipper->resize(width()-scrollbarSize, height());
+ hScrollbar->unmap();
+ vScrollbar->map();
} else {
clipper->resize(width(), height());
hScrollbar->unmap();
@@ -132,10 +143,13 @@ void TXViewport::resizeNotify()
setOffset(xOff, yOff);
- if (needScrollbars) {
+ if (needXScrollbar) {
hScrollbar->move(0, height()-scrollbarSize);
hScrollbar->resize(width()-scrollbarSize, scrollbarSize);
hScrollbar->set(child->width(), -xOff, width()-scrollbarSize);
+ }
+
+ if (needYScrollbar) {
vScrollbar->move(width()-scrollbarSize, 0);
vScrollbar->resize(scrollbarSize, height()-scrollbarSize);
vScrollbar->set(child->height(), -yOff, height()-scrollbarSize);
diff --git a/unix/tx/TXViewport.h b/unix/tx/TXViewport.h
index 0c9857d2..823d67af 100644
--- a/unix/tx/TXViewport.h
+++ b/unix/tx/TXViewport.h
@@ -71,7 +71,8 @@ private:
int xOff, yOff;
rfb::Timer bumpScrollTimer;
bool bumpScroll;
- bool needScrollbars;
+ bool needXScrollbar;
+ bool needYScrollbar;
int bumpScrollX, bumpScrollY;
};
#endif