diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2015-03-22 22:39:33 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2015-03-22 22:39:33 -0300 |
commit | 1084a3ff8faf3aa98e8e9fbdab97a08a2c40482e (patch) | |
tree | b2edc9cc57549ab4d98b107d159d6a6d21a200b4 /MainPanel.c | |
parent | 09c7152990b6fd269ac0a023e2093dcf041e2f9d (diff) |
Working on integration of IncSet in new branch.
Diffstat (limited to 'MainPanel.c')
-rw-r--r-- | MainPanel.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/MainPanel.c b/MainPanel.c index 48855876..2b70bab2 100644 --- a/MainPanel.c +++ b/MainPanel.c @@ -20,6 +20,7 @@ in the source distribution for its full text. typedef struct MainPanel_ { Panel super; State* state; + IncSet* inc; FunctionBar* fuBar; Htop_Action *keys; pid_t pidSearch; @@ -65,7 +66,13 @@ static HandlerResult MainPanel_eventHandler(Panel* super, int ch) { if (ch == 27) { return HANDLED; } - if(ch != ERR && this->keys[ch]) { + if (ch != ERR && this->inc->active) { + bool redraw = IncSet_handleKey(this->inc, ch, super, (IncMode_GetPanelValue) MainPanel_getValue, NULL); + if (redraw) { + reaction = HTOP_REFRESH | HTOP_REDRAW_BAR; + } + reaction |= HTOP_KEEP_FOLLOWING; + } else if (ch != ERR && this->keys[ch]) { reaction |= (this->keys[ch])(this->state); result = HANDLED; } else if (isdigit(ch)) { @@ -92,7 +99,7 @@ static HandlerResult MainPanel_eventHandler(Panel* super, int ch) { if (reaction & HTOP_REDRAW_BAR) { MainPanel_updateTreeFunctions(this->fuBar, this->state->settings->treeView); - IncSet_drawBar(this->state->inc); + IncSet_drawBar(this->inc); } if (reaction & HTOP_UPDATE_PANELHDR) { ProcessList_printHeader(this->state->pl, Panel_getHeader(super)); @@ -163,6 +170,7 @@ MainPanel* MainPanel_new(FunctionBar* fuBar) { Panel_init((Panel*) this, 1, 1, 1, 1, Class(Process), false); this->keys = calloc(KEY_MAX, sizeof(Htop_Action)); this->fuBar = fuBar; + this->inc = IncSet_new(fuBar); Action_setBindings(this->keys); Platform_setBindings(this->keys); @@ -178,6 +186,7 @@ void MainPanel_delete(Object* object) { Panel* super = (Panel*) object; MainPanel* this = (MainPanel*) object; Panel_done(super); + IncSet_delete(this->inc); free(this->keys); free(this); } |