X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d6dcfb3273b11322e5b1754fda4550b363a5dae..aaa6f9ba6bd0be1fe6a34800e6f753ffdc49900c:/docs/latex/wx/vscroll.tex diff --git a/docs/latex/wx/vscroll.tex b/docs/latex/wx/vscroll.tex index 1a647fc704..b965f1fd15 100644 --- a/docs/latex/wx/vscroll.tex +++ b/docs/latex/wx/vscroll.tex @@ -33,7 +33,7 @@ moment on the scrolling is handled entirely by wxVScrolledWindow, you only need to draw the visible part of contents in your {\tt OnPaint()} method as usual. You should use \helpref{GetFirstVisibleLine()}{wxvscrolledwindowgetfirstvisibleline} and \helpref{GetLastVisibleLine()}{wxvscrolledwindowgetlastvisibleline} to -select the lines to display. ote that the device context origin is not shifted +select the lines to display. Note that the device context origin is not shifted so the first visible line always appears at the point $(0, 0)$ in physical as well as logical coordinates. @@ -90,18 +90,47 @@ Just as with the ctor above, {\tt wxVSCROLL} style is always used, there is no need to specify it explicitly. +\membersection{wxVScrolledWindow::EstimateTotalHeight}\label{wxvscrolledwindowestimatetotalheight} + +\constfunc{virtual wxCoord}{EstimateTotalHeight}{\void} + +This protected function is used internally by wxVScrolledWindow to estimate the +total height of the window when \helpref{SetLineCount}{wxvscrolledwindowsetlinecount} +is called. The default implementation uses the brute force approach if the +number of the items in the control is small enough. Otherwise, it tries to find +the average line height using some lines in the beginning, middle and the end. + +If it is undesirable to access all these lines (some of which might be never +shown) just for the total height calculation, you may override the function and +provide your own guess better and/or faster. + +Note that although returning a totally wrong value would still work, it risks +to result in very strange scrollbar behaviour so this function should really +try to make the best guess possible. + + \membersection{wxVScrolledWindow::GetFirstVisibleLine}\label{wxvscrolledwindowgetfirstvisibleline} \constfunc{size\_t}{GetFirstVisibleLine}{\void} Returns the index of the first currently visible line. +This is same as \helpref{GetVisibleBegin}{wxvscrolledwindowgetvisiblebegin} and +exists only for symmetry with \helpref{GetLastVisibleLine}{wxvscrolledwindowgetlastvisibleline}. + \membersection{wxVScrolledWindow::GetLastVisibleLine}\label{wxvscrolledwindowgetlastvisibleline} \constfunc{size\_t}{GetLastVisibleLine}{\void} -Returns the index of the last currently visible line. +Returns the index of the last currently visible line. Note that this method +returns \texttt{(size\_t)-1} (i.e. a huge positive number) if the control is +empty so if this is possible you should use \helpref{GetVisibleEnd}{wxvscrolledwindowgetvisibleend} +instead. + +\wxheading{See also} + +\helpref{GetFirstVisibleLine}{wxvscrolledwindowgetfirstvisibleline} \membersection{wxVScrolledWindow::GetLineCount}\label{wxvscrolledwindowgetlinecount} @@ -112,6 +141,31 @@ Get the number of lines this window contains (previously set by \helpref{SetLineCount()}{wxvscrolledwindowsetlinecount}) +\membersection{wxVScrolledWindow::GetVisibleBegin}\label{wxvscrolledwindowgetvisiblebegin} + +\constfunc{size\_t}{GetVisibleBegin}{\void} + +Returns the index of the first currently visible line. + +\wxheading{See also} + +\helpref{GetVisibleEnd}{wxvscrolledwindowgetvisibleend} + + +\membersection{wxVScrolledWindow::GetVisibleEnd}\label{wxvscrolledwindowgetvisibleend} + +\constfunc{size\_t}{GetVisibleEnd}{\void} + +Returns the index of the first line after the currently visible one. If the +return value is $0$ it means that no lines are currently shown (which only +happens if the control is empty). Note that the index returned by this method +is not always a valid index as it may be equal to \helpref{GetLineCount}{wxvscrolledwindowgetlinecount}. + +\wxheading{See also} + +\helpref{GetVisibleBegin}{wxvscrolledwindowgetvisiblebegin} + + \membersection{wxVScrolledWindow::HitTest}\label{wxvscrolledwindowhittest} \constfunc{int}{HitTest}{\param{wxCoord }{x}, \param{wxCoord }{y}} @@ -132,7 +186,7 @@ Returns {\tt true} if the given line is (at least partially) visible or \membersection{wxVScrolledWindow::OnGetLineHeight}\label{wxvscrolledwindowongetlineheight} -\constfunc{wxCoord}{OnGetLineHeight}{\param{size\_t }{n}} +\constfunc{virtual wxCoord}{OnGetLineHeight}{\param{size\_t }{n}} This protected virtual function must be overridden in the derived class and it should return the height of the given line in pixels. @@ -144,7 +198,7 @@ should return the height of the given line in pixels. \membersection{wxVScrolledWindow::OnGetLinesHint}\label{wxvscrolledwindowongetlineshint} -\constfunc{void}{OnGetLinesHint}{\param{size\_t }{lineMin}, \param{size\_t }{lineMax}} +\constfunc{virtual void}{OnGetLinesHint}{\param{size\_t }{lineMin}, \param{size\_t }{lineMax}} This function doesn't have to be overridden but it may be useful to do it if calculating the lines heights is a relatively expensive operation @@ -191,7 +245,7 @@ should be less than or equal to {\it to}. \func{void}{RefreshAll}{\void} This function completely refreshes the control, recalculating the number of -items shown on screen and repaining them. It should be called when the values +items shown on screen and repainting them. It should be called when the values returned by \helpref{OnGetLineHeight}{wxvscrolledwindowongetlineheight} change for some reason and the window must be updated to reflect this.