[w3m-dev 03456] tiling of tab
* display.c (displayBuffer): use LastTab->y (redrawNLine): fix column calculation * fm.h (TabBuffer): add x1, x2, y * main.c (calcTabPos): added (main): calcTabPos() (mouse_scroll_line): rewrite (process_mouse): use LastTab->y (_newT): calcTabPos() (calcTabPos): added (deleteTab): calcTabPos() (moveTab): calcTabPos() From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
17
ChangeLog
17
ChangeLog
@@ -1,3 +1,18 @@
|
|||||||
|
2002-11-22 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
||||||
|
|
||||||
|
* [w3m-dev 03456] tiling of tab
|
||||||
|
* display.c (displayBuffer): use LastTab->y
|
||||||
|
(redrawNLine): fix column calculation
|
||||||
|
* fm.h (TabBuffer): add x1, x2, y
|
||||||
|
* main.c (calcTabPos): added
|
||||||
|
(main): calcTabPos()
|
||||||
|
(mouse_scroll_line): rewrite
|
||||||
|
(process_mouse): use LastTab->y
|
||||||
|
(_newT): calcTabPos()
|
||||||
|
(calcTabPos): added
|
||||||
|
(deleteTab): calcTabPos()
|
||||||
|
(moveTab): calcTabPos()
|
||||||
|
|
||||||
2002-11-22 Fumitoshi UKAI <ukai@debian.or.jp>
|
2002-11-22 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||||
|
|
||||||
* doc/README.mouse_menu: added
|
* doc/README.mouse_menu: added
|
||||||
@@ -4978,4 +4993,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.542 2002/11/21 16:47:13 ukai Exp $
|
$Id: ChangeLog,v 1.543 2002/11/21 17:05:00 ukai Exp $
|
||||||
|
|||||||
23
display.c
23
display.c
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: display.c,v 1.36 2002/11/21 16:32:29 ukai Exp $ */
|
/* $Id: display.c,v 1.37 2002/11/21 17:05:01 ukai Exp $ */
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ displayBuffer(Buffer *buf, int mode)
|
|||||||
buf->rootX = 0;
|
buf->rootX = 0;
|
||||||
buf->COLS = COLS - buf->rootX;
|
buf->COLS = COLS - buf->rootX;
|
||||||
if (nTab2 > 1) {
|
if (nTab2 > 1) {
|
||||||
ny = (nTab2 - 1) / nTabLine() + 2;
|
ny = LastTab->y + 2;
|
||||||
if (ny > LASTLINE)
|
if (ny > LASTLINE)
|
||||||
ny = LASTLINE;
|
ny = LASTLINE;
|
||||||
}
|
}
|
||||||
@@ -447,7 +447,7 @@ redrawNLine(Buffer *buf, int n)
|
|||||||
#endif /* USE_COLOR */
|
#endif /* USE_COLOR */
|
||||||
if (nTab2 > 1) {
|
if (nTab2 > 1) {
|
||||||
TabBuffer *t;
|
TabBuffer *t;
|
||||||
int nx = nTabLine(), col = COLS - 2, x, l;
|
int l;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
move(0, 0);
|
move(0, 0);
|
||||||
@@ -456,31 +456,30 @@ redrawNLine(Buffer *buf, int n)
|
|||||||
clrtoeolx();
|
clrtoeolx();
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
for (t = FirstTab; t; t = t->nextTab, i++) {
|
clrtoeolx();
|
||||||
x = col * (i % nx) / nx;
|
for (t = FirstTab; t; t = t->nextTab) {
|
||||||
move(i / nx, x);
|
move(t->y, t->x1);
|
||||||
if (t == CurrentTab)
|
if (t == CurrentTab)
|
||||||
bold();
|
bold();
|
||||||
addch('[');
|
addch('[');
|
||||||
l = strlen(t->currentBuffer->buffername);
|
l = strlen(t->currentBuffer->buffername);
|
||||||
if (col / nx - 2 > l)
|
if (t->x2 - t->x1 - 2 > l)
|
||||||
addnstr_sup(" ", (col / nx - 2 - l) / 2);
|
addnstr_sup(" ", (t->x2 - t->x1 - 1 - l) / 2);
|
||||||
if (t == CurrentTab)
|
if (t == CurrentTab)
|
||||||
EFFECT_ACTIVE_START;
|
EFFECT_ACTIVE_START;
|
||||||
addstr(t->currentBuffer->buffername);
|
addstr(t->currentBuffer->buffername);
|
||||||
if (t == CurrentTab)
|
if (t == CurrentTab)
|
||||||
EFFECT_ACTIVE_END;
|
EFFECT_ACTIVE_END;
|
||||||
clrtoeolx();
|
clrtoeolx();
|
||||||
x = col * (i % nx + 1) / nx - 1;
|
move(t->y, t->x2);
|
||||||
move(i / nx, x);
|
|
||||||
addch(']');
|
addch(']');
|
||||||
if (t == CurrentTab)
|
if (t == CurrentTab)
|
||||||
boldend();
|
boldend();
|
||||||
clrtoeolx();
|
clrtoeolx();
|
||||||
}
|
}
|
||||||
move(0, col);
|
move(0, COLS - 2);
|
||||||
addstr(" x");
|
addstr(" x");
|
||||||
move((nTab2 - 1) / nx + 1, 0);
|
move(LastTab->y + 1, 0);
|
||||||
for (i = 0; i < COLS; i++)
|
for (i = 0; i < COLS; i++)
|
||||||
addch('~');
|
addch('~');
|
||||||
}
|
}
|
||||||
|
|||||||
5
fm.h
5
fm.h
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: fm.h,v 1.85 2002/11/21 16:31:36 ukai Exp $ */
|
/* $Id: fm.h,v 1.86 2002/11/21 17:05:01 ukai Exp $ */
|
||||||
/*
|
/*
|
||||||
* w3m: WWW wo Miru utility
|
* w3m: WWW wo Miru utility
|
||||||
*
|
*
|
||||||
@@ -452,6 +452,9 @@ typedef struct _TabBuffer {
|
|||||||
struct _TabBuffer *prevTab;
|
struct _TabBuffer *prevTab;
|
||||||
Buffer *currentBuffer;
|
Buffer *currentBuffer;
|
||||||
Buffer *firstBuffer;
|
Buffer *firstBuffer;
|
||||||
|
short x1;
|
||||||
|
short x2;
|
||||||
|
short y;
|
||||||
} TabBuffer;
|
} TabBuffer;
|
||||||
|
|
||||||
typedef struct _DownloadList {
|
typedef struct _DownloadList {
|
||||||
|
|||||||
83
main.c
83
main.c
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: main.c,v 1.147 2002/11/21 16:31:36 ukai Exp $ */
|
/* $Id: main.c,v 1.148 2002/11/21 17:05:01 ukai Exp $ */
|
||||||
#define MAINPROGRAM
|
#define MAINPROGRAM
|
||||||
#include "fm.h"
|
#include "fm.h"
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@@ -101,6 +101,7 @@ 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 _newT(void);
|
||||||
|
static void calcTabPos(void);
|
||||||
static void followTab(TabBuffer * tab);
|
static void followTab(TabBuffer * tab);
|
||||||
static void moveTab(TabBuffer * t, TabBuffer * t2, int right);
|
static void moveTab(TabBuffer * t, TabBuffer * t2, int right);
|
||||||
static int check_target = TRUE;
|
static int check_target = TRUE;
|
||||||
@@ -895,6 +896,7 @@ main(int argc, char **argv, char **envp)
|
|||||||
if (CurrentTab == NULL) {
|
if (CurrentTab == NULL) {
|
||||||
FirstTab = LastTab = CurrentTab = newTab();
|
FirstTab = LastTab = CurrentTab = newTab();
|
||||||
nTab = 1;
|
nTab = 1;
|
||||||
|
calcTabPos();
|
||||||
Firstbuf = Currentbuf = newbuf;
|
Firstbuf = Currentbuf = newbuf;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -935,6 +937,7 @@ main(int argc, char **argv, char **envp)
|
|||||||
if (!FirstTab) {
|
if (!FirstTab) {
|
||||||
FirstTab = LastTab = CurrentTab = newTab();
|
FirstTab = LastTab = CurrentTab = newTab();
|
||||||
nTab = 1;
|
nTab = 1;
|
||||||
|
calcTabPos();
|
||||||
}
|
}
|
||||||
if (!Firstbuf || Firstbuf == NO_BUFFER) {
|
if (!Firstbuf || Firstbuf == NO_BUFFER) {
|
||||||
Firstbuf = Currentbuf = newBuffer(INIT_BUFFER_WIDTH);
|
Firstbuf = Currentbuf = newBuffer(INIT_BUFFER_WIDTH);
|
||||||
@@ -4785,21 +4788,13 @@ mouse_scroll_line(void)
|
|||||||
static TabBuffer *
|
static TabBuffer *
|
||||||
posTab(int x, int y)
|
posTab(int x, int y)
|
||||||
{
|
{
|
||||||
TabBuffer *t;
|
TabBuffer *tab;
|
||||||
int i, n, col = COLS - 2;
|
|
||||||
|
for (tab = FirstTab; tab; tab = tab->nextTab) {
|
||||||
if (col <= 0)
|
if (tab->x1 <= x && x <= tab->x2 && tab->y == y)
|
||||||
return NULL;
|
return tab;
|
||||||
n = nTabLine();
|
|
||||||
n = x * n / col + y * n;
|
|
||||||
i = 0;
|
|
||||||
if (mouse_menu) {
|
|
||||||
if (n == 0)
|
|
||||||
return NO_TABBUFFER;
|
|
||||||
i++;
|
|
||||||
}
|
}
|
||||||
for (t = FirstTab; t && i < n; t = t->nextTab, i++) ;
|
return NULL;
|
||||||
return t;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -4836,11 +4831,11 @@ process_mouse(int btn, int x, int y)
|
|||||||
int ny = 0;
|
int ny = 0;
|
||||||
|
|
||||||
if (nTab2 > 1)
|
if (nTab2 > 1)
|
||||||
ny = (nTab2 - 1) / nTabLine() + 1;
|
ny = LastTab->y + 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 (nTab2 > 1 && y < ny) {
|
if (ny && y < ny) {
|
||||||
if (press_y == y && press_x == x) {
|
if (press_y == y && press_x == x) {
|
||||||
if (y == 0 && x >= COLS - 2) {
|
if (y == 0 && x >= COLS - 2) {
|
||||||
deleteTab(CurrentTab);
|
deleteTab(CurrentTab);
|
||||||
@@ -4958,7 +4953,7 @@ process_mouse(int btn, int x, int y)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MOUSE_BTN2_DOWN:
|
case MOUSE_BTN2_DOWN:
|
||||||
if (nTab2 > 1 && y < ny) {
|
if (ny && y < ny) {
|
||||||
if (press_y == y && press_x == x) {
|
if (press_y == y && press_x == x) {
|
||||||
t = posTab(x, y);
|
t = posTab(x, y);
|
||||||
if (t == NO_TABBUFFER) {
|
if (t == NO_TABBUFFER) {
|
||||||
@@ -5616,6 +5611,7 @@ _newT(void)
|
|||||||
CurrentTab->nextTab = tag;
|
CurrentTab->nextTab = tag;
|
||||||
CurrentTab = tag;
|
CurrentTab = tag;
|
||||||
nTab++;
|
nTab++;
|
||||||
|
calcTabPos();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -5654,6 +5650,55 @@ numTab(int n)
|
|||||||
return tab;
|
return tab;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
calcTabPos(void)
|
||||||
|
{
|
||||||
|
TabBuffer *tab;
|
||||||
|
int lcol = 0, rcol = 2, col;
|
||||||
|
int n1, n2, na, nx, ny, ix, iy;
|
||||||
|
|
||||||
|
if (nTab <= 0)
|
||||||
|
return;
|
||||||
|
n1 = (COLS - rcol - lcol) / TabCols;
|
||||||
|
if (n1 >= nTab) {
|
||||||
|
n2 = 1;
|
||||||
|
ny = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (n1 < 0)
|
||||||
|
n1 = 0;
|
||||||
|
n2 = COLS / TabCols;
|
||||||
|
if (n2 == 0)
|
||||||
|
n2 = 1;
|
||||||
|
ny = (nTab - n1 - 1) / n2 + 2;
|
||||||
|
}
|
||||||
|
na = n1 + n2 * (ny - 1);
|
||||||
|
n1 -= (na - nTab) / ny;
|
||||||
|
if (n1 < 0)
|
||||||
|
n1 = 0;
|
||||||
|
na = n1 + n2 * (ny - 1);
|
||||||
|
tab = FirstTab;
|
||||||
|
for (iy = 0; iy < ny && tab; iy++) {
|
||||||
|
if (iy == 0) {
|
||||||
|
nx = n1;
|
||||||
|
col = COLS - rcol - lcol;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
nx = n2 - (na - nTab + (iy - 1)) / (ny - 1);
|
||||||
|
col = COLS;
|
||||||
|
}
|
||||||
|
for (ix = 0; ix < nx && tab; ix++, tab = tab->nextTab) {
|
||||||
|
tab->x1 = col * ix / nx;
|
||||||
|
tab->x2 = col * (ix + 1) / nx - 1;
|
||||||
|
tab->y = iy;
|
||||||
|
if (iy == 0) {
|
||||||
|
tab->x1 += lcol;
|
||||||
|
tab->x2 += lcol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TabBuffer *
|
TabBuffer *
|
||||||
deleteTab(TabBuffer * tab)
|
deleteTab(TabBuffer * tab)
|
||||||
{
|
{
|
||||||
@@ -5677,6 +5722,7 @@ deleteTab(TabBuffer * tab)
|
|||||||
CurrentTab = tab->nextTab;
|
CurrentTab = tab->nextTab;
|
||||||
}
|
}
|
||||||
nTab--;
|
nTab--;
|
||||||
|
calcTabPos();
|
||||||
buf = tab->firstBuffer;
|
buf = tab->firstBuffer;
|
||||||
while (buf && buf != NO_BUFFER) {
|
while (buf && buf != NO_BUFFER) {
|
||||||
next = buf->nextBuffer;
|
next = buf->nextBuffer;
|
||||||
@@ -5875,6 +5921,7 @@ moveTab(TabBuffer * t, TabBuffer * t2, int right)
|
|||||||
FirstTab = t;
|
FirstTab = t;
|
||||||
t2->prevTab = t;
|
t2->prevTab = t;
|
||||||
}
|
}
|
||||||
|
calcTabPos();
|
||||||
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
displayBuffer(Currentbuf, B_FORCE_REDRAW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user