[w3m-dev 03372] tab browser
* display.c (displayBuffer): add ny rootY offset by tab tab line (cursorDown): offset rootY (arrangeCursor): offset rootY * etc.c (columnSkip): offset rootY (lineSkip): offset rootY (currentLineSkip): offset rootY * file.c (HTMLlineproc2body): ATTR_TARGET * fm.h (MapArea): add target (Buffer): add rootY (TabBuffer): added (Currentbuf): comment out (Firstbuf): comment out (CurrentTab): added (FirstTab): added (LastTab): added (open_tab_blank): added (close_tab_back): added (nTab): added (TabCols): added (N_TAB): added (Currentbuf): CurrentTab->currentBuffer (Firstbuf): CurrentTab->firstBuffer * funcname.tab (CLOSE_TAB): added (NEW_TAB): added (NEXT_TAB): added (PREV_TAB): added (TAB_GOTO): added (TAB_GOTO_RELATIVE): added (TAB_LEFT): added (TAB_LINK): added (TAB_MENU): added (TAB_RIGHT): added * html.c (ALST_AREA): add ATTR_TARGET * image.c (showImageProgress): offset rootY * main.c (_newT): added (followTab): added (moveTab): added (check_target): added (MAIN): init tab related values buf => tab (nscroll): offset rootY (pgFore): offset rootY (pgBack): offset rootY (ctrCsrV): offset rootY (_movD): offset rootY (_movU): offset rootY (_goLine): offset rootY (_mark): offset rootY (followA): check target (_followForm): offset rootY (drawAnchorCursor0): offset rootY (drawAnchorCursor): offset rootY (backBf): check close_tab_back (follow_map): rewrite for tab, check target (posTab): added (process_mouse): tab operation offset rootY (deleteFiles): for all buffers in all tabs (newTab): added (newT): added (numTab): added (deleteTab): added (closeT): added (nextT): added (prevT): added (followTab): added (tabA): added (tabURL0): added (tabURL): added (tabrURL): added (moveTab): added (tabR): added (tabL): added * map.c (follow_map_menu): return MapArea (newMapArea): add target args * menu.c (SelTabMenu): added (SelTabV): added (initSelTabMenu): added (smChTab): added (smDelTab): added (MainMenuItem): add Select Tab on New Tab (popupMenu): add initSelTabMenu() offset rootY (mainMn): offset rootY (selMn): offset rootY (initSelectMenu): offset rootY (tabMn): added * proto.h (newT): added (closeT): added (nextT): added (prevT): added (tabA): added (tabURL): added (tabrURL): added (tabR): added (tabL): added (newTab): added (deleteTab): added (follow_map_menu): return MapArea (newMapArea): add target arg (tabMn): added * rc.c (CMT_OPEN_TAB_BLANK): added (CMT_CLOSE_TAB_BACK): added (open_tab_blank): added (close_tab_back): added * doc/README.func (CLOSE_TAB): added (NEW_TAB): added (NEXT_TAB): added (PREV_TAB): added (TAB_GOTO): added (TAB_GOTO_RELATIVE): added (TAB_LEFT): added (TAB_LINK): added (TAB_MENU): added (TAB_RIGHT): added * doc-jp/README.func: ditto doc/README.func From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
@@ -1,3 +1,126 @@
|
|||||||
|
2002-11-06 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||||
|
|
||||||
|
* [w3m-dev 03372] tab browser
|
||||||
|
* display.c (displayBuffer): add ny
|
||||||
|
rootY offset by tab
|
||||||
|
tab line
|
||||||
|
(cursorDown): offset rootY
|
||||||
|
(arrangeCursor): offset rootY
|
||||||
|
* etc.c (columnSkip): offset rootY
|
||||||
|
(lineSkip): offset rootY
|
||||||
|
(currentLineSkip): offset rootY
|
||||||
|
* file.c (HTMLlineproc2body): ATTR_TARGET
|
||||||
|
* fm.h (MapArea): add target
|
||||||
|
(Buffer): add rootY
|
||||||
|
(TabBuffer): added
|
||||||
|
(Currentbuf): comment out
|
||||||
|
(Firstbuf): comment out
|
||||||
|
(CurrentTab): added
|
||||||
|
(FirstTab): added
|
||||||
|
(LastTab): added
|
||||||
|
(open_tab_blank): added
|
||||||
|
(close_tab_back): added
|
||||||
|
(nTab): added
|
||||||
|
(TabCols): added
|
||||||
|
(N_TAB): added
|
||||||
|
(Currentbuf): CurrentTab->currentBuffer
|
||||||
|
(Firstbuf): CurrentTab->firstBuffer
|
||||||
|
* funcname.tab (CLOSE_TAB): added
|
||||||
|
(NEW_TAB): added
|
||||||
|
(NEXT_TAB): added
|
||||||
|
(PREV_TAB): added
|
||||||
|
(TAB_GOTO): added
|
||||||
|
(TAB_GOTO_RELATIVE): added
|
||||||
|
(TAB_LEFT): added
|
||||||
|
(TAB_LINK): added
|
||||||
|
(TAB_MENU): added
|
||||||
|
(TAB_RIGHT): added
|
||||||
|
* html.c (ALST_AREA): add ATTR_TARGET
|
||||||
|
* image.c (showImageProgress): offset rootY
|
||||||
|
* main.c (_newT): added
|
||||||
|
(followTab): added
|
||||||
|
(moveTab): added
|
||||||
|
(check_target): added
|
||||||
|
(MAIN): init tab related values
|
||||||
|
buf => tab
|
||||||
|
(nscroll): offset rootY
|
||||||
|
(pgFore): offset rootY
|
||||||
|
(pgBack): offset rootY
|
||||||
|
(ctrCsrV): offset rootY
|
||||||
|
(_movD): offset rootY
|
||||||
|
(_movU): offset rootY
|
||||||
|
(_goLine): offset rootY
|
||||||
|
(_mark): offset rootY
|
||||||
|
(followA): check target
|
||||||
|
(_followForm): offset rootY
|
||||||
|
(drawAnchorCursor0): offset rootY
|
||||||
|
(drawAnchorCursor): offset rootY
|
||||||
|
(backBf): check close_tab_back
|
||||||
|
(follow_map): rewrite for tab, check target
|
||||||
|
(posTab): added
|
||||||
|
(process_mouse): tab operation
|
||||||
|
offset rootY
|
||||||
|
(deleteFiles): for all buffers in all tabs
|
||||||
|
(newTab): added
|
||||||
|
(newT): added
|
||||||
|
(numTab): added
|
||||||
|
(deleteTab): added
|
||||||
|
(closeT): added
|
||||||
|
(nextT): added
|
||||||
|
(prevT): added
|
||||||
|
(followTab): added
|
||||||
|
(tabA): added
|
||||||
|
(tabURL0): added
|
||||||
|
(tabURL): added
|
||||||
|
(tabrURL): added
|
||||||
|
(moveTab): added
|
||||||
|
(tabR): added
|
||||||
|
(tabL): added
|
||||||
|
* map.c (follow_map_menu): return MapArea
|
||||||
|
(newMapArea): add target args
|
||||||
|
* menu.c (SelTabMenu): added
|
||||||
|
(SelTabV): added
|
||||||
|
(initSelTabMenu): added
|
||||||
|
(smChTab): added
|
||||||
|
(smDelTab): added
|
||||||
|
(MainMenuItem): add Select Tab
|
||||||
|
on New Tab
|
||||||
|
(popupMenu): add initSelTabMenu()
|
||||||
|
offset rootY
|
||||||
|
(mainMn): offset rootY
|
||||||
|
(selMn): offset rootY
|
||||||
|
(initSelectMenu): offset rootY
|
||||||
|
(tabMn): added
|
||||||
|
* proto.h (newT): added
|
||||||
|
(closeT): added
|
||||||
|
(nextT): added
|
||||||
|
(prevT): added
|
||||||
|
(tabA): added
|
||||||
|
(tabURL): added
|
||||||
|
(tabrURL): added
|
||||||
|
(tabR): added
|
||||||
|
(tabL): added
|
||||||
|
(newTab): added
|
||||||
|
(deleteTab): added
|
||||||
|
(follow_map_menu): return MapArea
|
||||||
|
(newMapArea): add target arg
|
||||||
|
(tabMn): added
|
||||||
|
* rc.c (CMT_OPEN_TAB_BLANK): added
|
||||||
|
(CMT_CLOSE_TAB_BACK): added
|
||||||
|
(open_tab_blank): added
|
||||||
|
(close_tab_back): added
|
||||||
|
* doc/README.func (CLOSE_TAB): added
|
||||||
|
(NEW_TAB): added
|
||||||
|
(NEXT_TAB): added
|
||||||
|
(PREV_TAB): added
|
||||||
|
(TAB_GOTO): added
|
||||||
|
(TAB_GOTO_RELATIVE): added
|
||||||
|
(TAB_LEFT): added
|
||||||
|
(TAB_LINK): added
|
||||||
|
(TAB_MENU): added
|
||||||
|
(TAB_RIGHT): added
|
||||||
|
* doc-jp/README.func: ditto doc/README.func
|
||||||
|
|
||||||
2002-11-06 Fumitoshi UKAI <ukai@debian.or.jp>
|
2002-11-06 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||||
|
|
||||||
* doc-jp/README.pre_form: added [w3m-dev 03373]
|
* doc-jp/README.pre_form: added [w3m-dev 03373]
|
||||||
@@ -4159,4 +4282,4 @@ a * [w3m-dev 03276] compile error on EWS4800
|
|||||||
* release-0-2-1
|
* release-0-2-1
|
||||||
* import w3m-0.2.1
|
* import w3m-0.2.1
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.472 2002/11/05 16:37:36 ukai Exp $
|
$Id: ChangeLog,v 1.473 2002/11/05 17:10:04 ukai Exp $
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: display.c,v 1.25 2002/10/29 16:19:41 ukai Exp $ */
|
/* $Id: display.c,v 1.26 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
|
|
||||||
@@ -227,6 +227,7 @@ displayBuffer(Buffer *buf, int mode)
|
|||||||
{
|
{
|
||||||
Str msg;
|
Str msg;
|
||||||
Anchor *aa = NULL;
|
Anchor *aa = NULL;
|
||||||
|
int ny = 0;
|
||||||
|
|
||||||
if (buf->topLine == NULL && readBufferCache(buf) == 0) { /* clear_buffer */
|
if (buf->topLine == NULL && readBufferCache(buf) == 0) { /* clear_buffer */
|
||||||
mode = B_FORCE_REDRAW;
|
mode = B_FORCE_REDRAW;
|
||||||
@@ -253,6 +254,12 @@ displayBuffer(Buffer *buf, int mode)
|
|||||||
else
|
else
|
||||||
buf->rootX = 0;
|
buf->rootX = 0;
|
||||||
buf->COLS = COLS - buf->rootX;
|
buf->COLS = COLS - buf->rootX;
|
||||||
|
if (nTab > 1)
|
||||||
|
ny = (nTab - 1) / N_TAB + 2;
|
||||||
|
if (buf->rootY != ny) {
|
||||||
|
buf->rootY = ny;
|
||||||
|
arrangeCursor(buf);
|
||||||
|
}
|
||||||
if (mode == B_FORCE_REDRAW || mode == B_SCROLL ||
|
if (mode == B_FORCE_REDRAW || mode == B_SCROLL ||
|
||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
mode == B_REDRAW_IMAGE ||
|
mode == B_REDRAW_IMAGE ||
|
||||||
@@ -388,7 +395,7 @@ displayBuffer(Buffer *buf, int mode)
|
|||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
standout();
|
standout();
|
||||||
message(msg->ptr, buf->cursorX + buf->rootX, buf->cursorY);
|
message(msg->ptr, buf->cursorX + buf->rootX, buf->cursorY + buf->rootY);
|
||||||
standend();
|
standend();
|
||||||
term_title(buf->buffername);
|
term_title(buf->buffername);
|
||||||
refresh();
|
refresh();
|
||||||
@@ -428,8 +435,41 @@ redrawNLine(Buffer *buf, int n)
|
|||||||
#endif /* USE_BG_COLOR */
|
#endif /* USE_BG_COLOR */
|
||||||
}
|
}
|
||||||
#endif /* USE_COLOR */
|
#endif /* USE_COLOR */
|
||||||
for (i = 0, l = buf->topLine; i < LASTLINE; i++) {
|
if (nTab > 1) {
|
||||||
if (i >= LASTLINE - n || i < -n)
|
TabBuffer *t;
|
||||||
|
int nx = N_TAB, col = COLS - 2, x, l;
|
||||||
|
|
||||||
|
move(0, 0);
|
||||||
|
for (t = FirstTab, i = 0; t; t = t->nextTab, i++) {
|
||||||
|
x = col * (i % nx) / nx;
|
||||||
|
move(i / nx, x);
|
||||||
|
if (t == CurrentTab)
|
||||||
|
bold();
|
||||||
|
addch('[');
|
||||||
|
l = strlen(t->currentBuffer->buffername);
|
||||||
|
if (col / nx - 2 > l)
|
||||||
|
addnstr_sup(" ", (col / nx - 2 - l) / 2);
|
||||||
|
if (t == CurrentTab)
|
||||||
|
EFFECT_ACTIVE_START;
|
||||||
|
addstr(t->currentBuffer->buffername);
|
||||||
|
if (t == CurrentTab)
|
||||||
|
EFFECT_ACTIVE_END;
|
||||||
|
clrtoeol();
|
||||||
|
x = col * (i % nx + 1) / nx - 1;
|
||||||
|
move(i / nx, x);
|
||||||
|
addch(']');
|
||||||
|
if (t == CurrentTab)
|
||||||
|
boldend();
|
||||||
|
clrtoeol();
|
||||||
|
}
|
||||||
|
move(0, col);
|
||||||
|
addstr(" x");
|
||||||
|
move((nTab - 1) / nx + 1, 0);
|
||||||
|
for (i = 0; i < COLS; i++)
|
||||||
|
addch('~');
|
||||||
|
}
|
||||||
|
for (i = buf->rootY, l = buf->topLine; i < LASTLINE; i++) {
|
||||||
|
if (i >= LASTLINE - n || (i - buf->rootY) < -n)
|
||||||
l0 = redrawLine(buf, l, i);
|
l0 = redrawLine(buf, l, i);
|
||||||
else {
|
else {
|
||||||
l0 = (l) ? l->next : NULL;
|
l0 = (l) ? l->next : NULL;
|
||||||
@@ -444,7 +484,7 @@ redrawNLine(Buffer *buf, int n)
|
|||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
if (!(activeImage && displayImage && buf->img))
|
if (!(activeImage && displayImage && buf->img))
|
||||||
return;
|
return;
|
||||||
move(buf->cursorY, buf->cursorX);
|
move(buf->cursorY + buf->rootY, buf->cursorX + buf->rootX);
|
||||||
for (i = 0, l = buf->topLine; i < LASTLINE; i++) {
|
for (i = 0, l = buf->topLine; i < LASTLINE; i++) {
|
||||||
if (i >= LASTLINE - n || i < -n)
|
if (i >= LASTLINE - n || i < -n)
|
||||||
l0 = redrawLineImage(buf, l, i);
|
l0 = redrawLineImage(buf, l, i);
|
||||||
@@ -666,7 +706,7 @@ redrawLineImage(Buffer *buf, Line *l, int i)
|
|||||||
buf->need_reshape = TRUE;
|
buf->need_reshape = TRUE;
|
||||||
}
|
}
|
||||||
x = (int)((rcol - column + buf->rootX) * pixel_per_char);
|
x = (int)((rcol - column + buf->rootX) * pixel_per_char);
|
||||||
y = (int)(i * pixel_per_line);
|
y = (int)((i + buf->rootY) * pixel_per_line);
|
||||||
sx = (int)((rcol - COLPOS(l, a->start.pos)) * pixel_per_char);
|
sx = (int)((rcol - COLPOS(l, a->start.pos)) * pixel_per_char);
|
||||||
sy = (int)((l->linenumber - image->y) * pixel_per_line);
|
sy = (int)((l->linenumber - image->y) * pixel_per_line);
|
||||||
if (sx == 0 && x + image->xoffset >= 0)
|
if (sx == 0 && x + image->xoffset >= 0)
|
||||||
@@ -1009,7 +1049,7 @@ disp_message_nsec(char *s, int redraw_current, int sec, int purge, int mouse)
|
|||||||
}
|
}
|
||||||
if (Currentbuf != NULL)
|
if (Currentbuf != NULL)
|
||||||
message(s, Currentbuf->cursorX + Currentbuf->rootX,
|
message(s, Currentbuf->cursorX + Currentbuf->rootX,
|
||||||
Currentbuf->cursorY);
|
Currentbuf->cursorY + Currentbuf->rootY);
|
||||||
else
|
else
|
||||||
message(s, LASTLINE, 0);
|
message(s, LASTLINE, 0);
|
||||||
refresh();
|
refresh();
|
||||||
@@ -1065,7 +1105,7 @@ cursorDown(Buffer *buf, int n)
|
|||||||
{
|
{
|
||||||
if (buf->firstLine == NULL)
|
if (buf->firstLine == NULL)
|
||||||
return;
|
return;
|
||||||
if (buf->cursorY < LASTLINE - 1)
|
if (buf->cursorY + buf->rootY < LASTLINE - 1)
|
||||||
cursorUpDown(buf, 1);
|
cursorUpDown(buf, 1);
|
||||||
else {
|
else {
|
||||||
buf->topLine = lineSkip(buf, buf->topLine, n, FALSE);
|
buf->topLine = lineSkip(buf, buf->topLine, n, FALSE);
|
||||||
@@ -1180,9 +1220,12 @@ arrangeCursor(Buffer *buf)
|
|||||||
if (buf == NULL || buf->currentLine == NULL)
|
if (buf == NULL || buf->currentLine == NULL)
|
||||||
return;
|
return;
|
||||||
/* Arrange line */
|
/* Arrange line */
|
||||||
if (buf->currentLine->linenumber - buf->topLine->linenumber >= LASTLINE ||
|
if (buf->currentLine->linenumber - buf->topLine->linenumber >= LASTLINE -
|
||||||
buf->currentLine->linenumber < buf->topLine->linenumber) {
|
buf->rootY || buf->currentLine->linenumber < buf->topLine->linenumber) {
|
||||||
|
/*
|
||||||
buf->topLine = buf->currentLine;
|
buf->topLine = buf->currentLine;
|
||||||
|
*/
|
||||||
|
buf->topLine = lineSkip(buf, buf->currentLine, 0, FALSE);
|
||||||
}
|
}
|
||||||
/* Arrange column */
|
/* Arrange column */
|
||||||
if (buf->currentLine->len == 0)
|
if (buf->currentLine->len == 0)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ BEGIN ʸ
|
|||||||
BOOKMARK ブックマークを読み込みます
|
BOOKMARK ブックマークを読み込みます
|
||||||
CENTER_H カーソルのある位置を行の中央に移動します
|
CENTER_H カーソルのある位置を行の中央に移動します
|
||||||
CENTER_V カーソルのある行を画面の中央に移動します
|
CENTER_V カーソルのある行を画面の中央に移動します
|
||||||
|
CLOSE_TAB 現在のタブを閉じます
|
||||||
COMMAND w3mのコマンドを実行します
|
COMMAND w3mのコマンドを実行します
|
||||||
COOKIE クッキー一覧を表示します
|
COOKIE クッキー一覧を表示します
|
||||||
DEFINE_KEY キー入力とコマンドの対応を定義します
|
DEFINE_KEY キー入力とコマンドの対応を定義します
|
||||||
@@ -57,6 +58,7 @@ MOVE_RIGHT1
|
|||||||
MOVE_UP カーソルを上に移動します(改ページ時には半ページスクロール)
|
MOVE_UP カーソルを上に移動します(改ページ時には半ページスクロール)
|
||||||
MOVE_UP1 カーソルを上に移動します(改ページ時には1行スクロール)
|
MOVE_UP1 カーソルを上に移動します(改ページ時には1行スクロール)
|
||||||
MSGS エラーメッセージの一覧の表示
|
MSGS エラーメッセージの一覧の表示
|
||||||
|
NEW_TAB 新しいタブを開きます
|
||||||
NEXT_DOWN カーソルの下側にあるリンクに移動します
|
NEXT_DOWN カーソルの下側にあるリンクに移動します
|
||||||
NEXT_LEFT カーソルの左側にあるリンクに移動します
|
NEXT_LEFT カーソルの左側にあるリンクに移動します
|
||||||
NEXT_LEFT_UP カーソルの左側(無ければ前の行以前)にあるリンクに移動します
|
NEXT_LEFT_UP カーソルの左側(無ければ前の行以前)にあるリンクに移動します
|
||||||
@@ -65,6 +67,7 @@ NEXT_MARK
|
|||||||
NEXT_PAGE 次のページを表示します
|
NEXT_PAGE 次のページを表示します
|
||||||
NEXT_RIGHT カーソルの右側にあるリンクに移動します
|
NEXT_RIGHT カーソルの右側にあるリンクに移動します
|
||||||
NEXT_RIGHT_DOWN カーソルの右側(無ければ次行以降)にあるリンクに移動します
|
NEXT_RIGHT_DOWN カーソルの右側(無ければ次行以降)にあるリンクに移動します
|
||||||
|
NEXT_TAB 次のタブに移動します
|
||||||
NEXT_UP カーソルの上側にあるリンクに移動します
|
NEXT_UP カーソルの上側にあるリンクに移動します
|
||||||
NEXT_WORD 次の単語に移動します
|
NEXT_WORD 次の単語に移動します
|
||||||
NOTHING 何もしません
|
NOTHING 何もしません
|
||||||
@@ -78,6 +81,7 @@ PIPE_SHELL
|
|||||||
PREV_LINK 前のリンクに移動します
|
PREV_LINK 前のリンクに移動します
|
||||||
PREV_MARK 一つ前のマークに移動します
|
PREV_MARK 一つ前のマークに移動します
|
||||||
PREV_PAGE 前のページを表示します
|
PREV_PAGE 前のページを表示します
|
||||||
|
PREV_TAB 前のタブに移動します
|
||||||
PREV_WORD 前の単語に移動します
|
PREV_WORD 前の単語に移動します
|
||||||
PRINT バッファの表示内容をファイルに保存します
|
PRINT バッファの表示内容をファイルに保存します
|
||||||
QUIT w3mを終了します
|
QUIT w3mを終了します
|
||||||
@@ -106,6 +110,12 @@ SOURCE HTML
|
|||||||
STOP_IMAGE 画像の読込/表示を停止します
|
STOP_IMAGE 画像の読込/表示を停止します
|
||||||
SUBMIT フォームにサブミットします
|
SUBMIT フォームにサブミットします
|
||||||
SUSPEND サスペンド
|
SUSPEND サスペンド
|
||||||
|
TAB_GOTO URLを指定して新しいタブで開きます
|
||||||
|
TAB_GOTO_RELATIVE 相対URLを指定して新しいタブで開きます
|
||||||
|
TAB_LEFT 現在のタブを左に移動します
|
||||||
|
TAB_LINK リンクが指す先の文書を新しいタブで開きます
|
||||||
|
TAB_MENU タブ選択メニューを立ち上げます
|
||||||
|
TAB_RIGHT 現在のタブを右に移動します
|
||||||
UP 画面を1行上にスクロールします
|
UP 画面を1行上にスクロールします
|
||||||
VERSION w3m のバージョンを表示します
|
VERSION w3m のバージョンを表示します
|
||||||
VIEW HTMLのソースを表示します
|
VIEW HTMLのソースを表示します
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ BEGIN Go to the first line
|
|||||||
BOOKMARK Read bookmark
|
BOOKMARK Read bookmark
|
||||||
CENTER_H Move to the center line
|
CENTER_H Move to the center line
|
||||||
CENTER_V Move to the center column
|
CENTER_V Move to the center column
|
||||||
|
CLOSE_TAB Close current tab
|
||||||
COMMAND Execute w3m command(s)
|
COMMAND Execute w3m command(s)
|
||||||
COOKIE View cookie list
|
COOKIE View cookie list
|
||||||
DEFINE_KEY Define a binding between a key stroke and a user command
|
DEFINE_KEY Define a binding between a key stroke and a user command
|
||||||
@@ -57,6 +58,7 @@ MOVE_RIGHT1 Move cursor right (1 columns shift at the right edge)
|
|||||||
MOVE_UP Move cursor up (a half screen scroll at the top of screen)
|
MOVE_UP Move cursor up (a half screen scroll at the top of screen)
|
||||||
MOVE_UP1 Move cursor up (1 line scrol at the top of screen)
|
MOVE_UP1 Move cursor up (1 line scrol at the top of screen)
|
||||||
MSGS Display error messages
|
MSGS Display error messages
|
||||||
|
NEW_TAB Open new tab
|
||||||
NEXT_DOWN Move to next downward link
|
NEXT_DOWN Move to next downward link
|
||||||
NEXT_LEFT Move to next left link
|
NEXT_LEFT Move to next left link
|
||||||
NEXT_LEFT_UP Move to next left (or upward) link
|
NEXT_LEFT_UP Move to next left (or upward) link
|
||||||
@@ -65,6 +67,7 @@ NEXT_MARK Move to next word
|
|||||||
NEXT_PAGE Move to next page
|
NEXT_PAGE Move to next page
|
||||||
NEXT_RIGHT Move to next right link
|
NEXT_RIGHT Move to next right link
|
||||||
NEXT_RIGHT_DOWN Move to next right (or downward) link
|
NEXT_RIGHT_DOWN Move to next right (or downward) link
|
||||||
|
NEXT_TAB Move to next tab
|
||||||
NEXT_UP Move to next upward link
|
NEXT_UP Move to next upward link
|
||||||
NEXT_WORD Move to next word
|
NEXT_WORD Move to next word
|
||||||
NOTHING Do nothing
|
NOTHING Do nothing
|
||||||
@@ -78,6 +81,7 @@ PIPE_SHELL Execute shell command and browse
|
|||||||
PREV_LINK Move to previous link
|
PREV_LINK Move to previous link
|
||||||
PREV_MARK Move to previous mark
|
PREV_MARK Move to previous mark
|
||||||
PREV_PAGE Move to previous page
|
PREV_PAGE Move to previous page
|
||||||
|
PREV_TAB Move to previous tab
|
||||||
PREV_WORD Move to previous word
|
PREV_WORD Move to previous word
|
||||||
PRINT Save buffer to file
|
PRINT Save buffer to file
|
||||||
QUIT Quit w3m
|
QUIT Quit w3m
|
||||||
@@ -106,6 +110,12 @@ SOURCE View HTML source
|
|||||||
STOP_IMAGE Stop loading and drawing of images
|
STOP_IMAGE Stop loading and drawing of images
|
||||||
SUBMIT Submit form
|
SUBMIT Submit form
|
||||||
SUSPEND Stop loading document
|
SUSPEND Stop loading document
|
||||||
|
TAB_GOTO Open URL on new tab
|
||||||
|
TAB_GOTO_RELATIVE Open relative URL on new tab
|
||||||
|
TAB_LEFT Move current tab left
|
||||||
|
TAB_LINK Open current link on new tab
|
||||||
|
TAB_MENU Popup tab selection menu
|
||||||
|
TAB_RIGHT Move current tab right
|
||||||
UP Scroll up one line
|
UP Scroll up one line
|
||||||
VERSION Display version of w3m
|
VERSION Display version of w3m
|
||||||
VIEW View HTML source
|
VIEW View HTML source
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: etc.c,v 1.30 2002/11/05 16:03:13 ukai Exp $ */
|
/* $Id: etc.c,v 1.31 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include "myctype.h"
|
#include "myctype.h"
|
||||||
@@ -42,7 +42,7 @@ columnSkip(Buffer *buf, int offset)
|
|||||||
{
|
{
|
||||||
int i, maxColumn;
|
int i, maxColumn;
|
||||||
int column = buf->currentColumn + offset;
|
int column = buf->currentColumn + offset;
|
||||||
int nlines = LASTLINE + 1;
|
int nlines = LASTLINE + 1 - buf->rootY;
|
||||||
Line *l;
|
Line *l;
|
||||||
|
|
||||||
maxColumn = 0;
|
maxColumn = 0;
|
||||||
@@ -91,8 +91,8 @@ lineSkip(Buffer *buf, Line *line, int offset, int last)
|
|||||||
#ifdef NEXTPAGE_TOPLINE
|
#ifdef NEXTPAGE_TOPLINE
|
||||||
if (!nextpage_topline)
|
if (!nextpage_topline)
|
||||||
#endif
|
#endif
|
||||||
for (i = (LASTLINE - 1) - (buf->lastLine->linenumber - l->linenumber);
|
for (i = (LASTLINE - 1 - buf->rootY) - (buf->lastLine->linenumber
|
||||||
i > 0 && l->prev != NULL; i--, l = l->prev) ;
|
- l->linenumber); i > 0 && l->prev != NULL; i--, l = l->prev) ;
|
||||||
return l;
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ currentLineSkip(Buffer *buf, Line *line, int offset, int last)
|
|||||||
Line *l = line;
|
Line *l = line;
|
||||||
|
|
||||||
if (buf->pagerSource && !(buf->bufferprop & BP_CLOSE)) {
|
if (buf->pagerSource && !(buf->bufferprop & BP_CLOSE)) {
|
||||||
n = line->linenumber + offset + LASTLINE;
|
n = line->linenumber + offset + LASTLINE - buf->rootY;
|
||||||
if (buf->lastLine->linenumber < n)
|
if (buf->lastLine->linenumber < n)
|
||||||
getNextPage(buf, n - buf->lastLine->linenumber);
|
getNextPage(buf, n - buf->lastLine->linenumber);
|
||||||
while ((last || (buf->lastLine->linenumber < n)) &&
|
while ((last || (buf->lastLine->linenumber < n)) &&
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: file.c,v 1.110 2002/11/05 15:56:13 ukai Exp $ */
|
/* $Id: file.c,v 1.111 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include "myctype.h"
|
#include "myctype.h"
|
||||||
@@ -4730,7 +4730,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
|
|||||||
{
|
{
|
||||||
Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL;
|
Anchor *a_href = NULL, *a_img = NULL, *a_form = NULL;
|
||||||
char outc[LINELEN];
|
char outc[LINELEN];
|
||||||
char *p, *q, *r, *s, *str;
|
char *p, *q, *r, *s, *t, *str;
|
||||||
Lineprop outp[LINELEN], mode, effect;
|
Lineprop outp[LINELEN], mode, effect;
|
||||||
int pos;
|
int pos;
|
||||||
int nlines;
|
int nlines;
|
||||||
@@ -5081,6 +5081,8 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
|
|||||||
MapArea *a;
|
MapArea *a;
|
||||||
p = remove_space(p);
|
p = remove_space(p);
|
||||||
p = url_quote_conv(p, buf->document_code);
|
p = url_quote_conv(p, buf->document_code);
|
||||||
|
t = NULL;
|
||||||
|
parsedtag_get_value(tag, ATTR_TARGET, &t);
|
||||||
q = "";
|
q = "";
|
||||||
parsedtag_get_value(tag, ATTR_ALT, &q);
|
parsedtag_get_value(tag, ATTR_ALT, &q);
|
||||||
r = NULL;
|
r = NULL;
|
||||||
@@ -5089,7 +5091,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
|
|||||||
parsedtag_get_value(tag, ATTR_SHAPE, &r);
|
parsedtag_get_value(tag, ATTR_SHAPE, &r);
|
||||||
parsedtag_get_value(tag, ATTR_COORDS, &s);
|
parsedtag_get_value(tag, ATTR_COORDS, &s);
|
||||||
#endif
|
#endif
|
||||||
a = newMapArea(p, q, r, s);
|
a = newMapArea(p, t, q, r, s);
|
||||||
pushValue(buf->maplist->area, (void *)a);
|
pushValue(buf->maplist->area, (void *)a);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: fm.h,v 1.68 2002/11/05 15:56:13 ukai Exp $ */
|
/* $Id: fm.h,v 1.69 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* w3m: WWW wo Miru utility
|
* w3m: WWW wo Miru utility
|
||||||
*
|
*
|
||||||
@@ -285,6 +285,7 @@ typedef unsigned char Linecolor;
|
|||||||
|
|
||||||
typedef struct _MapArea {
|
typedef struct _MapArea {
|
||||||
char *url;
|
char *url;
|
||||||
|
char *target;
|
||||||
char *alt;
|
char *alt;
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
@@ -401,6 +402,7 @@ typedef struct _Buffer {
|
|||||||
short pos;
|
short pos;
|
||||||
short visualpos;
|
short visualpos;
|
||||||
short rootX;
|
short rootX;
|
||||||
|
short rootY;
|
||||||
short COLS;
|
short COLS;
|
||||||
InputStream pagerSource;
|
InputStream pagerSource;
|
||||||
AnchorList *href;
|
AnchorList *href;
|
||||||
@@ -441,6 +443,12 @@ typedef struct _Buffer {
|
|||||||
Anchor *submit;
|
Anchor *submit;
|
||||||
} Buffer;
|
} Buffer;
|
||||||
|
|
||||||
|
typedef struct _TabBuffer {
|
||||||
|
struct _TabBuffer *nextTab;
|
||||||
|
struct _TabBuffer *prevTab;
|
||||||
|
Buffer *currentBuffer;
|
||||||
|
Buffer *firstBuffer;
|
||||||
|
} TabBuffer;
|
||||||
|
|
||||||
#define COPY_BUFPOSITION(dstbuf, srcbuf) {\
|
#define COPY_BUFPOSITION(dstbuf, srcbuf) {\
|
||||||
(dstbuf)->topLine = (srcbuf)->topLine; \
|
(dstbuf)->topLine = (srcbuf)->topLine; \
|
||||||
@@ -466,7 +474,7 @@ typedef struct _Buffer {
|
|||||||
|
|
||||||
#define FONTSTAT_SIZE 4
|
#define FONTSTAT_SIZE 4
|
||||||
|
|
||||||
#define INIT_BUFFER_WIDTH (COLS-1)
|
#define INIT_BUFFER_WIDTH (COLS - 1)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int pos;
|
int pos;
|
||||||
@@ -763,8 +771,21 @@ global char *cgi_bin init(NULL);
|
|||||||
global char *index_file init(NULL);
|
global char *index_file init(NULL);
|
||||||
|
|
||||||
global char *CurrentDir;
|
global char *CurrentDir;
|
||||||
|
/*
|
||||||
global Buffer *Currentbuf;
|
global Buffer *Currentbuf;
|
||||||
global Buffer *Firstbuf;
|
global Buffer *Firstbuf;
|
||||||
|
*/
|
||||||
|
global TabBuffer *CurrentTab;
|
||||||
|
global TabBuffer *FirstTab;
|
||||||
|
global TabBuffer *LastTab;
|
||||||
|
global int open_tab_blank init(FALSE);
|
||||||
|
global int close_tab_back init(FALSE);
|
||||||
|
global int nTab;
|
||||||
|
global int TabCols init(10);
|
||||||
|
#define N_TAB ((COLS - 2 > TabCols * nTab) ? nTab \
|
||||||
|
: (nTab - 1) / ((nTab * TabCols - 1) / (COLS - 2) + 1) + 1)
|
||||||
|
#define Currentbuf (CurrentTab->currentBuffer)
|
||||||
|
#define Firstbuf (CurrentTab->firstBuffer)
|
||||||
global int CurrentKey;
|
global int CurrentKey;
|
||||||
global char *CurrentKeyData;
|
global char *CurrentKeyData;
|
||||||
global char *CurrentCmdData;
|
global char *CurrentCmdData;
|
||||||
|
|||||||
+11
-1
@@ -1,4 +1,4 @@
|
|||||||
# $Id: funcname.tab,v 1.11 2002/09/05 15:43:21 ukai Exp $
|
# $Id: funcname.tab,v 1.12 2002/11/05 17:10:05 ukai Exp $
|
||||||
# macro name function name
|
# macro name function name
|
||||||
#----------------------------
|
#----------------------------
|
||||||
@@@ nulcmd
|
@@@ nulcmd
|
||||||
@@ -10,6 +10,7 @@ BEGIN goLineF
|
|||||||
BOOKMARK ldBmark
|
BOOKMARK ldBmark
|
||||||
CENTER_H ctrCsrH
|
CENTER_H ctrCsrH
|
||||||
CENTER_V ctrCsrV
|
CENTER_V ctrCsrV
|
||||||
|
CLOSE_TAB closeT
|
||||||
COMMAND execCmd
|
COMMAND execCmd
|
||||||
COOKIE cooLst
|
COOKIE cooLst
|
||||||
DEFINE_KEY defKey
|
DEFINE_KEY defKey
|
||||||
@@ -63,6 +64,7 @@ MOVE_RIGHT1 movR1
|
|||||||
MOVE_UP movU
|
MOVE_UP movU
|
||||||
MOVE_UP1 movU1
|
MOVE_UP1 movU1
|
||||||
MSGS msgs
|
MSGS msgs
|
||||||
|
NEW_TAB newT
|
||||||
NEXT_DOWN nextD
|
NEXT_DOWN nextD
|
||||||
NEXT_LEFT nextL
|
NEXT_LEFT nextL
|
||||||
NEXT_LEFT_UP nextLU
|
NEXT_LEFT_UP nextLU
|
||||||
@@ -71,6 +73,7 @@ NEXT_MARK nextMk
|
|||||||
NEXT_PAGE pgFore
|
NEXT_PAGE pgFore
|
||||||
NEXT_RIGHT nextR
|
NEXT_RIGHT nextR
|
||||||
NEXT_RIGHT_DOWN nextRD
|
NEXT_RIGHT_DOWN nextRD
|
||||||
|
NEXT_TAB nextT
|
||||||
NEXT_UP nextU
|
NEXT_UP nextU
|
||||||
NEXT_WORD movRW
|
NEXT_WORD movRW
|
||||||
NOTHING nulcmd
|
NOTHING nulcmd
|
||||||
@@ -85,6 +88,7 @@ PIPE_SHELL pipesh
|
|||||||
PREV_LINK prevA
|
PREV_LINK prevA
|
||||||
PREV_MARK prevMk
|
PREV_MARK prevMk
|
||||||
PREV_PAGE pgBack
|
PREV_PAGE pgBack
|
||||||
|
PREV_TAB prevT
|
||||||
PREV_WORD movLW
|
PREV_WORD movLW
|
||||||
PRINT svBuf
|
PRINT svBuf
|
||||||
QUIT qquitfm
|
QUIT qquitfm
|
||||||
@@ -114,6 +118,12 @@ SOURCE vwSrc
|
|||||||
STOP_IMAGE stopI
|
STOP_IMAGE stopI
|
||||||
SUBMIT submitForm
|
SUBMIT submitForm
|
||||||
SUSPEND susp
|
SUSPEND susp
|
||||||
|
TAB_GOTO tabURL
|
||||||
|
TAB_GOTO_RELATIVE tabrURL
|
||||||
|
TAB_LEFT tabL
|
||||||
|
TAB_LINK tabA
|
||||||
|
TAB_MENU tabMn
|
||||||
|
TAB_RIGHT tabR
|
||||||
UP lup1
|
UP lup1
|
||||||
VERSION dispVer
|
VERSION dispVer
|
||||||
VIEW vwSrc
|
VIEW vwSrc
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: html.c,v 1.14 2002/10/16 18:11:15 ukai Exp $ */
|
/* $Id: html.c,v 1.15 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
#include "html.h"
|
#include "html.h"
|
||||||
|
|
||||||
/* Define HTML Tag Infomation Table */
|
/* Define HTML Tag Infomation Table */
|
||||||
@@ -64,8 +64,8 @@ unsigned char ALST_ISINDEX[] = { ATTR_ACTION, ATTR_PROMPT, ATTR_CORE };
|
|||||||
unsigned char ALST_MAP[] = { ATTR_NAME, ATTR_CORE };
|
unsigned char ALST_MAP[] = { ATTR_NAME, ATTR_CORE };
|
||||||
#define MAXA_MAP MAXA_CORE + 1
|
#define MAXA_MAP MAXA_CORE + 1
|
||||||
unsigned char ALST_AREA[] =
|
unsigned char ALST_AREA[] =
|
||||||
{ ATTR_HREF, ATTR_ALT, ATTR_SHAPE, ATTR_COORDS, ATTR_CORE };
|
{ ATTR_HREF, ATTR_TARGET, ATTR_ALT, ATTR_SHAPE, ATTR_COORDS, ATTR_CORE };
|
||||||
#define MAXA_AREA MAXA_CORE + 4
|
#define MAXA_AREA MAXA_CORE + 5
|
||||||
unsigned char ALST_BASE[] = { ATTR_HREF, ATTR_TARGET, ATTR_CORE };
|
unsigned char ALST_BASE[] = { ATTR_HREF, ATTR_TARGET, ATTR_CORE };
|
||||||
#define MAXA_BASE MAXA_CORE + 2
|
#define MAXA_BASE MAXA_CORE + 2
|
||||||
unsigned char ALST_BODY[] = { ATTR_BACKGROUND, ATTR_CORE };
|
unsigned char ALST_BODY[] = { ATTR_BACKGROUND, ATTR_CORE };
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: image.c,v 1.11 2002/07/29 15:25:37 ukai Exp $ */
|
/* $Id: image.c,v 1.12 2002/11/05 17:10:05 ukai Exp $ */
|
||||||
|
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -358,7 +358,7 @@ showImageProgress(Buffer *buf)
|
|||||||
}
|
}
|
||||||
if (n) {
|
if (n) {
|
||||||
message(Sprintf("%d/%d images loaded", l, n)->ptr,
|
message(Sprintf("%d/%d images loaded", l, n)->ptr,
|
||||||
buf->cursorX + buf->rootX, buf->cursorY);
|
buf->cursorX + buf->rootX, buf->cursorY + buf->rootY);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: main.c,v 1.117 2002/11/05 15:56:13 ukai Exp $ */
|
/* $Id: main.c,v 1.118 2002/11/05 17:10:06 ukai Exp $ */
|
||||||
#define MAINPROGRAM
|
#define MAINPROGRAM
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@@ -90,6 +90,10 @@ void set_buffer_environ(Buffer *);
|
|||||||
|
|
||||||
static void _followForm(int);
|
static void _followForm(int);
|
||||||
static void _goLine(char *);
|
static void _goLine(char *);
|
||||||
|
static void _newT(void);
|
||||||
|
static void followTab(TabBuffer *tab);
|
||||||
|
static void moveTab(TabBuffer *t, TabBuffer *t2, int right);
|
||||||
|
static int check_target = TRUE;
|
||||||
#define PREC_NUM (prec_num ? prec_num : 1)
|
#define PREC_NUM (prec_num ? prec_num : 1)
|
||||||
#define PREC_LIMIT 10000
|
#define PREC_LIMIT 10000
|
||||||
static int searchKeyNum(void);
|
static int searchKeyNum(void);
|
||||||
@@ -707,8 +711,10 @@ MAIN(int argc, char **argv, char **envp)
|
|||||||
sock_init();
|
sock_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Firstbuf = NULL;
|
FirstTab = NULL;
|
||||||
Currentbuf = NULL;
|
LastTab = NULL;
|
||||||
|
nTab = 0;
|
||||||
|
CurrentTab = NULL;
|
||||||
CurrentKey = -1;
|
CurrentKey = -1;
|
||||||
if (BookmarkFile == NULL)
|
if (BookmarkFile == NULL)
|
||||||
BookmarkFile = rcFile(BOOKMARK);
|
BookmarkFile = rcFile(BOOKMARK);
|
||||||
@@ -879,8 +885,11 @@ MAIN(int argc, char **argv, char **envp)
|
|||||||
else if (newbuf == NO_BUFFER)
|
else if (newbuf == NO_BUFFER)
|
||||||
continue;
|
continue;
|
||||||
newbuf->search_header = search_header;
|
newbuf->search_header = search_header;
|
||||||
if (Currentbuf == NULL)
|
if (CurrentTab == NULL) {
|
||||||
|
FirstTab = LastTab = CurrentTab = newTab();
|
||||||
|
nTab = 1;
|
||||||
Firstbuf = Currentbuf = newbuf;
|
Firstbuf = Currentbuf = newbuf;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
Currentbuf->nextBuffer = newbuf;
|
Currentbuf->nextBuffer = newbuf;
|
||||||
Currentbuf = newbuf;
|
Currentbuf = newbuf;
|
||||||
@@ -914,7 +923,7 @@ MAIN(int argc, char **argv, char **envp)
|
|||||||
w3m_exit(0);
|
w3m_exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Firstbuf || Firstbuf == NO_BUFFER) {
|
if (!FirstTab || !Firstbuf || Firstbuf == NO_BUFFER) {
|
||||||
if (newbuf == NO_BUFFER) {
|
if (newbuf == NO_BUFFER) {
|
||||||
if (fmInitialized)
|
if (fmInitialized)
|
||||||
inputChar("Hit any key to quit w3m:");
|
inputChar("Hit any key to quit w3m:");
|
||||||
@@ -1313,7 +1322,8 @@ nscroll(int n, int mode)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
tlnum = Currentbuf->topLine->linenumber;
|
tlnum = Currentbuf->topLine->linenumber;
|
||||||
llnum = Currentbuf->topLine->linenumber + LASTLINE - 1;
|
llnum = Currentbuf->topLine->linenumber + LASTLINE - Currentbuf->rootY
|
||||||
|
- 1;
|
||||||
#ifdef NEXTPAGE_TOPLINE
|
#ifdef NEXTPAGE_TOPLINE
|
||||||
if (nextpage_topline)
|
if (nextpage_topline)
|
||||||
diff_n = 0;
|
diff_n = 0;
|
||||||
@@ -1336,10 +1346,11 @@ pgFore(void)
|
|||||||
{
|
{
|
||||||
#ifdef VI_PREC_NUM
|
#ifdef VI_PREC_NUM
|
||||||
if (vi_prec_num)
|
if (vi_prec_num)
|
||||||
nscroll(searchKeyNum() * (LASTLINE - 1), B_NORMAL);
|
nscroll(searchKeyNum() * (LASTLINE - Currentbuf->rootY - 1), B_NORMAL);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
nscroll(prec_num ? searchKeyNum() : searchKeyNum() * (LASTLINE - 1),
|
nscroll(prec_num ? searchKeyNum() : searchKeyNum()
|
||||||
|
* (LASTLINE - Currentbuf->rootY - 1),
|
||||||
prec_num ? B_SCROLL : B_NORMAL);
|
prec_num ? B_SCROLL : B_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1349,10 +1360,11 @@ pgBack(void)
|
|||||||
{
|
{
|
||||||
#ifdef VI_PREC_NUM
|
#ifdef VI_PREC_NUM
|
||||||
if (vi_prec_num)
|
if (vi_prec_num)
|
||||||
nscroll(-searchKeyNum() * (LASTLINE - 1), B_NORMAL);
|
nscroll(-searchKeyNum() * (LASTLINE - Currentbuf->rootY - 1), B_NORMAL);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
nscroll(-(prec_num ? searchKeyNum() : searchKeyNum() * (LASTLINE - 1)),
|
nscroll(-(prec_num ? searchKeyNum() : searchKeyNum()
|
||||||
|
* (LASTLINE - Currentbuf->rootY - 1)),
|
||||||
prec_num ? B_SCROLL : B_NORMAL);
|
prec_num ? B_SCROLL : B_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1377,7 +1389,7 @@ ctrCsrV(void)
|
|||||||
int offsety;
|
int offsety;
|
||||||
if (Currentbuf->firstLine == NULL)
|
if (Currentbuf->firstLine == NULL)
|
||||||
return;
|
return;
|
||||||
offsety = LASTLINE / 2 - Currentbuf->cursorY;
|
offsety = (LASTLINE - Currentbuf->rootY) / 2 - Currentbuf->cursorY;
|
||||||
if (offsety != 0) {
|
if (offsety != 0) {
|
||||||
#if 0
|
#if 0
|
||||||
Currentbuf->currentLine = lineSkip(Currentbuf,
|
Currentbuf->currentLine = lineSkip(Currentbuf,
|
||||||
@@ -1971,7 +1983,7 @@ _movD(int n)
|
|||||||
void
|
void
|
||||||
movD(void)
|
movD(void)
|
||||||
{
|
{
|
||||||
_movD((LASTLINE + 1) / 2);
|
_movD((LASTLINE - Currentbuf->rootY + 1) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -1995,7 +2007,7 @@ _movU(int n)
|
|||||||
void
|
void
|
||||||
movU(void)
|
movU(void)
|
||||||
{
|
{
|
||||||
_movU((LASTLINE + 1) / 2);
|
_movU((LASTLINE - Currentbuf->rootY + 1) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2285,8 +2297,8 @@ _goLine(char *l)
|
|||||||
}
|
}
|
||||||
else if (*l == '$') {
|
else if (*l == '$') {
|
||||||
Currentbuf->topLine =
|
Currentbuf->topLine =
|
||||||
lineSkip(Currentbuf, Currentbuf->lastLine, -(LASTLINE + 1) / 2,
|
lineSkip(Currentbuf, Currentbuf->lastLine,
|
||||||
TRUE);
|
-(LASTLINE - Currentbuf->rootY + 1) / 2, TRUE);
|
||||||
Currentbuf->currentLine = Currentbuf->lastLine;
|
Currentbuf->currentLine = Currentbuf->lastLine;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2441,7 +2453,8 @@ _mark(void)
|
|||||||
return;
|
return;
|
||||||
l = Currentbuf->currentLine;
|
l = Currentbuf->currentLine;
|
||||||
l->propBuf[Currentbuf->pos] ^= PE_MARK;
|
l->propBuf[Currentbuf->pos] ^= PE_MARK;
|
||||||
redrawLine(Currentbuf, l, l->linenumber - Currentbuf->topLine->linenumber);
|
redrawLine(Currentbuf, l, l->linenumber - Currentbuf->topLine->linenumber
|
||||||
|
+ Currentbuf->rootY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go to next mark */
|
/* Go to next mark */
|
||||||
@@ -2766,6 +2779,21 @@ followA(void)
|
|||||||
if (map)
|
if (map)
|
||||||
url = Sprintf("%s?%d,%d", a->url, x, y)->ptr;
|
url = Sprintf("%s?%d,%d", a->url, x, y)->ptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (check_target && open_tab_blank && a->target &&
|
||||||
|
(!strcasecmp(a->target, "_new") || !strcasecmp(a->target, "_blank"))) {
|
||||||
|
Buffer *buf;
|
||||||
|
|
||||||
|
_newT();
|
||||||
|
buf = Currentbuf;
|
||||||
|
loadLink(url, a->target, a->referer, NULL);
|
||||||
|
if (buf != Currentbuf)
|
||||||
|
delBuffer(buf);
|
||||||
|
else
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
loadLink(url, a->target, a->referer, NULL);
|
loadLink(url, a->target, a->referer, NULL);
|
||||||
displayBuffer(Currentbuf, B_NORMAL);
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
}
|
}
|
||||||
@@ -3123,7 +3151,7 @@ _followForm(int submit)
|
|||||||
if (!formChooseOptionByMenu(fi,
|
if (!formChooseOptionByMenu(fi,
|
||||||
Currentbuf->cursorX - Currentbuf->pos +
|
Currentbuf->cursorX - Currentbuf->pos +
|
||||||
a->start.pos + Currentbuf->rootX,
|
a->start.pos + Currentbuf->rootX,
|
||||||
Currentbuf->cursorY))
|
Currentbuf->cursorY + Currentbuf->rootY))
|
||||||
break;
|
break;
|
||||||
formUpdateBuffer(a, Currentbuf, fi);
|
formUpdateBuffer(a, Currentbuf, fi);
|
||||||
if (fi->parent->nitems == 1)
|
if (fi->parent->nitems == 1)
|
||||||
@@ -3241,12 +3269,12 @@ drawAnchorCursor0(Buffer *buf, int hseq, int prevhseq, int tline, int eline,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (active)
|
if (active)
|
||||||
redrawLineRegion(buf, l, l->linenumber - tline,
|
redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY,
|
||||||
an->start.pos, an->end.pos);
|
an->start.pos, an->end.pos);
|
||||||
}
|
}
|
||||||
else if (prevhseq >= 0 && an->hseq == prevhseq) {
|
else if (prevhseq >= 0 && an->hseq == prevhseq) {
|
||||||
if (active)
|
if (active)
|
||||||
redrawLineRegion(buf, l, l->linenumber - tline,
|
redrawLineRegion(buf, l, l->linenumber - tline + buf->rootY,
|
||||||
an->start.pos, an->end.pos);
|
an->start.pos, an->end.pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3271,7 +3299,7 @@ drawAnchorCursor(Buffer *buf)
|
|||||||
else
|
else
|
||||||
hseq = -1;
|
hseq = -1;
|
||||||
tline = buf->topLine->linenumber;
|
tline = buf->topLine->linenumber;
|
||||||
eline = tline + LASTLINE;
|
eline = tline + LASTLINE - buf->rootY;
|
||||||
prevhseq = buf->hmarklist->prevhseq;
|
prevhseq = buf->hmarklist->prevhseq;
|
||||||
|
|
||||||
drawAnchorCursor0(buf, hseq, prevhseq, tline, eline, 1);
|
drawAnchorCursor0(buf, hseq, prevhseq, tline, eline, 1);
|
||||||
@@ -3652,7 +3680,12 @@ backBf(void)
|
|||||||
Buffer *buf = Currentbuf->linkBuffer[LB_N_FRAME];
|
Buffer *buf = Currentbuf->linkBuffer[LB_N_FRAME];
|
||||||
|
|
||||||
if (!checkBackBuffer(Currentbuf)) {
|
if (!checkBackBuffer(Currentbuf)) {
|
||||||
disp_message("Can't back...", TRUE);
|
if (close_tab_back && nTab >= 1) {
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
disp_message("Can't back...", TRUE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3938,23 +3971,39 @@ void
|
|||||||
follow_map(struct parsed_tagarg *arg)
|
follow_map(struct parsed_tagarg *arg)
|
||||||
{
|
{
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
Anchor *a;
|
Anchor *an;
|
||||||
char *url;
|
MapArea *a;
|
||||||
int x;
|
int x, y;
|
||||||
ParsedURL p_url;
|
ParsedURL p_url;
|
||||||
|
|
||||||
a = retrieveCurrentImg(Currentbuf);
|
an = retrieveCurrentImg(Currentbuf);
|
||||||
x = Currentbuf->cursorX + Currentbuf->rootX;
|
x = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
url = follow_map_menu(Currentbuf, arg, a, x, Currentbuf->cursorY);
|
y = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
if (url == NULL || *url == '\0')
|
a = follow_map_menu(Currentbuf, arg, an, x, y);
|
||||||
|
if (a == NULL || a->url == NULL || *(a->url) == '\0')
|
||||||
return;
|
return;
|
||||||
if (*url == '#') {
|
if (*(a->url) == '#') {
|
||||||
gotoLabel(url + 1);
|
gotoLabel(a->url + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
parseURL2(url, &p_url, baseURL(Currentbuf));
|
parseURL2(a->url, &p_url, baseURL(Currentbuf));
|
||||||
pushHashHist(URLHist, parsedURL2Str(&p_url)->ptr);
|
pushHashHist(URLHist, parsedURL2Str(&p_url)->ptr);
|
||||||
cmd_loadURL(url, baseURL(Currentbuf),
|
if (check_target && open_tab_blank && a->target &&
|
||||||
|
(!strcasecmp(a->target, "_new") || !strcasecmp(a->target, "_blank"))) {
|
||||||
|
Buffer *buf;
|
||||||
|
|
||||||
|
_newT();
|
||||||
|
buf = Currentbuf;
|
||||||
|
cmd_loadURL(a->url, baseURL(Currentbuf),
|
||||||
|
parsedURL2Str(&Currentbuf->currentURL)->ptr);
|
||||||
|
if (buf != Currentbuf)
|
||||||
|
delBuffer(buf);
|
||||||
|
else
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
cmd_loadURL(a->url, baseURL(Currentbuf),
|
||||||
parsedURL2Str(&Currentbuf->currentURL)->ptr);
|
parsedURL2Str(&Currentbuf->currentURL)->ptr);
|
||||||
#else
|
#else
|
||||||
Buffer *buf;
|
Buffer *buf;
|
||||||
@@ -4629,15 +4678,76 @@ stopI(void)
|
|||||||
|
|
||||||
#ifdef USE_MOUSE
|
#ifdef USE_MOUSE
|
||||||
|
|
||||||
|
static TabBuffer *
|
||||||
|
posTab(int x, int y)
|
||||||
|
{
|
||||||
|
TabBuffer *t;
|
||||||
|
int i, n, col = COLS - 2;
|
||||||
|
|
||||||
|
if (col <= 0)
|
||||||
|
return NULL;
|
||||||
|
n = x * N_TAB / col + y * N_TAB;
|
||||||
|
for (t = FirstTab, i = 0; t && i < n; t = t->nextTab, i++)
|
||||||
|
;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
process_mouse(int btn, int x, int y)
|
process_mouse(int btn, int x, int y)
|
||||||
{
|
{
|
||||||
int delta_x, delta_y, i;
|
int delta_x, delta_y, i;
|
||||||
static int press_btn = MOUSE_BTN_RESET, press_x, press_y;
|
static int press_btn = MOUSE_BTN_RESET, press_x, press_y;
|
||||||
|
TabBuffer *t;
|
||||||
|
int ny = 0;
|
||||||
|
|
||||||
|
if (nTab > 1)
|
||||||
|
ny = (nTab - 1) / N_TAB + 1;
|
||||||
if (btn == MOUSE_BTN_UP) {
|
if (btn == MOUSE_BTN_UP) {
|
||||||
switch (press_btn) {
|
switch (press_btn) {
|
||||||
case MOUSE_BTN1_DOWN:
|
case MOUSE_BTN1_DOWN:
|
||||||
|
if (nTab > 1 && y < ny) {
|
||||||
|
if (press_y == y && press_x == x) {
|
||||||
|
if (y == 0 && x >= COLS - 2) {
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
|
}
|
||||||
|
t = posTab(x, y);
|
||||||
|
if (t)
|
||||||
|
CurrentTab = t;
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (press_y < ny) {
|
||||||
|
moveTab(posTab(press_x, press_y), posTab(x, y),
|
||||||
|
(press_y == y) ? (press_x < x) : (press_y < y));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (press_x >= Currentbuf->rootX) {
|
||||||
|
Buffer *buf = Currentbuf;
|
||||||
|
int cx = Currentbuf->cursorX, cy = Currentbuf->cursorY;
|
||||||
|
|
||||||
|
t = posTab(x, y);
|
||||||
|
if (t == NULL)
|
||||||
|
return;
|
||||||
|
cursorXY(Currentbuf, press_x - Currentbuf->rootX,
|
||||||
|
press_y - Currentbuf->rootY);
|
||||||
|
if (Currentbuf->cursorY == press_y - Currentbuf->rootY &&
|
||||||
|
(Currentbuf->cursorX == press_x - Currentbuf->rootX
|
||||||
|
#ifdef JP_CHARSET
|
||||||
|
|| (Currentbuf->currentLine != NULL &&
|
||||||
|
(Currentbuf->currentLine->propBuf[Currentbuf->pos]
|
||||||
|
& PC_KANJI1) && Currentbuf->cursorX == press_x
|
||||||
|
- Currentbuf->rootX - 1)
|
||||||
|
#endif
|
||||||
|
)) {
|
||||||
|
onA();
|
||||||
|
followTab(t);
|
||||||
|
}
|
||||||
|
if (buf == Currentbuf)
|
||||||
|
cursorXY(Currentbuf, cx, cy);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (press_x != x || press_y != y) {
|
if (press_x != x || press_y != y) {
|
||||||
delta_x = x - press_x;
|
delta_x = x - press_x;
|
||||||
delta_y = y - press_y;
|
delta_y = y - press_y;
|
||||||
@@ -4685,7 +4795,7 @@ process_mouse(int btn, int x, int y)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (y == Currentbuf->cursorY &&
|
if (y == Currentbuf->cursorY + Currentbuf->rootY &&
|
||||||
(x == Currentbuf->cursorX + Currentbuf->rootX
|
(x == Currentbuf->cursorX + Currentbuf->rootX
|
||||||
#ifdef JP_CHARSET
|
#ifdef JP_CHARSET
|
||||||
|| (Currentbuf->currentLine != NULL &&
|
|| (Currentbuf->currentLine != NULL &&
|
||||||
@@ -4698,18 +4808,30 @@ process_mouse(int btn, int x, int y)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (x >= Currentbuf->rootX)
|
if (x >= Currentbuf->rootX)
|
||||||
cursorXY(Currentbuf, x - Currentbuf->rootX, y);
|
cursorXY(Currentbuf, x - Currentbuf->rootX,
|
||||||
|
y - Currentbuf->rootY);
|
||||||
displayBuffer(Currentbuf, B_NORMAL);
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MOUSE_BTN2_DOWN:
|
case MOUSE_BTN2_DOWN:
|
||||||
|
if (nTab > 1 && y < ny) {
|
||||||
|
if (press_y == y && press_x == x) {
|
||||||
|
t = posTab(x, y);
|
||||||
|
if (t) {
|
||||||
|
deleteTab(t);
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
backBf();
|
backBf();
|
||||||
break;
|
break;
|
||||||
case MOUSE_BTN3_DOWN:
|
case MOUSE_BTN3_DOWN:
|
||||||
#ifdef USE_MENU
|
#ifdef USE_MENU
|
||||||
if (x >= Currentbuf->rootX)
|
if (x >= Currentbuf->rootX && y > ny)
|
||||||
cursorXY(Currentbuf, x - Currentbuf->rootX, y);
|
cursorXY(Currentbuf, x - Currentbuf->rootX,
|
||||||
|
y - Currentbuf->rootY);
|
||||||
onA();
|
onA();
|
||||||
mainMenu(x, y);
|
mainMenu(x, y);
|
||||||
#endif /* USE_MENU */
|
#endif /* USE_MENU */
|
||||||
@@ -5023,10 +5145,13 @@ deleteFiles()
|
|||||||
{
|
{
|
||||||
Buffer *buf;
|
Buffer *buf;
|
||||||
char *f;
|
char *f;
|
||||||
while (Firstbuf && Firstbuf != NO_BUFFER) {
|
|
||||||
buf = Firstbuf->nextBuffer;
|
for (CurrentTab = FirstTab; CurrentTab; CurrentTab = CurrentTab->nextTab) {
|
||||||
discardBuffer(Firstbuf);
|
while (Firstbuf && Firstbuf != NO_BUFFER) {
|
||||||
Firstbuf = buf;
|
buf = Firstbuf->nextBuffer;
|
||||||
|
discardBuffer(Firstbuf);
|
||||||
|
Firstbuf = buf;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while ((f = popText(fileToDelete)) != NULL)
|
while ((f = popText(fileToDelete)) != NULL)
|
||||||
unlink(f);
|
unlink(f);
|
||||||
@@ -5257,3 +5382,316 @@ defKey(void)
|
|||||||
setKeymap(allocStr(data, -1), -1, TRUE);
|
setKeymap(allocStr(data, -1), -1, TRUE);
|
||||||
displayBuffer(Currentbuf, B_NORMAL);
|
displayBuffer(Currentbuf, B_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TabBuffer *
|
||||||
|
newTab(void)
|
||||||
|
{
|
||||||
|
TabBuffer *n;
|
||||||
|
|
||||||
|
n = New(TabBuffer);
|
||||||
|
if (n == NULL)
|
||||||
|
return NULL;
|
||||||
|
n->nextTab = NULL;
|
||||||
|
n->currentBuffer = NULL;
|
||||||
|
n->firstBuffer = NULL;
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_newT(void)
|
||||||
|
{
|
||||||
|
TabBuffer *tag;
|
||||||
|
Buffer *buf;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
tag = newTab();
|
||||||
|
if (! tag)
|
||||||
|
return;
|
||||||
|
|
||||||
|
buf = newBuffer(Currentbuf->width);
|
||||||
|
copyBuffer(buf, Currentbuf);
|
||||||
|
buf->nextBuffer = NULL;
|
||||||
|
for (i = 0; i < MAX_LB; i++)
|
||||||
|
buf->linkBuffer[i] = NULL;
|
||||||
|
(*buf->clone)++;
|
||||||
|
tag->firstBuffer = tag->currentBuffer = buf;
|
||||||
|
|
||||||
|
tag->nextTab = CurrentTab->nextTab;
|
||||||
|
tag->prevTab = CurrentTab;
|
||||||
|
if (CurrentTab->nextTab)
|
||||||
|
CurrentTab->nextTab->prevTab = tag;
|
||||||
|
else
|
||||||
|
LastTab = tag;
|
||||||
|
CurrentTab->nextTab = tag;
|
||||||
|
CurrentTab = tag;
|
||||||
|
nTab++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
newT(void)
|
||||||
|
{
|
||||||
|
_newT();
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
TabBuffer *
|
||||||
|
numTab(int n)
|
||||||
|
{
|
||||||
|
TabBuffer *tab;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (n == 0)
|
||||||
|
return CurrentTab;
|
||||||
|
if (n == 1)
|
||||||
|
return FirstTab;
|
||||||
|
if (nTab <= 1)
|
||||||
|
return NULL;
|
||||||
|
for (tab = FirstTab, i = 1; tab && i < n; tab = tab->nextTab, i++)
|
||||||
|
;
|
||||||
|
return tab;
|
||||||
|
}
|
||||||
|
|
||||||
|
TabBuffer *
|
||||||
|
deleteTab(TabBuffer *tab)
|
||||||
|
{
|
||||||
|
Buffer *buf, *next;
|
||||||
|
|
||||||
|
if (nTab <= 1)
|
||||||
|
return FirstTab;
|
||||||
|
if (tab->prevTab) {
|
||||||
|
if (tab->nextTab)
|
||||||
|
tab->nextTab->prevTab = tab->prevTab;
|
||||||
|
else
|
||||||
|
LastTab = tab->prevTab;
|
||||||
|
tab->prevTab->nextTab = tab->nextTab;
|
||||||
|
if (tab == CurrentTab)
|
||||||
|
CurrentTab = tab->prevTab;
|
||||||
|
}
|
||||||
|
else { /* tab == FirstTab */
|
||||||
|
tab->nextTab->prevTab = NULL;
|
||||||
|
FirstTab = tab->nextTab;
|
||||||
|
if (tab == CurrentTab)
|
||||||
|
CurrentTab = tab->nextTab;
|
||||||
|
}
|
||||||
|
nTab--;
|
||||||
|
buf = tab->firstBuffer;
|
||||||
|
while (buf && buf != NO_BUFFER) {
|
||||||
|
next = buf->nextBuffer;
|
||||||
|
discardBuffer(buf);
|
||||||
|
buf = next;
|
||||||
|
}
|
||||||
|
return FirstTab;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
closeT(void)
|
||||||
|
{
|
||||||
|
TabBuffer *tab;
|
||||||
|
|
||||||
|
if (nTab <= 1)
|
||||||
|
return;
|
||||||
|
if (prec_num)
|
||||||
|
tab = numTab(PREC_NUM);
|
||||||
|
else
|
||||||
|
tab = CurrentTab;
|
||||||
|
if (tab)
|
||||||
|
deleteTab(tab);
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nextT(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (nTab <= 1)
|
||||||
|
return;
|
||||||
|
for (i = 0; i < PREC_NUM; i++) {
|
||||||
|
if (CurrentTab->nextTab)
|
||||||
|
CurrentTab = CurrentTab->nextTab;
|
||||||
|
else
|
||||||
|
CurrentTab = FirstTab;
|
||||||
|
}
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
prevT(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (nTab <= 1)
|
||||||
|
return;
|
||||||
|
for (i = 0; i < PREC_NUM; i++) {
|
||||||
|
if (CurrentTab->prevTab)
|
||||||
|
CurrentTab = CurrentTab->prevTab;
|
||||||
|
else
|
||||||
|
CurrentTab = LastTab;
|
||||||
|
}
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
followTab(TabBuffer *tab)
|
||||||
|
{
|
||||||
|
Buffer *buf;
|
||||||
|
Anchor *a;
|
||||||
|
|
||||||
|
#ifdef USE_IMAGE
|
||||||
|
a = retrieveCurrentImg(Currentbuf);
|
||||||
|
if (! (a && a->image && a->image->map))
|
||||||
|
#endif
|
||||||
|
a = retrieveCurrentAnchor(Currentbuf);
|
||||||
|
if (a == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (tab == CurrentTab) {
|
||||||
|
check_target = FALSE;
|
||||||
|
followA();
|
||||||
|
check_target = TRUE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_newT();
|
||||||
|
buf = Currentbuf;
|
||||||
|
check_target = FALSE;
|
||||||
|
followA();
|
||||||
|
check_target = TRUE;
|
||||||
|
if (tab == NULL) {
|
||||||
|
if (buf != Currentbuf)
|
||||||
|
delBuffer(buf);
|
||||||
|
else
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
}
|
||||||
|
else if (buf != Currentbuf) {
|
||||||
|
/* buf <- p <- ... <- Currentbuf = c */
|
||||||
|
Buffer *c, *p;
|
||||||
|
|
||||||
|
c = Currentbuf;
|
||||||
|
p = prevBuffer(c, buf);
|
||||||
|
p->nextBuffer = NULL;
|
||||||
|
Firstbuf = buf;
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
CurrentTab = tab;
|
||||||
|
for (buf = p; buf; buf = p) {
|
||||||
|
p = prevBuffer(c, buf);
|
||||||
|
pushBuffer(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tabA(void)
|
||||||
|
{
|
||||||
|
followTab(prec_num ? numTab(PREC_NUM) : NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
tabURL0(TabBuffer *tab, char *prompt, int relative)
|
||||||
|
{
|
||||||
|
Buffer *buf;
|
||||||
|
|
||||||
|
if (tab == CurrentTab) {
|
||||||
|
goURL0(prompt, relative);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_newT();
|
||||||
|
buf = Currentbuf;
|
||||||
|
goURL0(prompt, relative);
|
||||||
|
if (tab == NULL) {
|
||||||
|
if (buf != Currentbuf)
|
||||||
|
delBuffer(buf);
|
||||||
|
else
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
}
|
||||||
|
else if (buf != Currentbuf) {
|
||||||
|
/* buf <- p <- ... <- Currentbuf = c */
|
||||||
|
Buffer *c, *p;
|
||||||
|
|
||||||
|
c = Currentbuf;
|
||||||
|
p = prevBuffer(c, buf);
|
||||||
|
p->nextBuffer = NULL;
|
||||||
|
Firstbuf = buf;
|
||||||
|
deleteTab(CurrentTab);
|
||||||
|
CurrentTab = tab;
|
||||||
|
for (buf = p; buf; buf = p) {
|
||||||
|
p = prevBuffer(c, buf);
|
||||||
|
pushBuffer(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tabURL(void)
|
||||||
|
{
|
||||||
|
tabURL0(prec_num ? numTab(PREC_NUM) : NULL,
|
||||||
|
"Goto URL on new tab: ", FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tabrURL(void)
|
||||||
|
{
|
||||||
|
tabURL0(prec_num ? numTab(PREC_NUM) : NULL,
|
||||||
|
"Goto relative URL on new tab: ", TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
moveTab(TabBuffer *t, TabBuffer *t2, int right)
|
||||||
|
{
|
||||||
|
if (!t || !t2 || t == t2)
|
||||||
|
return;
|
||||||
|
if (t->prevTab) {
|
||||||
|
if (t->nextTab)
|
||||||
|
t->nextTab->prevTab = t->prevTab;
|
||||||
|
else
|
||||||
|
LastTab = t->prevTab;
|
||||||
|
t->prevTab->nextTab = t->nextTab;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
t->nextTab->prevTab = NULL;
|
||||||
|
FirstTab = t->nextTab;
|
||||||
|
}
|
||||||
|
if (right) {
|
||||||
|
t->nextTab = t2->nextTab;
|
||||||
|
t->prevTab = t2;
|
||||||
|
if (t2->nextTab)
|
||||||
|
t2->nextTab->prevTab = t;
|
||||||
|
else
|
||||||
|
LastTab = t;
|
||||||
|
t2->nextTab = t;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
t->prevTab = t2->prevTab;
|
||||||
|
t->nextTab = t2;
|
||||||
|
if (t2->prevTab)
|
||||||
|
t2->prevTab->nextTab = t;
|
||||||
|
else
|
||||||
|
FirstTab = t;
|
||||||
|
t2->prevTab = t;
|
||||||
|
}
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tabR(void)
|
||||||
|
{
|
||||||
|
TabBuffer *tab;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (tab = CurrentTab, i = 0; tab && i < PREC_NUM; tab = tab->nextTab, i++)
|
||||||
|
;
|
||||||
|
moveTab(CurrentTab, tab ? tab : LastTab, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
tabL(void)
|
||||||
|
{
|
||||||
|
TabBuffer *tab;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (tab = CurrentTab, i = 0; tab && i < PREC_NUM; tab = tab->prevTab, i++)
|
||||||
|
;
|
||||||
|
moveTab(CurrentTab, tab ? tab : FirstTab, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: map.c,v 1.8 2002/03/15 18:48:55 ukai Exp $ */
|
/* $Id: map.c,v 1.9 2002/11/05 17:10:07 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* client-side image maps
|
* client-side image maps
|
||||||
*/
|
*/
|
||||||
@@ -59,7 +59,7 @@ inMapArea(MapArea * a, int x, int y)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
char *
|
MapArea *
|
||||||
follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x,
|
follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x,
|
||||||
int y)
|
int y)
|
||||||
{
|
{
|
||||||
@@ -122,7 +122,7 @@ follow_map_menu(Buffer *buf, struct parsed_tagarg *arg, Anchor *a_img, int x,
|
|||||||
if (selected >= 0) {
|
if (selected >= 0) {
|
||||||
for (i = 0, al = ml->area->first; al != NULL; i++, al = al->next) {
|
for (i = 0, al = ml->area->first; al != NULL; i++, al = al->next) {
|
||||||
if (al->ptr && i == selected)
|
if (al->ptr && i == selected)
|
||||||
return ((MapArea *) al->ptr)->url;
|
return (MapArea *) al->ptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -193,7 +193,7 @@ getMapXY(Buffer *buf, Anchor *a, int *x, int *y)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
MapArea *
|
MapArea *
|
||||||
newMapArea(char *url, char *alt, char *shape, char *coords)
|
newMapArea(char *url, char *target, char *alt, char *shape, char *coords)
|
||||||
{
|
{
|
||||||
MapArea *a = New(MapArea);
|
MapArea *a = New(MapArea);
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
@@ -204,6 +204,7 @@ newMapArea(char *url, char *alt, char *shape, char *coords)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
a->url = url;
|
a->url = url;
|
||||||
|
a->target = target;
|
||||||
a->alt = alt ? alt : "";
|
a->alt = alt ? alt : "";
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: menu.c,v 1.15 2002/03/19 16:06:52 ukai Exp $ */
|
/* $Id: menu.c,v 1.16 2002/11/05 17:10:07 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* w3m menu.c
|
* w3m menu.c
|
||||||
*/
|
*/
|
||||||
@@ -276,6 +276,16 @@ static int smDelBuf(char c);
|
|||||||
|
|
||||||
/* --- SelectMenu (END) --- */
|
/* --- SelectMenu (END) --- */
|
||||||
|
|
||||||
|
/* --- SelTabMenu --- */
|
||||||
|
|
||||||
|
static Menu SelTabMenu;
|
||||||
|
static int SelTabV = 0;
|
||||||
|
static void initSelTabMenu(void);
|
||||||
|
static void smChTab(void);
|
||||||
|
static int smDelTab(char c);
|
||||||
|
|
||||||
|
/* --- SelTabMenu (END) --- */
|
||||||
|
|
||||||
/* --- MainMenu --- */
|
/* --- MainMenu --- */
|
||||||
|
|
||||||
static Menu MainMenu;
|
static Menu MainMenu;
|
||||||
@@ -284,12 +294,14 @@ static MenuItem MainMenuItem[] = {
|
|||||||
/* type label variabel value func popup keys data */
|
/* type label variabel value func popup keys data */
|
||||||
{MENU_FUNC, "戻る (b)", NULL, 0, backBf, NULL, "b", NULL},
|
{MENU_FUNC, "戻る (b)", NULL, 0, backBf, NULL, "b", NULL},
|
||||||
{MENU_POPUP, "バッファ選択 (s)", NULL, 0, NULL, &SelectMenu, "s", NULL},
|
{MENU_POPUP, "バッファ選択 (s)", NULL, 0, NULL, &SelectMenu, "s", NULL},
|
||||||
|
{MENU_POPUP, "¥¿¥ÖÁªÂò (t)", NULL, 0, NULL, &SelTabMenu, "tT", NULL},
|
||||||
{MENU_FUNC, "ソースを表示 (v)", NULL, 0, vwSrc, NULL, "vV", NULL},
|
{MENU_FUNC, "ソースを表示 (v)", NULL, 0, vwSrc, NULL, "vV", NULL},
|
||||||
{MENU_FUNC, "ソースを編集 (e)", NULL, 0, editBf, NULL, "eE", NULL},
|
{MENU_FUNC, "ソースを編集 (e)", NULL, 0, editBf, NULL, "eE", NULL},
|
||||||
{MENU_FUNC, "ソースを保存 (S)", NULL, 0, svSrc, NULL, "S", NULL},
|
{MENU_FUNC, "ソースを保存 (S)", NULL, 0, svSrc, NULL, "S", NULL},
|
||||||
{MENU_FUNC, "再読み込み (r)", NULL, 0, reload, NULL, "rR", NULL},
|
{MENU_FUNC, "再読み込み (r)", NULL, 0, reload, NULL, "rR", NULL},
|
||||||
{MENU_NOP, "────────", NULL, 0, nulcmd, NULL, "", NULL},
|
{MENU_NOP, "────────", NULL, 0, nulcmd, NULL, "", NULL},
|
||||||
{MENU_FUNC, "リンクを表示 (a)", NULL, 0, followA, NULL, "a", NULL},
|
{MENU_FUNC, "リンクを表示 (a)", NULL, 0, followA, NULL, "a", NULL},
|
||||||
|
{MENU_FUNC, "¿·¥¿¥Ö¤Çɽ¼¨ (n)", NULL, 0, tabA, NULL, "nN", NULL},
|
||||||
{MENU_FUNC, "リンクを保存 (A)", NULL, 0, svA, NULL, "A", NULL},
|
{MENU_FUNC, "リンクを保存 (A)", NULL, 0, svA, NULL, "A", NULL},
|
||||||
{MENU_FUNC, "画像を表示 (i)", NULL, 0, followI, NULL, "i", NULL},
|
{MENU_FUNC, "画像を表示 (i)", NULL, 0, followI, NULL, "i", NULL},
|
||||||
{MENU_FUNC, "画像を保存 (I)", NULL, 0, svI, NULL, "I", NULL},
|
{MENU_FUNC, "画像を保存 (I)", NULL, 0, svI, NULL, "I", NULL},
|
||||||
@@ -307,12 +319,14 @@ static MenuItem MainMenuItem[] = {
|
|||||||
/* type label variable value func popup keys data */
|
/* type label variable value func popup keys data */
|
||||||
{MENU_FUNC, " Back (b) ", NULL, 0, backBf, NULL, "b", NULL},
|
{MENU_FUNC, " Back (b) ", NULL, 0, backBf, NULL, "b", NULL},
|
||||||
{MENU_POPUP, " Select Buffer(s) ", NULL, 0, NULL, &SelectMenu, "s", NULL},
|
{MENU_POPUP, " Select Buffer(s) ", NULL, 0, NULL, &SelectMenu, "s", NULL},
|
||||||
|
{MENU_POPUP, " Select Tab (t) ", NULL, 0, NULL, &SelTabMenu, "tT", NULL},
|
||||||
{MENU_FUNC, " View Source (v) ", NULL, 0, vwSrc, NULL, "vV", NULL},
|
{MENU_FUNC, " View Source (v) ", NULL, 0, vwSrc, NULL, "vV", NULL},
|
||||||
{MENU_FUNC, " Edit Source (e) ", NULL, 0, editBf, NULL, "eE", NULL},
|
{MENU_FUNC, " Edit Source (e) ", NULL, 0, editBf, NULL, "eE", NULL},
|
||||||
{MENU_FUNC, " Save Source (S) ", NULL, 0, svSrc, NULL, "S", NULL},
|
{MENU_FUNC, " Save Source (S) ", NULL, 0, svSrc, NULL, "S", NULL},
|
||||||
{MENU_FUNC, " Reload (r) ", NULL, 0, reload, NULL, "rR", NULL},
|
{MENU_FUNC, " Reload (r) ", NULL, 0, reload, NULL, "rR", NULL},
|
||||||
{MENU_NOP, " ---------------- ", NULL, 0, nulcmd, NULL, "", NULL},
|
{MENU_NOP, " ---------------- ", NULL, 0, nulcmd, NULL, "", NULL},
|
||||||
{MENU_FUNC, " Go Link (a) ", NULL, 0, followA, NULL, "a", NULL},
|
{MENU_FUNC, " Go Link (a) ", NULL, 0, followA, NULL, "a", NULL},
|
||||||
|
{MENU_FUNC, " on New Tab (n) ", NULL, 0, tabA, NULL, "nN", NULL},
|
||||||
{MENU_FUNC, " Save Link (A) ", NULL, 0, svA, NULL, "A", NULL},
|
{MENU_FUNC, " Save Link (A) ", NULL, 0, svA, NULL, "A", NULL},
|
||||||
{MENU_FUNC, " View Image (i) ", NULL, 0, followI, NULL, "i", NULL},
|
{MENU_FUNC, " View Image (i) ", NULL, 0, followI, NULL, "i", NULL},
|
||||||
{MENU_FUNC, " Save Image (I) ", NULL, 0, svI, NULL, "I", NULL},
|
{MENU_FUNC, " Save Image (I) ", NULL, 0, svI, NULL, "I", NULL},
|
||||||
@@ -1209,9 +1223,10 @@ void
|
|||||||
popupMenu(int x, int y, Menu *menu)
|
popupMenu(int x, int y, Menu *menu)
|
||||||
{
|
{
|
||||||
initSelectMenu();
|
initSelectMenu();
|
||||||
|
initSelTabMenu();
|
||||||
|
|
||||||
menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
menu->cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
menu->cursorY = Currentbuf->cursorY;
|
menu->cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
menu->x = x + FRAME_WIDTH + 1;
|
menu->x = x + FRAME_WIDTH + 1;
|
||||||
menu->y = y + 2;
|
menu->y = y + 2;
|
||||||
|
|
||||||
@@ -1238,8 +1253,8 @@ mainMn(void)
|
|||||||
return;
|
return;
|
||||||
menu = w3mMenuList[n].menu;
|
menu = w3mMenuList[n].menu;
|
||||||
}
|
}
|
||||||
popupMenu(Currentbuf->cursorX + Currentbuf->rootX, Currentbuf->cursorY,
|
popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
|
||||||
menu);
|
Currentbuf->cursorY + Currentbuf->rootY, menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- MainMenu (END) --- */
|
/* --- MainMenu (END) --- */
|
||||||
@@ -1249,7 +1264,8 @@ mainMn(void)
|
|||||||
void
|
void
|
||||||
selMn(void)
|
selMn(void)
|
||||||
{
|
{
|
||||||
popupMenu(Currentbuf->cursorX, Currentbuf->cursorY, &SelectMenu);
|
popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
|
||||||
|
Currentbuf->cursorY + Currentbuf->rootY, &SelectMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1312,7 +1328,7 @@ initSelectMenu(void)
|
|||||||
new_option_menu(&SelectMenu, label, &SelectV, smChBuf);
|
new_option_menu(&SelectMenu, label, &SelectV, smChBuf);
|
||||||
SelectMenu.initial = SelectV;
|
SelectMenu.initial = SelectV;
|
||||||
SelectMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
SelectMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
SelectMenu.cursorY = Currentbuf->cursorY;
|
SelectMenu.cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
SelectMenu.keymap['D'] = smDelBuf;
|
SelectMenu.keymap['D'] = smDelBuf;
|
||||||
SelectMenu.item[nitem].type = MENU_NOP;
|
SelectMenu.item[nitem].type = MENU_NOP;
|
||||||
}
|
}
|
||||||
@@ -1380,6 +1396,140 @@ smDelBuf(char c)
|
|||||||
|
|
||||||
/* --- SelectMenu (END) --- */
|
/* --- SelectMenu (END) --- */
|
||||||
|
|
||||||
|
/* --- SelTabMenu --- */
|
||||||
|
|
||||||
|
void
|
||||||
|
tabMn(void)
|
||||||
|
{
|
||||||
|
popupMenu(Currentbuf->cursorX + Currentbuf->rootX,
|
||||||
|
Currentbuf->cursorY + Currentbuf->rootY, &SelTabMenu);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
initSelTabMenu(void)
|
||||||
|
{
|
||||||
|
int i, nitem, len = 0, l;
|
||||||
|
TabBuffer *tab;
|
||||||
|
Buffer *buf;
|
||||||
|
Str str;
|
||||||
|
char **label;
|
||||||
|
static char *comment = " SPC for select / D for delete tab ";
|
||||||
|
|
||||||
|
SelTabV = -1;
|
||||||
|
for (i = 0, tab = LastTab; tab != NULL; i++, tab = tab->prevTab) {
|
||||||
|
if (tab == CurrentTab)
|
||||||
|
SelTabV = i;
|
||||||
|
}
|
||||||
|
nitem = i;
|
||||||
|
|
||||||
|
label = New_N(char *, nitem + 2);
|
||||||
|
for (i = 0, tab = LastTab; i < nitem; i++, tab = tab->prevTab) {
|
||||||
|
buf = tab->currentBuffer;
|
||||||
|
str = Sprintf("<%s>", buf->buffername);
|
||||||
|
if (buf->filename != NULL) {
|
||||||
|
switch (buf->currentURL.scheme) {
|
||||||
|
case SCM_LOCAL:
|
||||||
|
case SCM_LOCAL_CGI:
|
||||||
|
if (strcmp(buf->currentURL.file, "-")) {
|
||||||
|
Strcat_char(str, ' ');
|
||||||
|
Strcat_charp(str,
|
||||||
|
conv_from_system(buf->currentURL.real_file));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* case SCM_UNKNOWN: */
|
||||||
|
case SCM_MISSING:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Strcat_char(str, ' ');
|
||||||
|
Strcat(str, parsedURL2Str(&buf->currentURL));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
label[i] = str->ptr;
|
||||||
|
if (len < str->length)
|
||||||
|
len = str->length;
|
||||||
|
}
|
||||||
|
l = strlen(comment);
|
||||||
|
if (len < l + 4)
|
||||||
|
len = l + 4;
|
||||||
|
if (len > COLS - 2 * FRAME_WIDTH)
|
||||||
|
len = COLS - 2 * FRAME_WIDTH;
|
||||||
|
len = (len > 1) ? ((len - l + 1) / 2) : 0;
|
||||||
|
str = Strnew();
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
Strcat_char(str, '-');
|
||||||
|
Strcat_charp(str, comment);
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
Strcat_char(str, '-');
|
||||||
|
label[nitem] = str->ptr;
|
||||||
|
label[nitem + 1] = NULL;
|
||||||
|
|
||||||
|
new_option_menu(&SelTabMenu, label, &SelTabV, smChTab);
|
||||||
|
SelTabMenu.initial = SelTabV;
|
||||||
|
SelTabMenu.cursorX = Currentbuf->cursorX + Currentbuf->rootX;
|
||||||
|
SelTabMenu.cursorY = Currentbuf->cursorY + Currentbuf->rootY;
|
||||||
|
SelTabMenu.keymap['D'] = smDelTab;
|
||||||
|
SelTabMenu.item[nitem].type = MENU_NOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
smChTab(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
TabBuffer *tab;
|
||||||
|
Buffer *buf;
|
||||||
|
|
||||||
|
if (SelTabV < 0 || SelTabV >= SelTabMenu.nitem)
|
||||||
|
return;
|
||||||
|
for (i = 0, tab = LastTab; i < SelTabV && tab != NULL;
|
||||||
|
i++, tab = tab->prevTab) ;
|
||||||
|
CurrentTab = tab;
|
||||||
|
for (tab = LastTab; tab != NULL; tab = tab->prevTab) {
|
||||||
|
if (tab == CurrentTab)
|
||||||
|
continue;
|
||||||
|
buf = tab->currentBuffer;
|
||||||
|
#ifdef USE_IMAGE
|
||||||
|
deleteImage(buf);
|
||||||
|
#endif
|
||||||
|
if (clear_buffer)
|
||||||
|
tmpClearBuffer(buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
smDelTab(char c)
|
||||||
|
{
|
||||||
|
int i, x, y, mselect;
|
||||||
|
TabBuffer *tab;
|
||||||
|
|
||||||
|
if (CurrentMenu->select < 0 || CurrentMenu->select >= SelTabMenu.nitem)
|
||||||
|
return (MENU_NOTHING);
|
||||||
|
for (i = 0, tab = LastTab; i < CurrentMenu->select && tab != NULL;
|
||||||
|
i++, tab = tab->prevTab) ;
|
||||||
|
deleteTab(tab);
|
||||||
|
|
||||||
|
x = CurrentMenu->x;
|
||||||
|
y = CurrentMenu->y;
|
||||||
|
mselect = CurrentMenu->select;
|
||||||
|
|
||||||
|
initSelTabMenu();
|
||||||
|
|
||||||
|
CurrentMenu->x = x;
|
||||||
|
CurrentMenu->y = y;
|
||||||
|
|
||||||
|
geom_menu(CurrentMenu, x, y, 0);
|
||||||
|
|
||||||
|
CurrentMenu->select = (mselect <= CurrentMenu->nitem - 2) ? mselect
|
||||||
|
: (CurrentMenu->nitem - 2);
|
||||||
|
|
||||||
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
|
draw_all_menu(CurrentMenu);
|
||||||
|
select_menu(CurrentMenu, CurrentMenu->select);
|
||||||
|
return (MENU_NOTHING);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- SelectMenu (END) --- */
|
||||||
|
|
||||||
/* --- OptionMenu --- */
|
/* --- OptionMenu --- */
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: proto.h,v 1.50 2002/11/05 16:03:14 ukai Exp $ */
|
/* $Id: proto.h,v 1.51 2002/11/05 17:10:07 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* This file was automatically generated by version 1.7 of cextract.
|
* This file was automatically generated by version 1.7 of cextract.
|
||||||
* Manual editing not recommended.
|
* Manual editing not recommended.
|
||||||
@@ -119,6 +119,16 @@ extern void setAlarmEvent(int sec, short status, int cmd, void *data);
|
|||||||
#endif
|
#endif
|
||||||
extern void reinit(void);
|
extern void reinit(void);
|
||||||
extern void defKey(void);
|
extern void defKey(void);
|
||||||
|
extern void newT(void);
|
||||||
|
extern void closeT(void);
|
||||||
|
extern void nextT(void);
|
||||||
|
extern void prevT(void);
|
||||||
|
extern void tabA(void);
|
||||||
|
extern void tabURL(void);
|
||||||
|
extern void tabrURL(void);
|
||||||
|
extern void tabR(void);
|
||||||
|
extern void tabL(void);
|
||||||
|
|
||||||
extern int currentLn(Buffer *buf);
|
extern int currentLn(Buffer *buf);
|
||||||
extern void tmpClearBuffer(Buffer *buf);
|
extern void tmpClearBuffer(Buffer *buf);
|
||||||
extern char *filename_extension(char *patch, int is_url);
|
extern char *filename_extension(char *patch, int is_url);
|
||||||
@@ -209,6 +219,8 @@ extern char *inputAnswer(char *prompt);
|
|||||||
extern int matchattr(char *p, char *attr, int len, Str *value);
|
extern int matchattr(char *p, char *attr, int len, Str *value);
|
||||||
extern void readHeader(URLFile *uf, Buffer *newBuf, int thru, ParsedURL *pu);
|
extern void readHeader(URLFile *uf, Buffer *newBuf, int thru, ParsedURL *pu);
|
||||||
extern char *checkHeader(Buffer *buf, char *field);
|
extern char *checkHeader(Buffer *buf, char *field);
|
||||||
|
extern TabBuffer *newTab(void);
|
||||||
|
extern TabBuffer *deleteTab(TabBuffer *tab);
|
||||||
extern Buffer *newBuffer(int width);
|
extern Buffer *newBuffer(int width);
|
||||||
extern Buffer *nullBuffer(void);
|
extern Buffer *nullBuffer(void);
|
||||||
extern void clearBuffer(Buffer *buf);
|
extern void clearBuffer(Buffer *buf);
|
||||||
@@ -340,15 +352,16 @@ extern void form_write_from_file(FILE * f, char *boundary, char *name,
|
|||||||
char *filename, char *file);
|
char *filename, char *file);
|
||||||
extern void follow_map(struct parsed_tagarg *arg);
|
extern void follow_map(struct parsed_tagarg *arg);
|
||||||
#ifdef MENU_MAP
|
#ifdef MENU_MAP
|
||||||
extern char *follow_map_menu(Buffer *buf, struct parsed_tagarg *arg,
|
extern MapArea *follow_map_menu(Buffer *buf, struct parsed_tagarg *arg,
|
||||||
Anchor *a_img, int x, int y);
|
Anchor *a_img, int x, int y);
|
||||||
#else
|
#else
|
||||||
extern Buffer *follow_map_panel(Buffer *buf, struct parsed_tagarg *arg);
|
extern Buffer *follow_map_panel(Buffer *buf, struct parsed_tagarg *arg);
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_IMAGE
|
#ifdef USE_IMAGE
|
||||||
extern int getMapXY(Buffer *buf, Anchor *a, int *x, int *y);
|
extern int getMapXY(Buffer *buf, Anchor *a, int *x, int *y);
|
||||||
#endif
|
#endif
|
||||||
extern MapArea *newMapArea(char *url, char *alt, char *shape, char *coords);
|
extern MapArea *newMapArea(char *url, char *target, char *alt, char *shape,
|
||||||
|
char *coords);
|
||||||
extern Buffer *page_info_panel(Buffer *buf);
|
extern Buffer *page_info_panel(Buffer *buf);
|
||||||
extern struct frame_body *newFrame(struct parsed_tag *tag, Buffer *buf);
|
extern struct frame_body *newFrame(struct parsed_tag *tag, Buffer *buf);
|
||||||
extern struct frameset *newFrameSet(struct parsed_tag *tag);
|
extern struct frameset *newFrameSet(struct parsed_tag *tag);
|
||||||
@@ -624,6 +637,7 @@ extern void popupMenu(int x, int y, Menu *menu);
|
|||||||
extern void mainMenu(int x, int y);
|
extern void mainMenu(int x, int y);
|
||||||
extern void mainMn(void);
|
extern void mainMn(void);
|
||||||
extern void selMn(void);
|
extern void selMn(void);
|
||||||
|
extern void tabMn(void);
|
||||||
extern void optionMenu(int x, int y, char **label, int *variable, int initial,
|
extern void optionMenu(int x, int y, char **label, int *variable, int initial,
|
||||||
void (*func) ());
|
void (*func) ());
|
||||||
extern void initMenu(void);
|
extern void initMenu(void);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: rc.c,v 1.55 2002/11/05 15:56:14 ukai Exp $ */
|
/* $Id: rc.c,v 1.56 2002/11/05 17:10:07 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* Initialization file etc.
|
* Initialization file etc.
|
||||||
*/
|
*/
|
||||||
@@ -65,6 +65,7 @@ static char *config_file = NULL;
|
|||||||
#define CMT_FRAME "フレームの自動表示"
|
#define CMT_FRAME "フレームの自動表示"
|
||||||
#define CMT_ARGV_IS_URL "scheme のない引数も URL とみなす"
|
#define CMT_ARGV_IS_URL "scheme のない引数も URL とみなす"
|
||||||
#define CMT_TSELF "targetが未指定の場合に_selfを使用する"
|
#define CMT_TSELF "targetが未指定の場合に_selfを使用する"
|
||||||
|
#define CMT_OPEN_TAB_BLANK "targetが_blankか_newの場合は新しいタブで開く"
|
||||||
#define CMT_DISPLINK "リンク先の自動表示"
|
#define CMT_DISPLINK "リンク先の自動表示"
|
||||||
#define CMT_DISPLINEINFO "現在の行番号の表示"
|
#define CMT_DISPLINEINFO "現在の行番号の表示"
|
||||||
#define CMT_DISP_IMAGE "インライン画像を表示"
|
#define CMT_DISP_IMAGE "インライン画像を表示"
|
||||||
@@ -102,6 +103,7 @@ static char *config_file = NULL;
|
|||||||
#define CMT_PDROOT "/~user で表されるディレクトリ"
|
#define CMT_PDROOT "/~user で表されるディレクトリ"
|
||||||
#define CMT_CGIBIN "/cgi-bin で表されるディレクトリ"
|
#define CMT_CGIBIN "/cgi-bin で表されるディレクトリ"
|
||||||
#define CMT_CONFIRM_QQ "q での終了時に確認する"
|
#define CMT_CONFIRM_QQ "q での終了時に確認する"
|
||||||
|
#define CMT_CLOSE_TAB_BACK "戻る時にバッファが最後ならタブを閉じる"
|
||||||
#ifdef USE_MARK
|
#ifdef USE_MARK
|
||||||
#define CMT_USE_MARK "マーク機能を有効にする"
|
#define CMT_USE_MARK "マーク機能を有効にする"
|
||||||
#endif
|
#endif
|
||||||
@@ -207,6 +209,7 @@ static char *config_file = NULL;
|
|||||||
#define CMT_FRAME "Render frames automatically"
|
#define CMT_FRAME "Render frames automatically"
|
||||||
#define CMT_ARGV_IS_URL "Treat argument without scheme as URL"
|
#define CMT_ARGV_IS_URL "Treat argument without scheme as URL"
|
||||||
#define CMT_TSELF "Use _self as default target"
|
#define CMT_TSELF "Use _self as default target"
|
||||||
|
#define CMT_OPEN_TAB_BLANK "Open link on new tab if target is _blank or _new"
|
||||||
#define CMT_DISPLINK "Display link URL automatically"
|
#define CMT_DISPLINK "Display link URL automatically"
|
||||||
#define CMT_DISPLINEINFO "Display current line number"
|
#define CMT_DISPLINEINFO "Display current line number"
|
||||||
#define CMT_DISP_IMAGE "Display inline images"
|
#define CMT_DISP_IMAGE "Display inline images"
|
||||||
@@ -244,6 +247,7 @@ static char *config_file = NULL;
|
|||||||
#define CMT_PDROOT "Directory corresponding to /~user"
|
#define CMT_PDROOT "Directory corresponding to /~user"
|
||||||
#define CMT_CGIBIN "Directory corresponding to /cgi-bin"
|
#define CMT_CGIBIN "Directory corresponding to /cgi-bin"
|
||||||
#define CMT_CONFIRM_QQ "Confirm when quitting with q"
|
#define CMT_CONFIRM_QQ "Confirm when quitting with q"
|
||||||
|
#define CMT_CLOSE_TAB_BACK "Close tab if buffer is last when back"
|
||||||
#ifdef USE_MARK
|
#ifdef USE_MARK
|
||||||
#define CMT_USE_MARK "Enable mark operations"
|
#define CMT_USE_MARK "Enable mark operations"
|
||||||
#endif
|
#endif
|
||||||
@@ -463,6 +467,8 @@ struct param_ptr params1[] = {
|
|||||||
#endif /* JP_CHARSET */
|
#endif /* JP_CHARSET */
|
||||||
{"frame", P_CHARINT, PI_ONOFF, (void *)&RenderFrame, CMT_FRAME, NULL},
|
{"frame", P_CHARINT, PI_ONOFF, (void *)&RenderFrame, CMT_FRAME, NULL},
|
||||||
{"target_self", P_CHARINT, PI_ONOFF, (void *)&TargetSelf, CMT_TSELF, NULL},
|
{"target_self", P_CHARINT, PI_ONOFF, (void *)&TargetSelf, CMT_TSELF, NULL},
|
||||||
|
{"open_tab_blank", P_INT, PI_ONOFF, (void *)&open_tab_blank,
|
||||||
|
CMT_OPEN_TAB_BLANK, NULL},
|
||||||
{"display_link", P_INT, PI_ONOFF, (void *)&displayLink, CMT_DISPLINK,
|
{"display_link", P_INT, PI_ONOFF, (void *)&displayLink, CMT_DISPLINK,
|
||||||
NULL},
|
NULL},
|
||||||
{"display_lineinfo", P_INT, PI_ONOFF, (void *)&displayLineInfo,
|
{"display_lineinfo", P_INT, PI_ONOFF, (void *)&displayLineInfo,
|
||||||
@@ -551,6 +557,8 @@ struct param_ptr params3[] = {
|
|||||||
#endif /* USE_HISTORY */
|
#endif /* USE_HISTORY */
|
||||||
{"confirm_qq", P_INT, PI_ONOFF, (void *)&confirm_on_quit, CMT_CONFIRM_QQ,
|
{"confirm_qq", P_INT, PI_ONOFF, (void *)&confirm_on_quit, CMT_CONFIRM_QQ,
|
||||||
NULL},
|
NULL},
|
||||||
|
{"close_tab_back", P_INT, PI_ONOFF, (void *)&close_tab_back,
|
||||||
|
CMT_CLOSE_TAB_BACK, NULL},
|
||||||
#ifdef USE_MARK
|
#ifdef USE_MARK
|
||||||
{"mark", P_INT, PI_ONOFF, (void *)&use_mark, CMT_USE_MARK, NULL},
|
{"mark", P_INT, PI_ONOFF, (void *)&use_mark, CMT_USE_MARK, NULL},
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user