aboutsummaryrefslogtreecommitdiffstats
path: root/ScreenManager.c
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2020-08-27 07:48:11 +0200
committerDaniel Lange <DLange@git.local>2020-08-27 07:48:11 +0200
commit7a637ff1dea1a02a42e55aa79f03a9e85a576207 (patch)
tree3d12e9808eb554ad8017fcd9059864f92d51d104 /ScreenManager.c
parentdfb05211d32675faebac6fd76ef58d9e303a90e7 (diff)
parentf3147ea2d1598914c2db53e8cfb34c8ff81e2ff4 (diff)
downloaddebian_htop-7a637ff1dea1a02a42e55aa79f03a9e85a576207.tar.gz
debian_htop-7a637ff1dea1a02a42e55aa79f03a9e85a576207.tar.bz2
debian_htop-7a637ff1dea1a02a42e55aa79f03a9e85a576207.zip
Update upstream source from tag 'upstream/3.0.0'
Update to upstream version '3.0.0' with Debian dir 8c9e99b342a3fc4208a5abe239b39578f8563a2c
Diffstat (limited to 'ScreenManager.c')
-rw-r--r--ScreenManager.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/ScreenManager.c b/ScreenManager.c
index 05e1c02..8e5f697 100644
--- a/ScreenManager.c
+++ b/ScreenManager.c
@@ -145,14 +145,12 @@ static void checkRecalculation(ScreenManager* this, double* oldTime, int* sortTi
}
static void ScreenManager_drawPanels(ScreenManager* this, int focus) {
- int nPanels = this->panelCount;
+ const int nPanels = this->panelCount;
for (int i = 0; i < nPanels; i++) {
Panel* panel = (Panel*) Vector_get(this->panels, i);
Panel_draw(panel, i == focus);
- if (i < nPanels) {
- if (this->orientation == HORIZONTAL) {
- mvvline(panel->y, panel->x+panel->w, ' ', panel->h+1);
- }
+ if (this->orientation == HORIZONTAL) {
+ mvvline(panel->y, panel->x+panel->w, ' ', panel->h+1);
}
}
}
@@ -165,7 +163,7 @@ static Panel* setCurrentPanel(Panel* panel) {
void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
bool quit = false;
int focus = 0;
-
+
Panel* panelFocus = setCurrentPanel((Panel*) Vector_get(this->panels, focus));
double oldTime = 0.0;
@@ -183,7 +181,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
if (this->header) {
checkRecalculation(this, &oldTime, &sortTimeout, &redraw, &rescan, &timedOut);
}
-
+
if (redraw) {
ScreenManager_drawPanels(this, focus);
}
@@ -192,8 +190,24 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
set_escdelay(25);
ch = getch();
+ if (this->settings->vimMode) {
+ switch (ch) {
+ case 'h': ch = KEY_LEFT; break;
+ case 'j': ch = KEY_DOWN; break;
+ case 'k': ch = KEY_UP; break;
+ case 'l': ch = KEY_RIGHT; break;
+ case KEY_LEFT: ch = 'h'; break;
+ case KEY_DOWN: ch = 'j'; break;
+ case KEY_UP: ch = 'k'; break;
+ case KEY_RIGHT: ch = 'l'; break;
+ case 'K': ch = 'k'; break;
+ case 'J': ch = 'K'; break;
+ case 'L': ch = 'l'; break;
+ }
+ }
+
HandlerResult result = IGNORED;
- if (ch == KEY_MOUSE) {
+ if (ch == KEY_MOUSE && this->settings->enableMouse) {
ch = ERR;
MEVENT mevent;
int ok = getmouse(&mevent);
@@ -271,7 +285,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
quit = true;
continue;
}
-
+
switch (ch) {
case KEY_RESIZE:
{

© 2014-2024 Faster IT GmbH | imprint | privacy policy