$B$d$^$F$G$9!#(B
> > $B%U%l!<%`I=<($N%Z!<%8$+$i!"%U%l!<%`Fb$N%j%s%/@h$X0\F0$7$?8e!"La$k(B
> > (B)$B$HJ8=q$N@hF,$K$J$C$F$7$^$&$N$G$9$,!"%+!<%=%k$N0LCV$rJ]B8$9$kMM(B
> > $B$K$O$G$-$J$$$G$7$g$&$+!)(B
$B$H$$$&$o$1$G!";W$$$D$$$?$N$K<j$rF~$l$F$J$+$C$?%3!<%I$r=q$-$^$7$?!#0l(B
$B1~$$$C$F$*$/$H!"(Bresize$B$K$O$a$C$]$&<e$$!"$O$:$G$9!#%+!<%=%k$N0LCV$O3P$((B
$B$F$/$l$^$9$,!"2hLL$NAjBP0LCV$bJ8>O$KBP$9$k0LCV$b3P$($F$/$l$^$;$s!#(B
$B$?$V$s(Bw3m-0.1.9+$B%W%j%F%#%W%j%s%H$K$"$?$k$O$:$G$9$,!"$b$7$+$7$?$i@h$K(B
$BEj9F$7$?(Bframeset$BCV$-49$(%Q%C%A$rEv$F$J$$$HL5M}$+$b$7$l$^$;$s!#JQ99<+BN(B
$B$OFHN)$J$N$G<j%Q%A$C$F$/$@$5$$!#(B
> $B$H$3$m$G!"F|7P?7J9$N(BURL$B$,(B
> http:/www.nikkei.co.jp/
> http://satellite.nikkei.co.jp/
http://www.nikkei.co.jp/cont.html
$B$G$7$?!#2?$d$C$F$s$@"*$o$7!#(B $B:#F|$+$i(B http://www.nikkei.co.jp/cont.html $B$O(B
$B$X$N(B0$BIC(Bjump$B$K$J$C$F$^$9!#!D!D(BWellknown$B$@$C$?$j$7$F!#(B
--- $B$d$^$F(B
diff -bBwrU3 -x *[^.]? -x *.[^ch] w3m.old/buffer.c w3m.new/buffer.c --- w3m.old/buffer.c Thu Apr 27 15:40:00 2000 +++ w3m.new/buffer.c Mon May 15 18:31:59 2000 @@ -95,7 +95,7 @@ } while (buf->frameset) { deleteFrameSet(buf->frameset); - buf->frameset = popFrameTree(&(buf->frameQ)); + buf->frameset = popFrameTree(&(buf->frameQ), NULL, NULL); } } @@ -436,7 +436,7 @@ clearBuffer(buf); while (buf->frameset) { deleteFrameSet(buf->frameset); - buf->frameset = popFrameTree(&(buf->frameQ)); + buf->frameset = popFrameTree(&(buf->frameQ), NULL, NULL); } diff -bBwrU3 -x *[^.]? -x *.[^ch] w3m.old/file.c w3m.new/file.c --- w3m.old/file.c Thu Apr 27 15:40:01 2000 +++ w3m.new/file.c Mon May 15 18:31:54 2000 @@ -3650,7 +3650,7 @@ buf->frameset = frameset_s[frameset_sp]; } else - pushFrameTree(&(buf->frameQ), frameset_s[frameset_sp]); + pushFrameTree(&(buf->frameQ), frameset_s[frameset_sp], 0, 0); } else addFrameSet(frameset_s[frameset_sp - 1], frameset_s[frameset_sp]); @@ -249,7 +255,10 @@ } void -pushFrameTree(struct frameset_queue **fqpp, struct frameset *fs) +pushFrameTree(struct frameset_queue **fqpp, + struct frameset *fs, + long linenumber, + short pos) { struct frameset_queue *rfq, *cfq = *fqpp; @@ -258,6 +267,8 @@ return; rfq = New(struct frameset_queue); + rfq->linenumber = linenumber; + rfq->pos = pos; rfq->back = cfq; if (cfq) { rfq->next = cfq->next; @@ -273,7 +284,9 @@ } struct frameset * -popFrameTree(struct frameset_queue **fqpp) +popFrameTree(struct frameset_queue **fqpp, + long *linenumber, + short *pos) { struct frameset_queue *rfq = NULL, *cfq = *fqpp; @@ -283,6 +296,10 @@ return rfs; rfs = cfq->frameset; + if (linenumber) + *linenumber = cfq->linenumber; + if (pos) + *pos = cfq->pos; if (cfq->next) { (rfq = cfq->next)->back = cfq->back; } @@ -392,7 +414,7 @@ if (buf->frameset) { ret_frameset = buf->frameset; ret_frameset->name = b->name; - buf->frameset = popFrameTree(&(buf->frameQ)); + buf->frameset = popFrameTree(&(buf->frameQ), NULL, NULL); } discardBuffer(buf); return ret_frameset; @@ -480,7 +505,9 @@ if (!frame.body->name && f->name) { frame.body->name = Sprintf("%s_%d", f->name, i)->ptr; } - f_frameset = frame_download_source(frame.body, current); + f_frameset = frame_download_source(frame.body, + currentURL, + current->baseURL); if (f_frameset) { deleteFrame(frame.body); f->frame[i].set = frame.set = f_frameset; diff -bBwrU3 -x *[^.]? -x *.[^ch] w3m.old/frame.h w3m.new/frame.h --- w3m.old/frame.h Thu Apr 27 15:40:02 2000 +++ w3m.new/frame.h Mon May 15 17:07:36 2000 @@ -45,6 +47,6 @@ struct frameset_queue *next; struct frameset_queue *back; struct frameset *frameset; - short currentColumn; + long linenumber; short pos; }; diff -bBwrU3 -x *[^.]? -x *.[^ch] w3m.old/main.c w3m.new/main.c --- w3m.old/main.c Thu Apr 27 20:32:47 2000 +++ w3m.new/main.c Mon May 15 18:40:20 2000 @@ -1851,10 +1853,16 @@ } /* frame page */ + + /* save current frame combination */ + pushFrameTree(&(nfbuf->frameQ), + copyFrameSet(nfbuf->frameset), + Currentbuf->currentLine ? + Currentbuf->currentLine->linenumber : 0, + Currentbuf->pos); + /* delete frame view buffer */ delBuffer(Currentbuf); Currentbuf = nfbuf; - /* save current frame combination */ - pushFrameTree(&(nfbuf->frameQ), copyFrameSet(nfbuf->frameset)); /* nfbuf->frameset = copyFrameSet(nfbuf->frameset); */ resetFrameElement(f_element, buf, referer, request); discardBuffer(buf); @@ -2578,37 +2587,39 @@ return TRUE; } -static void -realBackBuffer() -{ - Buffer *buf; - - buf = Currentbuf->linkBuffer[LB_N_FRAME]; - delBuffer(Currentbuf); - if (RenderFrame && Currentbuf == buf) { - struct frameset *fs; - - fs = popFrameTree(&(buf->frameQ)); - if (fs == NULL) - realBackBuffer(); - else { - deleteFrameSet(buf->frameset); - buf->frameset = fs; - } - } -} /* delete current buffer and back to the previous buffer */ void backBf(void) { + Buffer *buf; + struct frameset *fs = NULL; + long linenumber; + short pos; + if (!checkBackBuffer(Currentbuf)) { disp_message("Can't back...", TRUE); return; } - realBackBuffer(); - if (RenderFrame && Currentbuf->frameset != NULL) + + do { + buf = Currentbuf->linkBuffer[LB_N_FRAME]; + delBuffer(Currentbuf); + } while (RenderFrame && + Currentbuf == buf && + (fs = popFrameTree(&(buf->frameQ), &linenumber, &pos)) == NULL); + if (fs) { + deleteFrameSet(buf->frameset); + buf->frameset = fs; + } + + if (RenderFrame && Currentbuf->frameset != NULL) { rFrame(); + gotoLine(Currentbuf, linenumber); + if (Currentbuf->currentLine) + Currentbuf->pos = MIN(pos, Currentbuf->currentLine->len - 1); + arrangeCursor(Currentbuf); + } clear(); displayBuffer(Currentbuf, B_FORCE_REDRAW); } diff -bBwrU3 -x *[^.]? -x *.[^ch] w3m.old/proto.h w3m.new/proto.h --- w3m.old/proto.h Thu Apr 27 15:40:07 2000 +++ w3m.new/proto.h Mon May 15 18:31:06 2000 @@ -250,14 +250,19 @@ extern void deleteFrame(struct frame_body *b); extern void deleteFrameSet(struct frameset *f); extern void deleteFrameSetElement(union frameset_element e); extern struct frameset *copyFrameSet(struct frameset *of); -extern void pushFrameTree(struct frameset_queue **fqpp, struct frameset *fs); -extern struct frameset *popFrameTree(struct frameset_queue **fqpp); +extern void pushFrameTree(struct frameset_queue **fqpp, + struct frameset *fs, + long linenumber, + short pos); +extern struct frameset *popFrameTree(struct frameset_queue **fqpp, + long *linenumber, + short *pos); extern void resetFrameElement(union frameset_element *f_element, Buffer * buf, char *referer, FormList * request); extern Buffer *renderFrame(Buffer * Cbuf); extern union frameset_element *search_frame(struct frameset *fset, char *name);
This archive was generated by hypermail 2b29 : Wed Jul 19 2000 - 10:30:55 CDT