Commit ee5dc46f authored by Hisham Muhammad's avatar Hisham Muhammad
Browse files

Don't end up killing init if process selected to be killed terminates before...

Don't end up killing init if process selected to be killed terminates before the user selects a signal. Closes #3606072.
parent a0810561
......@@ -173,7 +173,8 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) {
for (int i = 0; i < this->panelCount; i++) {
Panel* panel = (Panel*) Vector_get(this->panels, i);
if (mevent.x > panel->x && mevent.x <= panel->x+panel->w &&
mevent.y > panel->y && mevent.y <= panel->y+panel->h) {
mevent.y > panel->y && mevent.y <= panel->y+panel->h &&
(this->allowFocusChange || panelFocus == panel) ) {
focus = i;
panelFocus = panel;
Panel_setSelected(panel, mevent.y - panel->y + panel->scrollV - 1);
......
......@@ -217,9 +217,10 @@ static Object* pickFromVector(Panel* panel, Panel* list, int x, int y, const cha
Panel* panelFocus;
int ch;
bool unfollow = false;
Process* p = (Process*)Panel_getSelected(panel);
int pid = p ? p->pid : -1;
if (header->pl->following == -1) {
Process* p = (Process*)Panel_getSelected(panel);
header->pl->following = p ? p->pid : -1;
header->pl->following = pid;
unfollow = true;
}
ScreenManager_run(scr, &panelFocus, &ch);
......@@ -231,7 +232,11 @@ static Object* pickFromVector(Panel* panel, Panel* list, int x, int y, const cha
Panel_resize(panel, COLS, LINES-y-1);
FunctionBar_draw(prevBar, NULL);
if (panelFocus == list && ch == 13) {
return Panel_getSelected(list);
Process* selected = (Process*)Panel_getSelected(panel);
if (selected->pid == pid)
return Panel_getSelected(list);
else
beep();
}
return NULL;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment