
Example 10-3. Scrollbar compute scroll procedure example (continued)
xv_set(sb, SCROLLBAR_VIEW_LENGTH, last_plus_one - first,
0);
*offset = first;
return (XV_OK);
}
In this example, the textsw package keeps track of the object size based on the number of
characters in the view. When the user scrolls, the object length will most probably change, so
the textsw package uses its own compute scroll procecure to calculate a new object length
and offset each time there is a scroll request. This is needed for cases when the user scrolls
backwards and data is still coming into the textsw, so the object length grows (the propor-
tional indicator shrinks).
10.4.2.1 Indicating scrollbar motion
The attribute
SCROLLBAR_MOTION provides the scrolling motion that resulted during a
scrollbar_request event. This attribute is get only. Possible valid motions returned are:
ABSOLUTE
POINT_TO_MIN (from here_to_top on menu)
PAGE_FORWARD
LINE_FORWARD
MIN_TO_POINT (from top_to_here on menu)
PAGE_BACKWARD
LINE_BACKWARD
TO_END
TO_START
PAGE_ALIGNED
10.4.3 Providing a Scrollbar Normalize Procedure
The scrollbar package provides for a special offset routine that may be used to adjust the new
scroll position before the scrollbar package scrolls to the starting location computed by the
scrollbar compute procedure. This special offset routine, called the normalize procedure,
allows you to perform a scroll adjustment when, for example, the ...