/*---------------------------------------------------------------updateScroll-+ | | +----------------------------------------------------------------------------*/ void updateScroll() { FormPtr frm = FrmGetActiveForm(); FieldPtr field = (FieldPtr)FrmGetObjectPtr( frm, FrmGetObjectIndex(frm, MainConsoleField) ); ScrollBarPtr scroll = (ScrollBarPtr)FrmGetObjectPtr( frm, FrmGetObjectIndex(frm,MainConsoleScrollBar) ); UInt16 currentPosition, textHeight, fieldHeight, maxValue; FldGetScrollValues(field, ¤tPosition, &textHeight, &fieldHeight); if (textHeight > fieldHeight) { maxValue = textHeight - fieldHeight; }else { maxValue = 0; } SclSetScrollBar(scroll, currentPosition, 0, maxValue, fieldHeight - 1); }
void UpdateScrollbar( Word fldindex, Word sbarindex ) { FormPtr frm=FrmGetActiveForm(); FieldPtr fld; ScrollBarPtr scroll; Word currentPosition; Word textHeight; Word fieldHeight; Word maxValue; fld = FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, fldindex ) ); FldGetScrollValues( fld, ¤tPosition, &textHeight, &fieldHeight ); if( textHeight>fieldHeight ) maxValue = textHeight - fieldHeight; else if( currentPosition ) maxValue = currentPosition; else maxValue = 0; scroll = FrmGetObjectPtr( frm, FrmGetObjectIndex( frm, sbarindex ) ); SclSetScrollBar( scroll, currentPosition, 0, maxValue, fieldHeight-1 ); }
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; }