static void RulesSetScrolling (void) { FieldPtr field; field = FrmGetObjectPtr (rulesFrm, FrmGetObjectIndex (rulesFrm, rulesText)); FrmUpdateScrollers (rulesFrm, FrmGetObjectIndex (rulesFrm, rulesScrollUp), FrmGetObjectIndex (rulesFrm, rulesScrollDown), FldScrollable (field, winUp), FldScrollable (field, winDown)); }
/********************************************************************** UPDATE_FIELD_SCROLLERS IN: frm, fld, up_scroller, down_scroller = various UI doodads OUT: nothing PURPOSE: Update the given scroller widgets (for the given field (in the given form)), according to whether the field is scrollable in the "up" and "down" directions. **********************************************************************/ void update_field_scrollers(FormPtr frm, FieldPtr fld, Word up_scroller, Word down_scroller) { Boolean u, d; u = FldScrollable(fld, winUp); d = FldScrollable(fld, winDown); FrmUpdateScrollers(frm, FrmGetObjectIndex(frm, up_scroller), FrmGetObjectIndex(frm, down_scroller), u, d); return; }
/********************************************************************** PAGE_SCROLL_FIELD IN: frm, fld = various UI doodads dir = whether to scroll 'fld' up or down OUT: PURPOSE: Call this to scroll the field 'fld' up/down by one "page". (The caller should call update_field_scrollers immediately afterward.) **********************************************************************/ #ifndef I_AM_COLOR void page_scroll_field(FormPtr frm, FieldPtr fld, DirectionType dir) #else /* I_AM_COLOR */ void page_scroll_field(FormPtr frm, FieldPtr fld, WinDirectionType dir) #endif /* I_AM_COLOR */ { Word linesToScroll; /* how many lines can we scroll? */ if (FldScrollable(fld, dir)) { linesToScroll = FldGetVisibleLines(fld) - 1; FldScrollField(fld, linesToScroll, dir); } return; }
/*-----------------------------------------------------------------pageScroll-+ | | +----------------------------------------------------------------------------*/ void pageScroll(WinDirectionType direction) { FormPtr frm = FrmGetActiveForm(); FieldPtr field = (FieldPtr)FrmGetObjectPtr( frm, FrmGetObjectIndex(frm, MainConsoleField) ); if (FldScrollable(field, direction)) { int linesToScroll = FldGetVisibleLines(field) - 1; if (direction == winUp) linesToScroll = -linesToScroll; linesScroll(linesToScroll, true); } }
void PageScroll( Word fldindex, Word sbarindex, DirectionType dir ) { FormPtr frm=FrmGetActiveForm(); FieldPtr fld; fld = FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, fldindex ) ); if( FldScrollable( fld, dir ) ) { int linesToScroll = FldGetVisibleLines( fld ) - 1; if( dir==up ) linesToScroll = -linesToScroll; ScrollLines( fldindex, sbarindex, linesToScroll, true ); } }
Boolean AnnotationFormHandleEvent ( EventType* event /* pointer to an EventType structure */ ) { Boolean handled; handled = ResizeHandleEvent( event ); if ( handled ) return handled; switch ( event->eType ) { case frmOpenEvent: AnnotationFormInit(); handled = true; break; case keyDownEvent: switch ( event->data.keyDown.chr ) { case pageUpChr: if ( FldScrollable( field, winUp ) ) FldScrollField( field, 1, winUp ); UpdateFieldScrollbar( field, scrollBar ); break; case pageDownChr: if ( FldScrollable( field, winDown ) ) FldScrollField( field, 1, winDown ); UpdateFieldScrollbar( field, scrollBar ); break; default: { UInt16 scrollPos; UInt16 textHeight; UInt16 fieldHeight; FldGetScrollValues( field, &scrollPos, &textHeight, &fieldHeight ); if ( FldHandleEvent( field, event ) ) { UInt16 newScrollPos; UInt16 newTextHeight; UInt16 newFieldHeight; FldGetScrollValues( field, &newScrollPos, &newTextHeight, &newFieldHeight ); if ( scrollPos != newScrollPos || textHeight != newTextHeight || fieldHeight != newFieldHeight ) UpdateFieldScrollbar( field, scrollBar ); handled = true; } break; } } break; case sclRepeatEvent: ScrollMessage( field, event->data.sclRepeat.newValue - event->data.sclRepeat.value ); break; case ctlSelectEvent: switch ( event->data.ctlSelect.controlID ){ case frmAnnotationCancel: AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; case frmAnnotationOK: SaveAnnotation(); AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); handled = true; break; case frmAnnotationDelete: if ( entryP->id.indexInParagraph != NEW_ANNOTATION ) { DeleteAnnotation( &( entryP->id ) ); } AnnotationFormClose(); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; default: handled = true; break; } break; case frmCloseEvent: AnnotationFormClose(); handled = false; break; default: handled = false; } return handled; }