diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2006-07-23 22:45:24 +0000 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2006-07-23 22:45:24 +0000 |
commit | 2ecf199cf70d24e1ac359640c21cc79a81b68461 (patch) | |
tree | 649cb393525772a260525fd58c33fa8d359ad624 | |
parent | eb2803ce79604b45c070edbe1e787f4373949cfe (diff) |
Horizontally scroll in larger increments when on the
Linux console because of slow update of unaccelerated fb
-rw-r--r-- | CRT.c | 6 | ||||
-rw-r--r-- | CRT.h | 2 | ||||
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | Panel.c | 9 | ||||
-rw-r--r-- | Panel.h | 2 |
5 files changed, 17 insertions, 4 deletions
@@ -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)); @@ -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); @@ -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 @@ -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: @@ -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 <math.h> #include <stdbool.h> @@ -41,6 +42,7 @@ struct Panel_ { Vector* items; int selected; int scrollV, scrollH; + int scrollHAmount; int oldSelected; bool needsRedraw; RichString header; |