From 2ecf199cf70d24e1ac359640c21cc79a81b68461 Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Sun, 23 Jul 2006 22:45:24 +0000 Subject: [PATCH] Horizontally scroll in larger increments when on the Linux console because of slow update of unaccelerated fb --- CRT.c | 6 ++++-- CRT.h | 2 ++ ChangeLog | 2 ++ Panel.c | 9 +++++++-- Panel.h | 2 ++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CRT.c b/CRT.c index 836c75ee..9c283c9b 100644 --- a/CRT.c +++ b/CRT.c @@ -106,6 +106,8 @@ int CRT_colorScheme = 0; int CRT_colors[LAST_COLORELEMENT] = { 0 }; +char* CRT_termType; + // TODO: pass an instance of Settings instead. void CRT_init(int delay, int colorScheme) { @@ -124,8 +126,8 @@ void CRT_init(int delay, int colorScheme) { } else { CRT_hasColors = false; } - char* termType = getenv("TERM"); - if (String_eq(termType, "xterm") || String_eq(termType, "xterm-color") || String_eq(termType, "vt220")) { + CRT_termType = getenv("TERM"); + if (String_eq(CRT_termType, "xterm") || String_eq(CRT_termType, "xterm-color") || String_eq(CRT_termType, "vt220")) { define_key("\033[H", KEY_HOME); define_key("\033[F", KEY_END); define_key("\033OP", KEY_F(1)); diff --git a/CRT.h b/CRT.h index 155dc2ee..1f6020bd 100644 --- a/CRT.h +++ b/CRT.h @@ -107,6 +107,8 @@ extern int CRT_colorScheme; extern int CRT_colors[LAST_COLORELEMENT]; +char* CRT_termType; + // TODO: pass an instance of Settings instead. void CRT_init(int delay, int colorScheme); diff --git a/ChangeLog b/ChangeLog index 6dbdf82c..0e070328 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,8 @@ What's new in version 0.6.3 ListBox (and related classes) to Panel. * Have configure actually fail when needed libraries or headers are not found. +* Horizontally scroll in larger increments when on the + Linux console because of slow update of unaccelerated fb What's new in version 0.6.2 diff --git a/Panel.c b/Panel.c index f014fca7..8c1bf560 100644 --- a/Panel.c +++ b/Panel.c @@ -40,6 +40,7 @@ struct Panel_ { Vector* items; int selected; int scrollV, scrollH; + int scrollHAmount; int oldSelected; bool needsRedraw; RichString header; @@ -92,6 +93,10 @@ void Panel_init(Panel* this, int x, int y, int w, int h, char* type, bool owner) this->oldSelected = 0; this->needsRedraw = true; this->header.len = 0; + if (String_eq(CRT_termType, "linux")) + this->scrollHAmount = 40; + else + this->scrollHAmount = 5; } void Panel_done(Panel* this) { @@ -327,12 +332,12 @@ void Panel_onKey(Panel* this, int key) { break; case KEY_LEFT: if (this->scrollH > 0) { - this->scrollH -= 5; + this->scrollH -= this->scrollHAmount; this->needsRedraw = true; } break; case KEY_RIGHT: - this->scrollH += 5; + this->scrollH += this->scrollHAmount; this->needsRedraw = true; break; case KEY_PPAGE: diff --git a/Panel.h b/Panel.h index eda9c85d..512545b2 100644 --- a/Panel.h +++ b/Panel.h @@ -13,6 +13,7 @@ in the source distribution for its full text. #include "Vector.h" #include "CRT.h" #include "RichString.h" +#include "ListItem.h" #include #include @@ -41,6 +42,7 @@ struct Panel_ { Vector* items; int selected; int scrollV, scrollH; + int scrollHAmount; int oldSelected; bool needsRedraw; RichString header;