static void ResizeGadget( p_gadget gadget, ORD length, ORD anchor, bool set_range ) { GUIInitGadget( gadget, gadget->start, length, anchor ); if( !set_range ) { gadget->total_size = length - 1 + gadget->pos; } GUISetShowGadget( gadget, TRUE, TRUE, gadget->pos ); }
static void InitScroll( p_gadget gadget, int pos ) { if( pos < 0 ) { return; } if( pos > ( gadget->total_size - gadget->page_size ) ) { pos = gadget->total_size - gadget->page_size; } if( pos < 0 ) { pos = 0; } GUISetShowGadget( gadget, true, true, pos ); }
void GUIScroll( int change, p_gadget gadget ) { gui_window *wnd; bool range_set; int pos; wnd = (gui_window *)gadget->win; if( ( wnd != NULL ) && ( gadget != NULL ) ) { if( ( gadget->pos + change ) < 0 ) { pos = 0; } else { pos = gadget->pos + change; } if( pos != gadget->pos ) { if( gadget->dir == VERTICAL ) { range_set = GUI_VRANGE_SET( wnd ); } else { range_set = GUI_HRANGE_SET( wnd ); } if( range_set ) { if( ( gadget->total_size != 0 ) && ( pos > ( gadget->total_size - gadget->page_size ) ) ) { pos = gadget->total_size - gadget->page_size; if( pos < 0 ) { pos = 0; } change = pos - gadget->pos; } } else { gadget->total_size = gadget->page_size + pos; } GUISetShowGadget( gadget, true, true, pos ); if( gadget->dir == VERTICAL ) { GUIDoVScroll( wnd, change ); } else { GUIDoHScroll( wnd, change ); } } } }