Beispiel #1
0
void Browser::gotoByteMarkOffsetCB(Widget w, XtPointer client, XtPointer)
{
    Browser *browser = (Browser *)client;
    XmTextPosition pos;

    theIBMApplication->setBusyCursor(TRUE);
    char *str = XmTextGetString(w);
    if(STRLEN(str) > 0)
    {
	pos = atoi(str) + browser->marker_pos;
    }
    else
    {
	theIBMApplication->setBusyCursor(FALSE);
	return;
    }
    if(!(pos >= browser->page_start) &&
	(pos < (browser->page_start + browser->page_size)) )
    {
	browser->page_start = browser->marker_pos - browser->page_size/2;
	if(browser->page_start + browser->page_size > browser->file_size)
	    browser->page_start = browser->file_size - browser->page_size;
	/*if(browser->page_start < 0) browser->page_start = 0;*/
	browser->loadBuffer(browser->page_start);
    }
    pos = pos - browser->page_start;
    XmTextShowPosition(browser->text, pos);
    XmTextSetInsertionPosition(browser->text, pos);

    theIBMApplication->setBusyCursor(FALSE);
}