diff options
author | fvogel <fvogelnew1@free.fr> | 2015-05-26 21:13:01 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2015-05-26 21:13:01 (GMT) |
commit | 3613295edb80ce3590a961b0806e87e5ed128998 (patch) | |
tree | 95c68a8aed246ce38b5398982a4e3179e9b971b4 /generic/tkPanedWindow.c | |
parent | a05d1fea7d8d233f5b557a5645d5a996cc33a0b2 (diff) | |
download | tk-3613295edb80ce3590a961b0806e87e5ed128998.zip tk-3613295edb80ce3590a961b0806e87e5ed128998.tar.gz tk-3613295edb80ce3590a961b0806e87e5ed128998.tar.bz2 |
Don't draw the sash associated to the last visible pane
Diffstat (limited to 'generic/tkPanedWindow.c')
-rw-r--r-- | generic/tkPanedWindow.c | 52 |
1 files changed, 42 insertions, 10 deletions
diff --git a/generic/tkPanedWindow.c b/generic/tkPanedWindow.c index 3ae473a..85ab8b0 100644 --- a/generic/tkPanedWindow.c +++ b/generic/tkPanedWindow.c @@ -203,6 +203,8 @@ static void PanedWindowReqProc(ClientData clientData, static void ArrangePanes(ClientData clientData); static void Unlink(Slave *slavePtr); static Slave * GetPane(PanedWindow *pwPtr, Tk_Window tkwin); +static void GetFirstLastVisiblePane(PanedWindow *pwPtr, + int *firstPtr, int *lastPtr); static void SlaveStructureProc(ClientData clientData, XEvent *eventPtr); static int PanedWindowSashCommand(PanedWindow *pwPtr, @@ -1406,6 +1408,7 @@ DisplayPanedWindow( Tk_Window tkwin = pwPtr->tkwin; int i, sashWidth, sashHeight; const int horizontal = (pwPtr->orient == ORIENT_HORIZONTAL); + int first, last; pwPtr->flags &= ~REDRAW_PENDING; if ((pwPtr->tkwin == NULL) || !Tk_IsMapped(tkwin)) { @@ -1452,9 +1455,10 @@ DisplayPanedWindow( * Draw the sashes. */ + GetFirstLastVisiblePane(pwPtr, &first, &last); for (i = 0; i < pwPtr->numSlaves - 1; i++) { slavePtr = pwPtr->slaves[i]; - if (slavePtr->hide) { + if (slavePtr->hide || i == last) { continue; } if (sashWidth > 0 && sashHeight > 0) { @@ -1699,17 +1703,10 @@ ArrangePanes( Tcl_Preserve((ClientData) pwPtr); /* - * Find index of last visible pane. + * Find index of first and last visible panes. */ - for (i = 0, last = 0, first = -1; i < pwPtr->numSlaves; i++) { - if (pwPtr->slaves[i]->hide == 0) { - if (first < 0) { - first = i; - } - last = i; - } - } + GetFirstLastVisiblePane(pwPtr, &first, &last); /* * First pass; compute sizes @@ -2047,6 +2044,41 @@ GetPane( } /* + *---------------------------------------------------------------------- + * + * GetFirstLastVisiblePane -- + * + * Given panedwindow, find the index of the first and last visible panes + * of that paned window. + * + * Results: + * Index of the first and last visible panes. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +static void +GetFirstLastVisiblePane( + PanedWindow *pwPtr, /* Pointer to the paned window info. */ + int *firstPtr, /* Returned index for first. */ + int *lastPtr) /* Returned index for last. */ +{ + int i; + + for (i = 0, *lastPtr = 0, *firstPtr = -1; i < pwPtr->numSlaves; i++) { + if (pwPtr->slaves[i]->hide == 0) { + if (*firstPtr < 0) { + *firstPtr = i; + } + *lastPtr = i; + } + } +} + +/* *-------------------------------------------------------------- * * SlaveStructureProc -- |