diff --git a/Action.c b/Action.c index 07e21dca..92145330 100644 --- a/Action.c +++ b/Action.c @@ -344,9 +344,12 @@ static Htop_Reaction actionKill(State* st) { if (Settings_isReadonly()) return HTOP_OK; - Panel* signalsPanel = SignalsPanel_new(); + static int preSelectedSignal = SIGNALSPANEL_INITSELECTEDSIGNAL; + + Panel* signalsPanel = SignalsPanel_new(preSelectedSignal); const ListItem* sgn = (ListItem*) Action_pickFromVector(st, signalsPanel, 14, true); if (sgn && sgn->key != 0) { + preSelectedSignal = sgn->key; Panel_setHeader((Panel*)st->mainPanel, "Sending..."); Panel_draw((Panel*)st->mainPanel, false, true, true, State_hideFunctionBar(st)); refresh(); diff --git a/SignalsPanel.c b/SignalsPanel.c index f1c53795..cb71130f 100644 --- a/SignalsPanel.c +++ b/SignalsPanel.c @@ -18,15 +18,14 @@ in the source distribution for its full text. #include "XUtils.h" -Panel* SignalsPanel_new() { +Panel* SignalsPanel_new(int preSelectedSignal) { Panel* this = Panel_new(1, 1, 1, 1, Class(ListItem), true, FunctionBar_newEnterEsc("Send ", "Cancel ")); - const int defaultSignal = SIGTERM; int defaultPosition = 15; unsigned int i; for (i = 0; i < Platform_numberOfSignals; i++) { Panel_set(this, i, (Object*) ListItem_new(Platform_signals[i].name, Platform_signals[i].number)); // signal 15 is not always the 15th signal in the table - if (Platform_signals[i].number == defaultSignal) { + if (Platform_signals[i].number == preSelectedSignal) { defaultPosition = i; } } diff --git a/SignalsPanel.h b/SignalsPanel.h index da9711a1..7b9303fe 100644 --- a/SignalsPanel.h +++ b/SignalsPanel.h @@ -7,6 +7,8 @@ Released under the GNU GPLv2+, see the COPYING file in the source distribution for its full text. */ +#include + #include "Panel.h" @@ -15,6 +17,8 @@ typedef struct SignalItem_ { int number; } SignalItem; -Panel* SignalsPanel_new(void); +#define SIGNALSPANEL_INITSELECTEDSIGNAL SIGTERM + +Panel* SignalsPanel_new(int preSelectedSignal); #endif