repo: rxvt-unicode-sixel action: commit revision: path_from: revision_from: 749664854059b35f7ba8fcf3b9130cfccf6d6b30: path_to: revision_to:
commit 749664854059b35f7ba8fcf3b9130cfccf6d6b30 Author: Marc LehmannDate: Mon Jul 26 18:01:19 2004 +0000 *** empty log message *** diff --git a/Changes b/Changes
--- a/Changes +++ b/Changes @@ -2,6 +2,43 @@ Lines marked with "xterm:" indicate either xterm features ported to rxvt or changed rxvt behaviour to make it more compatible to xterm (usually xfree86's xterm). +TODO: escaping system for long escape sequences, so we can stop on CR/LF. +TODO: implement xterm mode to be able to use xfree's TERM=xterm. +TODO: multibyte support for setwmname et al. +TODO: there are other todo items, but they are not in this file because they + are very long-term :) + +3.2 Mon Jul 26 19:57:32 CEST 2004 + - support real bold fonts (patch by Adam Sampson), + if specified in the font list (and enabled by -rb). + - fixed --enable-keepscrolling and --enable-selectionscrolling, which + was broken since 1.8. Patch by Hans de Goede . + - fixed --enable-slipwheeling, see above. + - sequences ended by ST can now contain any octet by quoting it + with ^V (SYN). + - 8-bit-controls disabled by default (compiletime option). + +3.1 Sat Jun 26 23:38:07 CEST 2004 + - set default backspace sequence to "DEC" (which defaults to \177) + as opposed to \010 as before, which was incorrect (ahem :). + - updated doc/etc/rxvt.* to reflect the change. This brings rxvt + in line with many existing rxvt terminfo and termcap entries as + well as with other terminal emulators. + - fix a segfault when trying to set a nonexistant locale + (reported by elmex). + - find more fonts by default for japanese. + - the internal border wasn't always cleared. This is fixed by moving + the window relative to it's frame and simplifies a lot of code, too. + - fixed quite hard to find scrollbar colour bug, reported by Eduard + Bloch. + +3.0 Mon May 10 20:47:23 CEST 2004 + - experimental flickerfree resize mode (I tried to get even + less flickering with SouthWestGravity but couldn't get it to work, + sorry). + - c++-ify (or at least make it compile with g++-3.4, which should + make it a little bit more correct c++). + 2.9 Sat May 8 19:13:41 CEST 2004 - fix some minor doc issues + some generated doc files are now getting distributed (closes debian bug #246035). diff --git a/README.configure b/README.configure
--- a/README.configure +++ b/README.configure @@ -2,7 +2,7 @@ General hint: if you get compile errors, then likely your configuration hasn't been tested well. Either try with --enable-everything or use the ./reconf script as a base for experiments. ./reconf is used by myself, so it should generally be a working config. Of course, you should always -report when a combination doesn't work, so it cnya be fixed. Marc Lehmann +report when a combination doesn't work, so it can be fixed. Marc Lehmann. --enable-everything diff --git a/doc/yodl/versioninfo.yo b/doc/yodl/versioninfo.yo
--- a/doc/yodl/versioninfo.yo +++ b/doc/yodl/versioninfo.yo @@ -1,10 +1,10 @@ -COMMENT(-- $Id: versioninfo.yo,v 1.17 2004/07/26 14:57:12 root Exp $ --) +COMMENT(-- $Id: versioninfo.yo,v 1.18 2004/07/26 18:01:18 root Exp $ --) DEFINEMACRO(RXVTNAME)(0) - (urxvt) + (rxvt) DEFINEMACRO(RXVTDATE)(0) - (2004-06-26) + (2004-07-26) DEFINEMACRO(RXVTVERSION)(0) - (3.1) + (3.2) DEFINEMACRO(RXVTMAINT)(0) (Marc A. Lehmann) DEFINEMACRO(RXVTMAINTEMAIL)(0) diff --git a/reconf b/reconf
--- a/reconf
+++ b/reconf
@@ -5,10 +5,10 @@
./configure --prefix=/opt/rxvt --enable-utmp \
--enable-wtmp --enable-lastlog --enable-xim --disable-strings \
- --with-term=rxvt --enable-keepscrolling --enable-xft \
+ --with-term=rxvt --disable-keepscrolling --enable-xft --enable-mousewheel \
--with-name=rxvt --enable-selectionscrolling \
--enable-frills --enable-swapscreen --enable-transparency \
--with-codesets=eu,jp --enable-menubar --enable-tinting \
--enable-cursor-blink --enable-pointer-blank --enable-text-blink \
- --enable-plain-scroll --enable-combining \
+ --enable-plain-scroll --enable-rxvt-scroll --enable-combining \
"$@"
diff --git a/src/command.C b/src/command.C
--- a/src/command.C
+++ b/src/command.C
@@ -712,6 +712,49 @@ rxvt_term::text_blink_cb (time_watcher &w)
}
#endif
+#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
+void
+rxvt_term::cont_scroll_cb (time_watcher &w)
+{
+ if ((scrollbar_isUp() || scrollbar_isDn()) &&
+ scr_page (scrollbar_isUp() ? UP : DN, 1))
+ {
+ refresh_type |= SMOOTH_REFRESH;
+ want_refresh = 1;
+ w.start (w.at + SCROLLBAR_CONTINUOUS_DELAY);
+ }
+}
+#endif
+
+#ifdef SELECTION_SCROLLING
+void
+rxvt_term::sel_scroll_cb (time_watcher &w)
+{
+ if (scr_page (scroll_selection_dir, scroll_selection_lines))
+ {
+ selection_extend (selection_save_x, selection_save_y, selection_save_state);
+ refresh_type |= SMOOTH_REFRESH;
+ want_refresh = 1;
+ w.start (w.at + SCROLLBAR_CONTINUOUS_DELAY);
+ }
+}
+#endif
+
+#if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
+void
+rxvt_term::slip_wheel_cb (time_watcher &w)
+{
+ if (mouse_slip_wheel_speed == 0
+ || mouse_slip_wheel_speed < 0 ? scr_page (DN, -mouse_slip_wheel_speed)
+ : scr_page (UP, mouse_slip_wheel_speed))
+ {
+ refresh_type |= SMOOTH_REFRESH;
+ want_refresh = 1;
+ w.start (w.at + SCROLLBAR_CONTINUOUS_DELAY);
+ }
+}
+#endif
+
bool
rxvt_term::pty_fill ()
{
@@ -973,11 +1016,11 @@ rxvt_term::x_cb (XEvent &ev)
#if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
case KeyRelease:
{
- if (! (ev.xkey.state & ControlMask))
- mouse_slip_wheel_speed = 0;
+ if (!(ev.xkey.state & ControlMask))
+ slip_wheel_ev.stop ();
else
{
- KeySym ks;
+ KeySym ks;
ks = XKeycodeToKeysym (display->display, ev.xkey.keycode, 0);
if (ks == XK_Control_L || ks == XK_Control_R)
@@ -1240,13 +1283,11 @@ rxvt_term::x_cb (XEvent &ev)
{
int dist;
- pending_scroll_selection=1;
-
/* don't clobber the current delay if we are
* already in the middle of scrolling.
*/
- if (scroll_selection_delay<=0)
- scroll_selection_delay=SCROLLBAR_CONTINUOUS_DELAY;
+ if (!sel_scroll_ev.active)
+ sel_scroll_ev.start (NOW + SCROLLBAR_INITIAL_DELAY);
/* save the event params so we can highlight
* the selection in the pending-scroll loop
@@ -1278,7 +1319,8 @@ rxvt_term::x_cb (XEvent &ev)
/* we are within the text window, so we
* shouldn't be scrolling
*/
- pending_scroll_selection = 0;
+ if (sel_scroll_ev.active)
+ sel_scroll_ev.stop();
}
#endif
#ifdef MOUSE_THRESHOLD
@@ -1505,7 +1547,7 @@ rxvt_term::button_press (XButtonEvent &ev)
if (upordown)
{
#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
- scroll_arrow_delay = SCROLLBAR_INITIAL_DELAY;
+ cont_scroll_ev.start (NOW + SCROLLBAR_INITIAL_DELAY);
#endif
if (scr_page (upordown < 0 ? UP : DN, 1))
{
@@ -1602,7 +1644,8 @@ rxvt_term::button_release (XButtonEvent &ev)
}
#ifdef SELECTION_SCROLLING
- pending_scroll_selection=0;
+ if (sel_scroll_ev.active)
+ sel_scroll_ev.stop();
#endif
if (ev.window == TermWin.vt)
{
@@ -1654,18 +1697,20 @@ rxvt_term::button_release (XButtonEvent &ev)
int i;
page_dirn v;
- v = (ev.button == Button4) ? UP : DN;
+ v = ev.button == Button4 ? UP : DN;
+
if (ev.state & ShiftMask)
i = 1;
- else if ((Options & Opt_mouseWheelScrollPage))
+ else if (Options & Opt_mouseWheelScrollPage)
i = TermWin.nrow - 1;
else
i = 5;
+
# ifdef MOUSE_SLIP_WHEELING
if (ev.state & ControlMask)
{
- mouse_slip_wheel_speed += (v ? -1 : 1);
- mouse_slip_wheel_delay = SCROLLBAR_CONTINUOUS_DELAY;
+ mouse_slip_wheel_speed += v ? -1 : 1;
+ slip_wheel_ev.start (NOW + SCROLLBAR_CONTINUOUS_DELAY);
}
# endif
# ifdef JUMP_MOUSE_WHEEL
@@ -2275,6 +2320,15 @@ rxvt_term::cmd_parse ()
return flag;
}
+// read the next octet
+unicode_t
+rxvt_term::next_octet ()
+{
+ return cmdbuf_ptr < cmdbuf_endp
+ ? *cmdbuf_ptr++
+ : NOCHAR;
+}
+
// read the next character
unicode_t
rxvt_term::next_char ()
@@ -2322,6 +2376,17 @@ rxvt_term::cmd_getc ()
return c;
}
+unicode_t
+rxvt_term::cmd_get8 ()
+{
+ unicode_t c = next_octet ();
+
+ if (c == NOCHAR)
+ throw out_of_input;
+
+ return c;
+}
+
/*{{{ print pipe */
/*----------------------------------------------------------------------*/
#ifdef PRINTPIPE
@@ -2454,6 +2519,7 @@ rxvt_term::process_nonprinting (unicode_t ch)
scr_charset_choose (0);
break;
+#ifdef EIGHT_BIT_CONTROLS
// 8-bit controls
case 0x90: /* DCS */
process_dcs_seq ();
@@ -2464,6 +2530,7 @@ rxvt_term::process_nonprinting (unicode_t ch)
case 0x9d: /* CSI */
process_osc_seq ();
break;
+#endif
}
}
/*}}} */
@@ -3091,39 +3158,36 @@ rxvt_term::process_window_ops (const int *args, unsigned int nargs)
unsigned char *
rxvt_term::get_to_st (unicode_t &ends_how)
{
- int seen_esc = 0; /* seen escape? */
+ unicode_t prev = 0, ch;
unsigned int n = 0;
unsigned char *s;
- unicode_t ch;
unsigned char string[STRING_MAX];
- while ((ch = cmd_getc ()))
+ while ((ch = cmd_getc ()) != NOCHAR)
{
- if (ch == C0_BEL || ch == CHAR_ST)
- break;
-
- if (seen_esc)
- if (ch == 0x5c) /* 7bit ST */
- break;
- else
- return NULL;
-
- if (ch == C0_ESC)
+ if (prev == C0_ESC)
{
- seen_esc = 1;
- continue;
+ if (ch == 0x5c) /* 7bit ST */
+ break;
+ else
+ return NULL;
}
- else if (ch == C0_HT)
- ch = ' '; /* translate '\t' to space */
- else if (ch < 0x20 && (ch != C0_LF && ch != C0_CR))
+ else if (ch == C0_BEL || ch == CHAR_ST)
+ break;
+ else if (ch < 0x20)
return NULL; /* other control character - exit */
if (n >= sizeof (string) - 1)
// stop at some sane length
return NULL;
- string[n++] = ch;
- seen_esc = 0;
+ if (ch == C0_SYN)
+ {
+ string[n++] = cmd_get8 ();
+ prev = 0;
+ }
+ else
+ string[n++] = prev = ch;
}
string[n++] = '\0';
diff --git a/src/command.h b/src/command.h
--- a/src/command.h +++ b/src/command.h @@ -1,12 +1,12 @@ /* - * $Id: command.h,v 1.8 2004/04/08 20:22:25 pcg Exp $ + * $Id: command.h,v 1.10 2004/07/26 18:01:19 root Exp $ */ #ifndef COMMAND_H_ #define COMMAND_H_ // STRING_MAX __MUST__ not be larger than what CBUFSIZ can hold. -#define STRING_MAX 1024 /* max string size for process_rxvt_xterm_seq() */ +#define STRING_MAX 2048 /* max string size for process_rxvt_xterm_seq() */ #define ESC_ARGS 32 /* max # of args for esc sequences */ @@ -23,14 +23,10 @@ # define MULTICLICK_TIME 500 #endif #ifndef SCROLLBAR_INITIAL_DELAY -# ifdef NEXT_SCROLLER -# define SCROLLBAR_INITIAL_DELAY 20 -# else -# define SCROLLBAR_INITIAL_DELAY 40 -# endif +# define SCROLLBAR_INITIAL_DELAY 0.33 #endif #ifndef SCROLLBAR_CONTINUOUS_DELAY -# define SCROLLBAR_CONTINUOUS_DELAY 2 +# define SCROLLBAR_CONTINUOUS_DELAY 0.05 #endif /* diff --git a/src/feature.h b/src/feature.h
--- a/src/feature.h +++ b/src/feature.h @@ -150,8 +150,7 @@ * Define defaults for backspace and delete keys - unless they have been * configured out with --disable-backspace-key / --disable-delete-key */ -//#define DEFAULT_BACKSPACE "DEC" /* SPECIAL */ -#define DEFAULT_BACKSPACE "\010" /* wrong, but match terminfo etc. */ +#define DEFAULT_BACKSPACE "DEC" /* SPECIAL */ #define DEFAULT_DELETE "\033[3~" /* @@ -250,8 +249,8 @@ /* * Set delay periods for continuous scrolling with scrollbar buttons */ -/* #define SCROLLBAR_INITIAL_DELAY 40 */ -/* #define SCROLLBAR_CONTINUOUS_DELAY 2 */ +/* #define SCROLLBAR_INITIAL_DELAY 0.33 */ +/* #define SCROLLBAR_CONTINUOUS_DELAY 0.05 */ /* * The speed of selection scrolling is proportional to the distance diff --git a/src/main.C b/src/main.C
--- a/src/main.C
+++ b/src/main.C
@@ -157,6 +157,15 @@ rxvt_term::rxvt_term ()
#ifdef TEXT_BLINK
text_blink_ev (this, &rxvt_term::text_blink_cb),
#endif
+#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
+ cont_scroll_ev (this, &rxvt_term::cont_scroll_cb),
+#endif
+#ifdef SELECTION_SCROLLING
+ sel_scroll_ev (this, &rxvt_term::sel_scroll_cb),
+#endif
+#if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
+ slip_wheel_ev (this, &rxvt_term::slip_wheel_cb),
+#endif
#ifdef POINTER_BLANK
pointer_ev (this, &rxvt_term::pointer_cb),
#endif
@@ -288,6 +297,12 @@ rxvt_term::destroy ()
#ifdef TEXT_BLINK
text_blink_ev.stop ();
#endif
+#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
+ cont_scroll_ev.stop ();
+#endif
+#ifdef SELECTION_SCROLLING
+ sel_scroll_ev.stop ();
+#endif
#ifdef POINTER_BLANK
pointer_ev.stop ();
#endif
@@ -742,21 +757,21 @@ rxvt_term::window_calc (unsigned int width, unsigned int height)
szHint.base_width = szHint.base_height = 2 * TermWin.int_bwidth;
sb_w = mb_h = 0;
- window_vt_x = window_vt_y = 0;
+ window_vt_x = window_vt_y = TermWin.int_bwidth;
if (scrollbar_visible ())
{
sb_w = scrollbar_TotalWidth ();
szHint.base_width += sb_w;
- if (! (Options & Opt_scrollBar_right))
- window_vt_x = sb_w;
+ if (!(Options & Opt_scrollBar_right))
+ window_vt_x += sb_w;
}
if (menubar_visible ())
{
mb_h = menuBar_TotalHeight ();
szHint.base_height += mb_h;
- window_vt_y = mb_h;
+ window_vt_y += mb_h;
}
szHint.width_inc = TermWin.fwidth;
diff --git a/src/rxvt.h b/src/rxvt.h
--- a/src/rxvt.h
+++ b/src/rxvt.h
@@ -268,7 +268,10 @@ enum {
FAST_REFRESH = 1<<0, /* Fully exposed window */
SLOW_REFRESH = 1<<1, /* Partially exposed window */
SMOOTH_REFRESH = 1<<2, /* Do sync'ing to make it smooth */
+#if 0
REFRESH_BOUNDS = 1<<3
+#endif
+ REFRESH_BOUNDS = 0 /* only required for old int_bwidth code. */ //TODO: remove this and all depending code
};
#ifdef NO_SECONDARY_SCREEN
@@ -549,6 +552,9 @@ enum {
#ifndef NO_SECONDARY_SCREEN
Rs_secondaryScreen,
Rs_secondaryScroll,
+#endif
+#ifndef NO_BOLD_UNDERLINE_REVERSE
+ Rs_realBold,
#endif
NUM_RESOURCES
};
@@ -648,17 +654,17 @@ enum {
#define STRRCHR(x, y) strrchr((const char *)(x), (int)(y))
/* convert pixel dimensions to row/column values. Everything as int32_t */
-#define Pixel2Col(x) Pixel2Width((int32_t)(x) - (int32_t)TermWin.int_bwidth)
-#define Pixel2Row(y) Pixel2Height((int32_t)(y) - (int32_t)TermWin.int_bwidth)
+#define Pixel2Col(x) Pixel2Width((int32_t)(x))
+#define Pixel2Row(y) Pixel2Height((int32_t)(y))
#define Pixel2Width(x) ((int32_t)(x) / (int32_t)TermWin.fwidth)
#define Pixel2Height(y) ((int32_t)(y) / (int32_t)TermWin.fheight)
-#define Col2Pixel(col) ((int32_t)Width2Pixel(col) + (int32_t)TermWin.int_bwidth)
-#define Row2Pixel(row) ((int32_t)Height2Pixel(row) + (int32_t)TermWin.int_bwidth)
+#define Col2Pixel(col) ((int32_t)Width2Pixel(col))
+#define Row2Pixel(row) ((int32_t)Height2Pixel(row))
#define Width2Pixel(n) ((int32_t)(n) * (int32_t)TermWin.fwidth)
#define Height2Pixel(n) ((int32_t)(n) * (int32_t)TermWin.fheight)
-#define TermWin_TotalWidth() ((int32_t)TermWin.width + 2 * (int32_t)TermWin.int_bwidth)
-#define TermWin_TotalHeight() ((int32_t)TermWin.height + 2 * (int32_t)TermWin.int_bwidth)
+#define TermWin_TotalWidth() ((int32_t)TermWin.width)
+#define TermWin_TotalHeight() ((int32_t)TermWin.height)
/* how to build & extract colors and attributes */
#define GET_BASEFG(x) (((x) & RS_fgMask))
@@ -938,22 +944,16 @@ struct rxvt_term : rxvt_vars {
uint32_t pixcolor_set[NPIXCLR_SETS];
/* ---------- */
#ifdef SELECTION_SCROLLING
- int scroll_selection_delay,
- scroll_selection_lines;
+ int scroll_selection_lines;
enum page_dirn scroll_selection_dir;
int selection_save_x,
selection_save_y,
- selection_save_state,
- pending_scroll_selection;
+ selection_save_state;
#endif
/* ---------- */
int csrO, /* Hops - csr offset in thumb/slider to */
/* give proper Scroll behaviour */
-#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
- scroll_arrow_delay,
-#endif
#if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
- mouse_slip_wheel_delay,
mouse_slip_wheel_speed,
#endif
refresh_count,
@@ -1142,6 +1142,16 @@ struct rxvt_term : rxvt_vars {
void text_blink_cb (time_watcher &w); time_watcher text_blink_ev;
#endif
+#ifndef NO_SCROLLBAR_BUTTON_CONTINUAL_SCROLLING
+ void cont_scroll_cb (time_watcher &w); time_watcher cont_scroll_ev;
+#endif
+#ifdef SELECTION_SCROLLING
+ void sel_scroll_cb (time_watcher &w); time_watcher sel_scroll_ev;
+#endif
+#if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING)
+ void slip_wheel_cb (time_watcher &w); time_watcher slip_wheel_ev;
+#endif
+
#ifdef POINTER_BLANK
void pointer_cb (time_watcher &w); time_watcher pointer_ev;
void pointer_blank ();
@@ -1160,8 +1170,6 @@ struct rxvt_term : rxvt_vars {
bool init (int argc, const char *const *argv);
bool init_vars ();
- unicode_t next_char ();
-
bool pty_fill ();
void *operator new (size_t s);
@@ -1226,7 +1234,12 @@ struct rxvt_term : rxvt_vars {
// command.C
void lookup_key (XKeyEvent &ev);
unsigned int cmd_write (const unsigned char *str, unsigned int count);
+
+ unicode_t next_char ();
unicode_t cmd_getc ();
+ unicode_t next_octet ();
+ unicode_t cmd_get8 ();
+
bool cmd_parse ();
void mouse_report (XButtonEvent &ev);
void button_press (XButtonEvent &ev);
diff --git a/src/table/jis0208_1990_0.h b/src/table/jis0208_1990_0.h
--- a/src/table/jis0208_1990_0.h
+++ b/src/table/jis0208_1990_0.h
@@ -2244,8 +2244,8 @@ struct rxvt_codeset_conv_jis0208_1990_0 : rxvt_codeset_conv {
if (unicode == 0x2312) return 0x225e;
uint8_t l = unicode;
uint16_t h = unicode >> 8;
- if (0x00 <= h && h <= 0xff
- && 0x00 <= l && l <= 0xff
+ if (h <= 0xff
+ && l <= 0xff
&& jis0208_1990_0_f_i[h - 0x00])
return jis0208_1990_0_f_i[h - 0x00][l - 0x00]
? jis0208_1990_0_f_i[h - 0x00][l - 0x00]
diff --git a/src/table/jis0212_1990_0.h b/src/table/jis0212_1990_0.h
--- a/src/table/jis0212_1990_0.h
+++ b/src/table/jis0212_1990_0.h
@@ -2122,8 +2122,8 @@ struct rxvt_codeset_conv_jis0212_1990_0 : rxvt_codeset_conv {
if (unicode == 0x2122) return 0x226f;
uint8_t l = unicode;
uint16_t h = unicode >> 8;
- if (0x00 <= h && h <= 0x9f
- && 0x00 <= l && l <= 0xff
+ if (h <= 0x9f
+ && l <= 0xff
&& jis0212_1990_0_f_i[h - 0x00])
return jis0212_1990_0_f_i[h - 0x00][l - 0x00]
? jis0212_1990_0_f_i[h - 0x00][l - 0x00]
diff --git a/src/version.h b/src/version.h
--- a/src/version.h +++ b/src/version.h @@ -1,5 +1,5 @@ -#define VERSION "2.9" -#define VSTRING "20900" -#define DATE "2004-05-08" -#define LSMDATE "08MAY04" -#define LIBVERSION "2:9:0" +#define VERSION "3.2" +#define VSTRING "30200" +#define DATE "2004-07-26" +#define LSMDATE "26JUL04" +#define LIBVERSION "3:2:0"
-----END OF PAGE-----