[w3m-dev 04266] Bug fix when tab browsing

[email protected] Wed, 30 May 2007 12:42:47 +0900 (JST)
Newsgroups gmane.comp.web.w3m.devel
Message-ID <[email protected]>

(4)
 *  reload 
 * (~~~)
-----------------------------------
  <[email protected]>

--- fm.h.orig	Thu May 24 13:36:20 2007
+++ fm.h	Wed May 30 11:49:27 2007
@@ -523,6 +523,13 @@
 } DownloadList;
 #define DOWNLOAD_LIST_TITLE "Download List Panel"
 
+#define COPY_BUFROOT(dstbuf, srcbuf) {\
+ (dstbuf)->rootX = (srcbuf)->rootX; \
+ (dstbuf)->rootY = (srcbuf)->rootY; \
+ (dstbuf)->COLS = (srcbuf)->COLS; \
+ (dstbuf)->LINES = (srcbuf)->LINES; \
+}
+
 #define COPY_BUFPOSITION(dstbuf, srcbuf) {\
  (dstbuf)->topLine = (srcbuf)->topLine; \
  (dstbuf)->currentLine = (srcbuf)->currentLine; \
--- main.c.orig	Wed May 30 09:31:28 2007
+++ main.c	Wed May 30 11:56:18 2007
@@ -4717,8 +4717,10 @@
 	buf->linkBuffer[LB_N_FRAME] = fbuf;
 	pushBuffer(buf);
 	Currentbuf = buf;
-	if (Currentbuf->firstLine)
+	if (Currentbuf->firstLine) {
+	    COPY_BUFROOT(Currentbuf, &sbuf);
 	    restorePosition(Currentbuf, &sbuf);
+	}
 	displayBuffer(Currentbuf, B_FORCE_REDRAW);
 	return;
     }
@@ -4783,8 +4785,10 @@
     }
     Currentbuf->search_header = sbuf.search_header;
     Currentbuf->form_submit = sbuf.form_submit;
-    if (Currentbuf->firstLine)
+    if (Currentbuf->firstLine) {
+	COPY_BUFROOT(Currentbuf, &sbuf);
 	restorePosition(Currentbuf, &sbuf);
+    }
     displayBuffer(Currentbuf, B_FORCE_REDRAW);
 }
 
@@ -5215,6 +5219,9 @@
 	    cursorXY(Currentbuf, cx, cy);
 	}
     }
+    else {
+	return;
+    }
     if (!(map && map->func))
 	map = &mouse_action.default_map[btn];
     if (map && map->func) {
@@ -6555,8 +6562,10 @@
 	return;
     }
     buf->bufferprop |= (BP_INTERNAL | BP_NO_URL);
-    if (replace)
+    if (replace) {
+	COPY_BUFROOT(buf, Currentbuf);
 	restorePosition(buf, Currentbuf);
+    }
     if (!replace && open_tab_dl_list) {
 	_newT();
 	new_tab = TRUE;