[w3m-dev 03478] mouse action configuration
* display.c (displayBuffer): mouse_menu -> mouse_action.menu_str mouse_action.lastline_str (redrawNLine): mouse_menu -> mouse_action.menu_str * fm.h (MouseMenuMap): deleted (MouseActionMap): added (MouseAction): added (mouse_action): added * func.c (default_mouse_action): added (setMouseAction0): added (setMouseAction1): added (setMouseAction2): added (initMouseMenu): deleted (initMouseAction): added * funcname.tab (CLOSE_TAB_MOUSE): added (MENU_MOUSE): added (MOVE_MOUSE): added (TAB_MOUSE): added * main.c (main): initMouseMenu() -> initMouseAction() mouse_menu -> mouse_action (posTab): mouse_menu -> mouse_action check y > LastTab->y (mouse_menu_action): deleted (do_mouse_action): added (process_mouse): mouse_menu -> mouse_action do_mouse_action() (movMs): added (menuMs): added (tabMs): added (closeTMs): added (reinit): initMouseMenu() -> initMouseAction() resource: MOUSE_MENU -> MOUSE (calcTabPos): mouse_menu -> mouse_action * menu.c (mainMn): mouse_menu -> mouse_action (selMn): mouse_menu -> mouse_action (tabMn): mouse_menu -> mouse_action (initMenu): add SelectTag to w3mMenuList * proto.h (movMs): added (menuMs): added (tabMs): added (closeTMs): added (initMouseMenu): deleted (initMouseAction): added * rc.c (sync_with_option): initMouseMenu() -> initMouseAction() * doc/README.func (CLOSE_TAB_MOUSE): added (MENU_MOUSE): added (MOVE_MOUSE): added (TAB_MOUSE): added * doc-jp/README.func (CLOSE_TAB_MOUSE): added (MENU_MOUSE): added (MOVE_MOUSE): added (TAB_MOUSE): added From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
@@ -1,3 +1,58 @@
|
||||
2002-11-26 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||
|
||||
* [w3m-dev 03478] mouse action configuration
|
||||
* display.c (displayBuffer): mouse_menu -> mouse_action.menu_str
|
||||
mouse_action.lastline_str
|
||||
(redrawNLine): mouse_menu -> mouse_action.menu_str
|
||||
* fm.h (MouseMenuMap): deleted
|
||||
(MouseActionMap): added
|
||||
(MouseAction): added
|
||||
(mouse_action): added
|
||||
* func.c (default_mouse_action): added
|
||||
(setMouseAction0): added
|
||||
(setMouseAction1): added
|
||||
(setMouseAction2): added
|
||||
(initMouseMenu): deleted
|
||||
(initMouseAction): added
|
||||
* funcname.tab (CLOSE_TAB_MOUSE): added
|
||||
(MENU_MOUSE): added
|
||||
(MOVE_MOUSE): added
|
||||
(TAB_MOUSE): added
|
||||
* main.c (main): initMouseMenu() -> initMouseAction()
|
||||
mouse_menu -> mouse_action
|
||||
(posTab): mouse_menu -> mouse_action
|
||||
check y > LastTab->y
|
||||
(mouse_menu_action): deleted
|
||||
(do_mouse_action): added
|
||||
(process_mouse): mouse_menu -> mouse_action
|
||||
do_mouse_action()
|
||||
(movMs): added
|
||||
(menuMs): added
|
||||
(tabMs): added
|
||||
(closeTMs): added
|
||||
(reinit): initMouseMenu() -> initMouseAction()
|
||||
resource: MOUSE_MENU -> MOUSE
|
||||
(calcTabPos): mouse_menu -> mouse_action
|
||||
* menu.c (mainMn): mouse_menu -> mouse_action
|
||||
(selMn): mouse_menu -> mouse_action
|
||||
(tabMn): mouse_menu -> mouse_action
|
||||
(initMenu): add SelectTag to w3mMenuList
|
||||
* proto.h (movMs): added
|
||||
(menuMs): added
|
||||
(tabMs): added
|
||||
(closeTMs): added
|
||||
(initMouseMenu): deleted
|
||||
(initMouseAction): added
|
||||
* rc.c (sync_with_option): initMouseMenu() -> initMouseAction()
|
||||
* doc/README.func (CLOSE_TAB_MOUSE): added
|
||||
(MENU_MOUSE): added
|
||||
(MOVE_MOUSE): added
|
||||
(TAB_MOUSE): added
|
||||
* doc-jp/README.func (CLOSE_TAB_MOUSE): added
|
||||
(MENU_MOUSE): added
|
||||
(MOVE_MOUSE): added
|
||||
(TAB_MOUSE): added
|
||||
|
||||
2002-11-26 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||
|
||||
* [w3m-dev 03476] Re: Bug#170506: w3m: Unable to use mozilla bugzilla
|
||||
@@ -5077,4 +5132,4 @@ a * [w3m-dev 03276] compile error on EWS4800
|
||||
* release-0-2-1
|
||||
* import w3m-0.2.1
|
||||
|
||||
$Id: ChangeLog,v 1.552 2002/11/25 16:39:52 ukai Exp $
|
||||
$Id: ChangeLog,v 1.553 2002/11/25 16:57:16 ukai Exp $
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: display.c,v 1.38 2002/11/22 15:43:13 ukai Exp $ */
|
||||
/* $Id: display.c,v 1.39 2002/11/25 16:57:16 ukai Exp $ */
|
||||
#include <signal.h>
|
||||
#include "fm.h"
|
||||
|
||||
@@ -254,7 +254,11 @@ displayBuffer(Buffer *buf, int mode)
|
||||
else
|
||||
buf->rootX = 0;
|
||||
buf->COLS = COLS - buf->rootX;
|
||||
if (nTab > 1 || mouse_menu) {
|
||||
if (nTab > 1
|
||||
#ifdef USE_MOUSE
|
||||
|| mouse_action.menu_str
|
||||
#endif
|
||||
) {
|
||||
ny = LastTab->y + 2;
|
||||
if (ny > LASTLINE)
|
||||
ny = LASTLINE;
|
||||
@@ -318,12 +322,8 @@ displayBuffer(Buffer *buf, int mode)
|
||||
#endif
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
if (use_mouse)
|
||||
#if LANG == JA
|
||||
msg = Strnew_charp("¢ã¢¬¢");
|
||||
#else /* LANG != JA */
|
||||
msg = Strnew_charp("<=UpDn ");
|
||||
#endif /* LANG != JA */
|
||||
if (use_mouse && mouse_action.lastline_str)
|
||||
msg = Strnew_charp(mouse_action.lastline_str);
|
||||
else
|
||||
#endif /* not USE_MOUSE */
|
||||
msg = Strnew();
|
||||
@@ -445,14 +445,18 @@ redrawNLine(Buffer *buf, int n)
|
||||
#endif /* USE_BG_COLOR */
|
||||
}
|
||||
#endif /* USE_COLOR */
|
||||
if (nTab > 1 || mouse_menu) {
|
||||
if (nTab > 1
|
||||
#ifdef USE_MOUSE
|
||||
|| mouse_action.menu_str
|
||||
#endif
|
||||
) {
|
||||
TabBuffer *t;
|
||||
int l;
|
||||
|
||||
move(0, 0);
|
||||
#ifdef USE_MOUSE
|
||||
if (mouse_menu && mouse_menu->str)
|
||||
addstr(mouse_menu->str);
|
||||
if (mouse_action.menu_str)
|
||||
addstr(mouse_action.menu_str);
|
||||
#endif
|
||||
clrtoeolx();
|
||||
for (t = FirstTab; t; t = t->nextTab) {
|
||||
|
||||
@@ -7,6 +7,7 @@ BOOKMARK
|
||||
CENTER_H カーソルのある位置を行の中央に移動します
|
||||
CENTER_V カーソルのある行を画面の中央に移動します
|
||||
CLOSE_TAB 現在のタブを閉じます
|
||||
CLOSE_TAB_MOUSE マウスカーソルの位置のタブを閉じます(マウス操作用)
|
||||
COMMAND w3mのコマンドを実行します
|
||||
COOKIE クッキー一覧を表示します
|
||||
DEFINE_KEY キー入力とコマンドの対応を定義します
|
||||
@@ -49,11 +50,13 @@ MARK_MID Message-ID
|
||||
MARK_URL URL風の文字列をリンクにします
|
||||
MARK_WORD カーソルのある語をリンクにします
|
||||
MENU メニューを立ち上げます
|
||||
MENU_MOUSE マウスカーソルの位置でメニューを立ち上げます(マウス操作用)
|
||||
MOUSE_TOGGLE マウスの有効/無効をトグルする
|
||||
MOVE_DOWN カーソルを下に移動します(改ページ時には半ページスクロール)
|
||||
MOVE_DOWN1 カーソルを下に移動します(改ページ時には1行スクロール)
|
||||
MOVE_LEFT カーソルを左に移動します(左端の場合には半画面分シフト)
|
||||
MOVE_LEFT1 カーソルを左に移動します(左端の場合には1文字分シフト)
|
||||
MOVE_MOUSE カーソルをマウスカーソルの位置に移動します(マウス操作用)
|
||||
MOVE_RIGHT カーソルを右に移動します(右端の場合には半画面分シフト)
|
||||
MOVE_RIGHT1 カーソルを右に移動します(右端の場合には1文字分シフト)
|
||||
MOVE_UP カーソルを上に移動します(改ページ時には半ページスクロール)
|
||||
@@ -118,6 +121,7 @@ TAB_GOTO_RELATIVE
|
||||
TAB_LEFT 現在のタブを左に移動します
|
||||
TAB_LINK リンクが指す先の文書を新しいタブで開きます
|
||||
TAB_MENU タブ選択メニューを立ち上げます
|
||||
TAB_MOUSE マウスカーソルの位置のタブに移動します(マウス操作用)
|
||||
TAB_RIGHT 現在のタブを右に移動します
|
||||
UP 画面を1行上にスクロールします
|
||||
VERSION w3m のバージョンを表示します
|
||||
|
||||
@@ -7,6 +7,7 @@ BOOKMARK Read bookmark
|
||||
CENTER_H Move to the center line
|
||||
CENTER_V Move to the center column
|
||||
CLOSE_TAB Close current tab
|
||||
CLOSE_TAB_MOUSE Close tab on mouse cursor (for mouse action)
|
||||
COMMAND Execute w3m command(s)
|
||||
COOKIE View cookie list
|
||||
DEFINE_KEY Define a binding between a key stroke and a user command
|
||||
@@ -49,11 +50,13 @@ MARK_MID Mark Message-ID-like strings as anchors
|
||||
MARK_URL Mark URL-like strings as anchors
|
||||
MARK_WORD Mark current word as anchor
|
||||
MENU Popup menu
|
||||
MENU_MOUSE Popup menu at mouse cursor (for mouse action)
|
||||
MOUSE_TOGGLE Toggle activity of mouse
|
||||
MOVE_DOWN Move cursor down (a half screen scroll at the end of screen)
|
||||
MOVE_DOWN1 Move cursor down (1 line scroll at the end of screen)
|
||||
MOVE_LEFT Move cursor left (a half screen shift at the left edge)
|
||||
MOVE_LEFT1 Move cursor left (1 columns shift at the left edge)
|
||||
MOVE_MOUSE Move cursor to mouse cursor (for mouse action)
|
||||
MOVE_RIGHT Move cursor right (a half screen shift at the right edge)
|
||||
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)
|
||||
@@ -118,6 +121,7 @@ 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_MOUSE Move to tab on mouse cursor (for mouse action)
|
||||
TAB_RIGHT Move current tab right
|
||||
UP Scroll up one line
|
||||
VERSION Display version of w3m
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: fm.h,v 1.87 2002/11/22 15:43:14 ukai Exp $ */
|
||||
/* $Id: fm.h,v 1.88 2002/11/25 16:57:17 ukai Exp $ */
|
||||
/*
|
||||
* w3m: WWW wo Miru utility
|
||||
*
|
||||
@@ -993,22 +993,27 @@ global int reverse_mouse init(FALSE);
|
||||
global int relative_wheel_scroll init(FALSE);
|
||||
global int fixed_wheel_scroll_count init(5);
|
||||
global int relative_wheel_scroll_ratio init(30);
|
||||
typedef struct _MouseMenuMap {
|
||||
typedef struct _MouseActionMap {
|
||||
void (*func) ();
|
||||
char *data;
|
||||
} MouseMenuMap;
|
||||
typedef struct _MouseMenu {
|
||||
char *str;
|
||||
int width;
|
||||
} MouseActionMap;
|
||||
typedef struct _MouseAction {
|
||||
char *menu_str;
|
||||
char *lastline_str;
|
||||
int menu_width;
|
||||
int lastline_width;
|
||||
int in_action;
|
||||
int cursorX;
|
||||
int cursorY;
|
||||
MouseMenuMap *map[3];
|
||||
} MouseMenu;
|
||||
global MouseMenu *mouse_menu init(NULL);
|
||||
MouseActionMap default_map[3];
|
||||
MouseActionMap anchor_map[3];
|
||||
MouseActionMap active_map[3];
|
||||
MouseActionMap tab_map[3];
|
||||
MouseActionMap *menu_map[3];
|
||||
MouseActionMap *lastline_map[3];
|
||||
} MouseAction;
|
||||
global MouseAction mouse_action;
|
||||
#define LIMIT_MOUSE_MENU 100
|
||||
#else
|
||||
#define mouse_menu NULL
|
||||
#endif /* USE_MOUSE */
|
||||
|
||||
#ifdef USE_COOKIE
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: func.c,v 1.14 2002/11/22 15:57:29 ukai Exp $ */
|
||||
/* $Id: func.c,v 1.15 2002/11/25 16:57:17 ukai Exp $ */
|
||||
/*
|
||||
* w3m func.c
|
||||
*/
|
||||
@@ -322,15 +322,125 @@ getQWord(char **str)
|
||||
}
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
static MouseAction default_mouse_action = {
|
||||
NULL,
|
||||
#if LANG == JA
|
||||
"¢ã¢¬¢",
|
||||
#else
|
||||
"<=UpDn",
|
||||
#endif
|
||||
0, 6, FALSE, 0, 0,
|
||||
{ { movMs, NULL }, { backBf, NULL }, { menuMs, NULL } }, /* default */
|
||||
{ { NULL, NULL }, { NULL, NULL }, { NULL, NULL } }, /* anchor */
|
||||
{ { followA, NULL }, { NULL, NULL }, { NULL, NULL } }, /* active */
|
||||
{ { tabMs, NULL }, { closeTMs, NULL }, { NULL, NULL } }, /* tab */
|
||||
{ NULL, NULL, NULL }, /* menu */
|
||||
{ NULL, NULL, NULL } /* lastline */
|
||||
};
|
||||
static MouseActionMap default_lastline_action[6] = {
|
||||
{ backBf, NULL },
|
||||
{ backBf, NULL },
|
||||
{ pgBack, NULL },
|
||||
{ pgBack, NULL },
|
||||
{ pgFore, NULL },
|
||||
{ pgFore, NULL }
|
||||
};
|
||||
|
||||
static void
|
||||
setMouseAction0(char **str, int *width, MouseActionMap **map, char *p)
|
||||
{
|
||||
char *s;
|
||||
int b, w, x;
|
||||
|
||||
s = getQWord(&p);
|
||||
if (!*s) {
|
||||
*str = NULL;
|
||||
width = 0;
|
||||
for (b = 0; b < 3; b++)
|
||||
map[b] = NULL;
|
||||
return;
|
||||
}
|
||||
w = *width;
|
||||
*str = s;
|
||||
*width = strlen(s);
|
||||
if (*width >= LIMIT_MOUSE_MENU)
|
||||
*width = LIMIT_MOUSE_MENU;
|
||||
if (*width <= w)
|
||||
return;
|
||||
for (b = 0; b < 3; b++) {
|
||||
if (!map[b])
|
||||
continue;
|
||||
map[b] = New_Reuse(MouseActionMap, map[b], *width);
|
||||
for (x = w + 1; x < *width; x++) {
|
||||
map[b][x].func = NULL;
|
||||
map[b][x].data = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
setMouseAction1(MouseActionMap **map, int width, char *p)
|
||||
{
|
||||
char *s;
|
||||
int x, x2, f;
|
||||
|
||||
if (!*map) {
|
||||
*map = New_N(MouseActionMap, width);
|
||||
for (x = 0; x < width; x++) {
|
||||
(*map)[x].func = NULL;
|
||||
(*map)[x].data = NULL;
|
||||
}
|
||||
}
|
||||
s = getWord(&p);
|
||||
x = atoi(s);
|
||||
if (!(IS_DIGIT(*s) && x >= 0 && x < width))
|
||||
return; /* error */
|
||||
s = getWord(&p);
|
||||
x2 = atoi(s);
|
||||
if (!(IS_DIGIT(*s) && x2 >= 0 && x2 < width))
|
||||
return; /* error */
|
||||
s = getWord(&p);
|
||||
f = getFuncList(s);
|
||||
s = getQWord(&p);
|
||||
if (!*s)
|
||||
s = NULL;
|
||||
for (; x <= x2; x++) {
|
||||
(*map)[x].func = (f >= 0) ? w3mFuncList[f].func : NULL;
|
||||
(*map)[x].data = s;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
setMouseAction2(MouseActionMap *map, char *p)
|
||||
{
|
||||
char *s;
|
||||
int f;
|
||||
|
||||
s = getWord(&p);
|
||||
f = getFuncList(s);
|
||||
s = getQWord(&p);
|
||||
if (!*s)
|
||||
s = NULL;
|
||||
map->func = (f >= 0) ? w3mFuncList[f].func : NULL;
|
||||
map->data = s;
|
||||
}
|
||||
|
||||
void
|
||||
initMouseMenu(void)
|
||||
initMouseAction(void)
|
||||
{
|
||||
FILE *mf;
|
||||
Str line;
|
||||
char *p, *s;
|
||||
int f, b, x, x2;
|
||||
int b, x, width;
|
||||
MouseActionMap *map;
|
||||
|
||||
bcopy((void *)&default_mouse_action, (void *)&mouse_action,
|
||||
sizeof(default_mouse_action));
|
||||
mouse_action.lastline_map[0] = New_N(MouseActionMap, 6);
|
||||
bcopy((void *)&default_lastline_action,
|
||||
(void *)mouse_action.lastline_map[0],
|
||||
sizeof(default_lastline_action));
|
||||
|
||||
mouse_menu = NULL;
|
||||
if ((mf = fopen(rcFile(MOUSE_FILE), "rt")) == NULL)
|
||||
return;
|
||||
|
||||
@@ -345,50 +455,47 @@ initMouseMenu(void)
|
||||
if (*s == '#') /* comment */
|
||||
continue;
|
||||
if (!strcmp(s, "menu")) {
|
||||
s = getQWord(&p);
|
||||
if (!*s)
|
||||
continue; /* error */
|
||||
mouse_menu = New(MouseMenu);
|
||||
mouse_menu->str = s;
|
||||
mouse_menu->width = strlen(s);
|
||||
mouse_menu->in_action = FALSE;
|
||||
if (mouse_menu->width >= LIMIT_MOUSE_MENU)
|
||||
mouse_menu->width = LIMIT_MOUSE_MENU;
|
||||
for (b = 0; b < 3; b++) {
|
||||
mouse_menu->map[b] = New_N(MouseMenuMap, mouse_menu->width);
|
||||
for (x = 0; x < mouse_menu->width; x++) {
|
||||
mouse_menu->map[b][x].func = NULL;
|
||||
mouse_menu->map[b][x].data = NULL;
|
||||
}
|
||||
}
|
||||
setMouseAction0(&mouse_action.menu_str, &mouse_action.menu_width,
|
||||
mouse_action.menu_map, p);
|
||||
continue;
|
||||
}
|
||||
else if (!strcmp(s, "lastline")) {
|
||||
setMouseAction0(&mouse_action.lastline_str,
|
||||
&mouse_action.lastline_width,
|
||||
mouse_action.lastline_map, p);
|
||||
continue;
|
||||
}
|
||||
if (!mouse_menu)
|
||||
continue; /* "menu" is not set */
|
||||
if (strcmp(s, "button"))
|
||||
continue; /* error */
|
||||
s = getWord(&p);
|
||||
b = atoi(s);
|
||||
if (!(b >= 1 && b <= 3))
|
||||
b = atoi(s) - 1;
|
||||
if (!(b >= 0 && b <= 2))
|
||||
continue; /* error */
|
||||
s = getWord(&p);
|
||||
x = atoi(s);
|
||||
if (!(IS_DIGIT(*s) && x >= 0 && x < mouse_menu->width))
|
||||
continue; /* error */
|
||||
s = getWord(&p);
|
||||
x2 = atoi(s);
|
||||
if (!(IS_DIGIT(*s) && x2 >= 0 && x2 < mouse_menu->width))
|
||||
continue; /* error */
|
||||
s = getWord(&p);
|
||||
f = getFuncList(s);
|
||||
if (f < 0)
|
||||
continue; /* error */
|
||||
s = getQWord(&p);
|
||||
if (!*s)
|
||||
s = NULL;
|
||||
for (; x <= x2; x++) {
|
||||
mouse_menu->map[b - 1][x].func = w3mFuncList[f].func;
|
||||
mouse_menu->map[b - 1][x].data = s;
|
||||
SKIP_BLANKS(p);
|
||||
if (IS_DIGIT(*p))
|
||||
s = "menu";
|
||||
else
|
||||
s = getWord(&p);
|
||||
if (!strcasecmp(s, "menu")) {
|
||||
if (!mouse_action.menu_str)
|
||||
continue;
|
||||
setMouseAction1(&mouse_action.menu_map[b], mouse_action.menu_width,
|
||||
p);
|
||||
}
|
||||
else if (!strcasecmp(s, "lastline")) {
|
||||
if (!mouse_action.lastline_str)
|
||||
continue;
|
||||
setMouseAction1(&mouse_action.lastline_map[b],
|
||||
mouse_action.lastline_width, p);
|
||||
}
|
||||
else if (!strcasecmp(s, "default"))
|
||||
setMouseAction2(&mouse_action.default_map[b], p);
|
||||
else if (!strcasecmp(s, "anchor"))
|
||||
setMouseAction2(&mouse_action.anchor_map[b], p);
|
||||
else if (!strcasecmp(s, "active"))
|
||||
setMouseAction2(&mouse_action.active_map[b], p);
|
||||
else if (!strcasecmp(s, "tab"))
|
||||
setMouseAction2(&mouse_action.tab_map[b], p);
|
||||
}
|
||||
fclose(mf);
|
||||
}
|
||||
|
||||
+5
-1
@@ -1,4 +1,4 @@
|
||||
# $Id: funcname.tab,v 1.14 2002/11/21 16:15:57 ukai Exp $
|
||||
# $Id: funcname.tab,v 1.15 2002/11/25 16:57:17 ukai Exp $
|
||||
# macro name function name
|
||||
#----------------------------
|
||||
@@@ nulcmd
|
||||
@@ -11,6 +11,7 @@ BOOKMARK ldBmark
|
||||
CENTER_H ctrCsrH
|
||||
CENTER_V ctrCsrV
|
||||
CLOSE_TAB closeT
|
||||
CLOSE_TAB_MOUSE closeTMs
|
||||
COMMAND execCmd
|
||||
COOKIE cooLst
|
||||
DEFINE_KEY defKey
|
||||
@@ -54,12 +55,14 @@ MARK_MID chkNMID
|
||||
MARK_URL chkURL
|
||||
MARK_WORD chkWORD
|
||||
MENU mainMn
|
||||
MENU_MOUSE menuMs
|
||||
MOUSE mouse
|
||||
MOUSE_TOGGLE msToggle
|
||||
MOVE_DOWN movD
|
||||
MOVE_DOWN1 movD1
|
||||
MOVE_LEFT movL
|
||||
MOVE_LEFT1 movL1
|
||||
MOVE_MOUSE movMs
|
||||
MOVE_RIGHT movR
|
||||
MOVE_RIGHT1 movR1
|
||||
MOVE_UP movU
|
||||
@@ -126,6 +129,7 @@ TAB_GOTO_RELATIVE tabrURL
|
||||
TAB_LEFT tabL
|
||||
TAB_LINK tabA
|
||||
TAB_MENU tabMn
|
||||
TAB_MOUSE tabMs
|
||||
TAB_RIGHT tabR
|
||||
UP lup1
|
||||
VERSION dispVer
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: main.c,v 1.152 2002/11/22 15:43:14 ukai Exp $ */
|
||||
/* $Id: main.c,v 1.153 2002/11/25 16:57:17 ukai Exp $ */
|
||||
#define MAINPROGRAM
|
||||
#include "fm.h"
|
||||
#include <signal.h>
|
||||
@@ -754,7 +754,7 @@ main(int argc, char **argv, char **envp)
|
||||
#endif /* not SIGWINCH */
|
||||
initKeymap(TRUE);
|
||||
#ifdef USE_MOUSE
|
||||
initMouseMenu();
|
||||
initMouseAction();
|
||||
#endif /* MOUSE */
|
||||
#ifdef USE_MENU
|
||||
initMenu();
|
||||
@@ -1017,8 +1017,7 @@ main(int argc, char **argv, char **envp)
|
||||
CurrentKeyData = NULL;
|
||||
/* get keypress event */
|
||||
#ifdef USE_MOUSE
|
||||
if (mouse_menu)
|
||||
mouse_menu->in_action = FALSE;
|
||||
mouse_action.in_action = FALSE;
|
||||
if (use_mouse)
|
||||
mouse_active();
|
||||
#endif /* USE_MOUSE */
|
||||
@@ -4806,8 +4805,10 @@ posTab(int x, int y)
|
||||
{
|
||||
TabBuffer *tab;
|
||||
|
||||
if (mouse_menu && x < mouse_menu->width && y == 0)
|
||||
if (mouse_action.menu_str && x < mouse_action.menu_width && y == 0)
|
||||
return NO_TABBUFFER;
|
||||
if (y > LastTab->y)
|
||||
return NULL;
|
||||
for (tab = FirstTab; tab; tab = tab->nextTab) {
|
||||
if (tab->x1 <= x && x <= tab->x2 && tab->y == y)
|
||||
return tab;
|
||||
@@ -4816,10 +4817,14 @@ posTab(int x, int y)
|
||||
}
|
||||
|
||||
static void
|
||||
mouse_menu_action(int btn, int x, int y)
|
||||
do_mouse_action(int btn, int x, int y)
|
||||
{
|
||||
if (!mouse_menu)
|
||||
return;
|
||||
MouseActionMap *map = NULL;
|
||||
int ny = -1;
|
||||
|
||||
if (nTab > 1 || mouse_action.menu_str)
|
||||
ny = LastTab->y + 1;
|
||||
|
||||
switch (btn) {
|
||||
case MOUSE_BTN1_DOWN:
|
||||
btn = 0;
|
||||
@@ -4833,14 +4838,54 @@ mouse_menu_action(int btn, int x, int y)
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (x >= 0 && x < mouse_menu->width && mouse_menu->map[btn][x].func) {
|
||||
mouse_menu->in_action = TRUE;
|
||||
mouse_menu->cursorX = x;
|
||||
mouse_menu->cursorY = y;
|
||||
if (y < ny) {
|
||||
if (mouse_action.menu_str && x >= 0 && x < mouse_action.menu_width) {
|
||||
if (mouse_action.menu_map[btn])
|
||||
map = &mouse_action.menu_map[btn][x];
|
||||
}
|
||||
else
|
||||
map = &mouse_action.tab_map[btn];
|
||||
}
|
||||
else if (y == LASTLINE) {
|
||||
if (mouse_action.lastline_str && x >= 0 &&
|
||||
x < mouse_action.lastline_width) {
|
||||
if (mouse_action.lastline_map[btn])
|
||||
map = &mouse_action.lastline_map[btn][x];
|
||||
}
|
||||
}
|
||||
else if (y > ny) {
|
||||
if (y == Currentbuf->cursorY + Currentbuf->rootY &&
|
||||
(x == Currentbuf->cursorX + Currentbuf->rootX
|
||||
#ifdef JP_CHARSET
|
||||
|| (Currentbuf->currentLine != NULL &&
|
||||
(Currentbuf->currentLine->propBuf[Currentbuf->pos] & PC_KANJI1)
|
||||
&& x == Currentbuf->cursorX + Currentbuf->rootX + 1)
|
||||
#endif /* JP_CHARSET */
|
||||
)) {
|
||||
if (retrieveCurrentAnchor(Currentbuf) ||
|
||||
retrieveCurrentForm(Currentbuf))
|
||||
map = &mouse_action.active_map[btn];
|
||||
}
|
||||
else {
|
||||
int cx = Currentbuf->cursorX, cy = Currentbuf->cursorY;
|
||||
cursorXY(Currentbuf, x - Currentbuf->rootX,
|
||||
y - Currentbuf->rootY);
|
||||
if (retrieveCurrentAnchor(Currentbuf) ||
|
||||
retrieveCurrentForm(Currentbuf))
|
||||
map = &mouse_action.anchor_map[btn];
|
||||
cursorXY(Currentbuf, cx, cy);
|
||||
}
|
||||
}
|
||||
if (!(map && map->func))
|
||||
map = &mouse_action.default_map[btn];
|
||||
if (map && map->func) {
|
||||
mouse_action.in_action = TRUE;
|
||||
mouse_action.cursorX = x;
|
||||
mouse_action.cursorY = y;
|
||||
CurrentKey = -1;
|
||||
CurrentKeyData = NULL;
|
||||
CurrentCmdData = mouse_menu->map[btn][x].data;
|
||||
(*mouse_menu->map[btn][x].func) ();
|
||||
CurrentCmdData = map->data;
|
||||
(*map->func) ();
|
||||
CurrentCmdData = NULL;
|
||||
}
|
||||
}
|
||||
@@ -4851,34 +4896,17 @@ process_mouse(int btn, int x, int y)
|
||||
int delta_x, delta_y, i;
|
||||
static int press_btn = MOUSE_BTN_RESET, press_x, press_y;
|
||||
TabBuffer *t;
|
||||
int ny = 0;
|
||||
int ny = -1;
|
||||
|
||||
if (nTab > 1 || mouse_menu)
|
||||
if (nTab > 1 || mouse_action.menu_str)
|
||||
ny = LastTab->y + 1;
|
||||
if (btn == MOUSE_BTN_UP) {
|
||||
switch (press_btn) {
|
||||
case MOUSE_BTN1_DOWN:
|
||||
if (ny && y < ny) {
|
||||
if (press_y == y && press_x == x) {
|
||||
#if 0
|
||||
if (y == 0 && x >= COLS - 2) {
|
||||
deleteTab(CurrentTab);
|
||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
t = posTab(x, y);
|
||||
if (t == NULL)
|
||||
return;
|
||||
if (t == NO_TABBUFFER) {
|
||||
mouse_menu_action(press_btn, x, y);
|
||||
return;
|
||||
}
|
||||
CurrentTab = t;
|
||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||
return;
|
||||
}
|
||||
else if (press_y < ny) {
|
||||
if (press_y == y && press_x == x)
|
||||
do_mouse_action(press_btn, x, y);
|
||||
else if (ny > 0 && y < ny) {
|
||||
if (press_y < ny) {
|
||||
moveTab(posTab(press_x, press_y), posTab(x, y),
|
||||
(press_y == y) ? (press_x < x) : (press_y < y));
|
||||
return;
|
||||
@@ -4911,7 +4939,7 @@ process_mouse(int btn, int x, int y)
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (press_x != x || press_y != y) {
|
||||
else {
|
||||
delta_x = x - press_x;
|
||||
delta_y = y - press_y;
|
||||
|
||||
@@ -4940,77 +4968,11 @@ process_mouse(int btn, int x, int y)
|
||||
col1R();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (y == LASTLINE) {
|
||||
switch (x) {
|
||||
case 0:
|
||||
case 1:
|
||||
backBf();
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
pgBack();
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
pgFore();
|
||||
break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (y == Currentbuf->cursorY + Currentbuf->rootY &&
|
||||
(x == Currentbuf->cursorX + Currentbuf->rootX
|
||||
#ifdef JP_CHARSET
|
||||
|| (Currentbuf->currentLine != NULL &&
|
||||
(Currentbuf->currentLine->
|
||||
propBuf[Currentbuf->pos] & PC_KANJI1)
|
||||
&& x == Currentbuf->cursorX + Currentbuf->rootX + 1)
|
||||
#endif /* JP_CHARSET */
|
||||
)) {
|
||||
followA();
|
||||
return;
|
||||
}
|
||||
if (x >= Currentbuf->rootX)
|
||||
cursorXY(Currentbuf, x - Currentbuf->rootX,
|
||||
y - Currentbuf->rootY);
|
||||
displayBuffer(Currentbuf, B_NORMAL);
|
||||
|
||||
}
|
||||
break;
|
||||
case MOUSE_BTN2_DOWN:
|
||||
if (ny && y < ny) {
|
||||
if (press_y == y && press_x == x) {
|
||||
t = posTab(x, y);
|
||||
if (t == NULL)
|
||||
return;
|
||||
if (t == NO_TABBUFFER) {
|
||||
mouse_menu_action(press_btn, x, y);
|
||||
return;
|
||||
}
|
||||
deleteTab(t);
|
||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||
}
|
||||
return;
|
||||
}
|
||||
backBf();
|
||||
break;
|
||||
case MOUSE_BTN3_DOWN:
|
||||
if (ny && y < ny) {
|
||||
if (press_y == y && press_x == x) {
|
||||
t = posTab(x, y);
|
||||
if (t == NO_TABBUFFER) {
|
||||
mouse_menu_action(press_btn, x, y);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef USE_MENU
|
||||
if (x >= Currentbuf->rootX && y > ny)
|
||||
cursorXY(Currentbuf, x - Currentbuf->rootX,
|
||||
y - Currentbuf->rootY);
|
||||
onA();
|
||||
mainMenu(x, y);
|
||||
#endif /* USE_MENU */
|
||||
if (press_y == y && press_x == x)
|
||||
do_mouse_action(press_btn, x, y);
|
||||
break;
|
||||
case MOUSE_BTN4_DOWN_RXVT:
|
||||
for (i = 0; i < mouse_scroll_line(); i++)
|
||||
@@ -5131,6 +5093,70 @@ sysm_process_mouse(int x, int y, int nbs, int obs)
|
||||
return 0;
|
||||
}
|
||||
#endif /* USE_SYSMOUSE */
|
||||
|
||||
void
|
||||
movMs(void)
|
||||
{
|
||||
if (!mouse_action.in_action)
|
||||
return;
|
||||
if ((nTab > 1 || mouse_action.menu_str) &&
|
||||
mouse_action.cursorY < LastTab->y + 1)
|
||||
return;
|
||||
else if (mouse_action.cursorX >= Currentbuf->rootX &&
|
||||
mouse_action.cursorY < LASTLINE) {
|
||||
cursorXY(Currentbuf, mouse_action.cursorX - Currentbuf->rootX,
|
||||
mouse_action.cursorY - Currentbuf->rootY);
|
||||
onA();
|
||||
}
|
||||
displayBuffer(Currentbuf, B_NORMAL);
|
||||
}
|
||||
|
||||
#ifdef USE_MENU
|
||||
void
|
||||
menuMs(void)
|
||||
{
|
||||
if (!mouse_action.in_action)
|
||||
return;
|
||||
if ((nTab > 1 || mouse_action.menu_str) &&
|
||||
mouse_action.cursorY < LastTab->y + 1)
|
||||
mouse_action.cursorX -= 2;
|
||||
else if (mouse_action.cursorX >= Currentbuf->rootX &&
|
||||
mouse_action.cursorY < LASTLINE) {
|
||||
cursorXY(Currentbuf, mouse_action.cursorX - Currentbuf->rootX,
|
||||
mouse_action.cursorY - Currentbuf->rootY);
|
||||
onA();
|
||||
}
|
||||
mainMn();
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
tabMs(void)
|
||||
{
|
||||
TabBuffer *tab;
|
||||
|
||||
if (!mouse_action.in_action)
|
||||
return;
|
||||
tab = posTab(mouse_action.cursorX, mouse_action.cursorY);
|
||||
if (!tab || tab == NO_TABBUFFER)
|
||||
return;
|
||||
CurrentTab = tab;
|
||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||
}
|
||||
|
||||
void
|
||||
closeTMs(void)
|
||||
{
|
||||
TabBuffer *tab;
|
||||
|
||||
if (!mouse_action.in_action)
|
||||
return;
|
||||
tab = posTab(mouse_action.cursorX, mouse_action.cursorY);
|
||||
if (!tab || tab == NO_TABBUFFER)
|
||||
return;
|
||||
deleteTab(tab);
|
||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||
}
|
||||
#endif /* USE_MOUSE */
|
||||
|
||||
void
|
||||
@@ -5515,7 +5541,7 @@ reinit()
|
||||
#endif
|
||||
initKeymap(TRUE);
|
||||
#ifdef USE_MOUSE
|
||||
initMouseMenu();
|
||||
initMouseAction();
|
||||
#endif
|
||||
#ifdef USE_MENU
|
||||
initMenu();
|
||||
@@ -5547,8 +5573,8 @@ reinit()
|
||||
}
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
if (!strcasecmp(resource, "MOUSE_MENU")) {
|
||||
initMouseMenu();
|
||||
if (!strcasecmp(resource, "MOUSE")) {
|
||||
initMouseAction();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@@ -5674,7 +5700,7 @@ calcTabPos(void)
|
||||
int n1, n2, na, nx, ny, ix, iy;
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
lcol = mouse_menu ? mouse_menu->width : 0;
|
||||
lcol = mouse_action.menu_str ? mouse_action.menu_width : 0;
|
||||
#endif
|
||||
|
||||
if (nTab <= 0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: menu.c,v 1.19 2002/11/22 15:43:14 ukai Exp $ */
|
||||
/* $Id: menu.c,v 1.20 2002/11/25 16:57:17 ukai Exp $ */
|
||||
/*
|
||||
* w3m menu.c
|
||||
*/
|
||||
@@ -1263,9 +1263,9 @@ mainMn(void)
|
||||
menu = w3mMenuList[n].menu;
|
||||
}
|
||||
#ifdef USE_MOUSE
|
||||
if (mouse_menu && mouse_menu->in_action) {
|
||||
x = mouse_menu->cursorX - FRAME_WIDTH - 1;
|
||||
y = mouse_menu->cursorY;
|
||||
if (mouse_action.in_action) {
|
||||
x = mouse_action.cursorX;
|
||||
y = mouse_action.cursorY;
|
||||
}
|
||||
#endif
|
||||
popupMenu(x, y, menu);
|
||||
@@ -1282,9 +1282,9 @@ selMn(void)
|
||||
y = Currentbuf->cursorY + Currentbuf->rootY;
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
if (mouse_menu && mouse_menu->in_action) {
|
||||
x = mouse_menu->cursorX - FRAME_WIDTH - 1;
|
||||
y = mouse_menu->cursorY;
|
||||
if (mouse_action.in_action) {
|
||||
x = mouse_action.cursorX;
|
||||
y = mouse_action.cursorY;
|
||||
}
|
||||
#endif
|
||||
popupMenu(x, y, &SelectMenu);
|
||||
@@ -1427,9 +1427,9 @@ tabMn(void)
|
||||
y = Currentbuf->cursorY + Currentbuf->rootY;
|
||||
|
||||
#ifdef USE_MOUSE
|
||||
if (mouse_menu && mouse_menu->in_action) {
|
||||
x = mouse_menu->cursorX - FRAME_WIDTH - 1;
|
||||
y = mouse_menu->cursorY;
|
||||
if (mouse_action.in_action) {
|
||||
x = mouse_action.cursorX;
|
||||
y = mouse_action.cursorY;
|
||||
}
|
||||
#endif
|
||||
popupMenu(x, y, &SelTabMenu);
|
||||
@@ -1599,7 +1599,10 @@ initMenu(void)
|
||||
w3mMenuList[1].id = "Select";
|
||||
w3mMenuList[1].menu = &SelectMenu;
|
||||
w3mMenuList[1].item = NULL;
|
||||
w3mMenuList[2].id = NULL;
|
||||
w3mMenuList[2].id = "SelectTab";
|
||||
w3mMenuList[2].menu = &SelTabMenu;
|
||||
w3mMenuList[2].item = NULL;
|
||||
w3mMenuList[3].id = NULL;
|
||||
|
||||
if ((mf = fopen(rcFile(MENU_FILE), "rt")) == NULL)
|
||||
goto create_menu;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: proto.h,v 1.61 2002/11/24 16:02:22 ukai Exp $ */
|
||||
/* $Id: proto.h,v 1.62 2002/11/25 16:57:17 ukai Exp $ */
|
||||
/*
|
||||
* This file was automatically generated by version 1.7 of cextract.
|
||||
* Manual editing not recommended.
|
||||
@@ -607,9 +607,21 @@ extern void mouse_end(void);
|
||||
extern void mouse_active(void);
|
||||
extern void mouse_inactive(void);
|
||||
extern void msToggle(void);
|
||||
extern void movMs(void);
|
||||
#ifdef USE_MENU
|
||||
extern void menuMs(void);
|
||||
#else
|
||||
#define menuMs nulcmd
|
||||
#endif
|
||||
extern void tabMs(void);
|
||||
extern void closeTMs(void);
|
||||
#else /* not USE_MOUSE */
|
||||
#define mouse nulcmd
|
||||
#define msToggle nulcmd
|
||||
#define movMs nulcmd
|
||||
#define menuMs nulcmd
|
||||
#define tabMs nulcmd
|
||||
#define closeTMs nulcmd
|
||||
#endif /* not USE_MOUSE */
|
||||
|
||||
#ifdef USE_IMAGE
|
||||
@@ -631,7 +643,7 @@ extern char *getKeyData(int key);
|
||||
extern char *getWord(char **str);
|
||||
extern char *getQWord(char **str);
|
||||
#ifdef USE_MOUSE
|
||||
extern void initMouseMenu(void);
|
||||
extern void initMouseAction(void);
|
||||
#endif
|
||||
|
||||
#ifdef USE_MENU
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $Id: rc.c,v 1.66 2002/11/21 16:31:36 ukai Exp $ */
|
||||
/* $Id: rc.c,v 1.67 2002/11/25 16:57:17 ukai Exp $ */
|
||||
/*
|
||||
* Initialization file etc.
|
||||
*/
|
||||
@@ -1323,7 +1323,7 @@ sync_with_option(void)
|
||||
if (fmInitialized) {
|
||||
initKeymap(FALSE);
|
||||
#ifdef USE_MOUSE
|
||||
initMouseMenu();
|
||||
initMouseAction();
|
||||
#endif /* MOUSE */
|
||||
#ifdef USE_MENU
|
||||
initMenu();
|
||||
|
||||
Reference in New Issue
Block a user