mirror of https://github.com/xzeldon/htop.git
Pre-select the last sent signal in SignalsPanel
Instead of pre-selecting SIGTERM every time, select the signal last send in the same htop session. Closes: #862
This commit is contained in:
parent
a38f48481e
commit
ff4f44b22a
5
Action.c
5
Action.c
|
@ -344,9 +344,12 @@ static Htop_Reaction actionKill(State* st) {
|
||||||
if (Settings_isReadonly())
|
if (Settings_isReadonly())
|
||||||
return HTOP_OK;
|
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);
|
const ListItem* sgn = (ListItem*) Action_pickFromVector(st, signalsPanel, 14, true);
|
||||||
if (sgn && sgn->key != 0) {
|
if (sgn && sgn->key != 0) {
|
||||||
|
preSelectedSignal = sgn->key;
|
||||||
Panel_setHeader((Panel*)st->mainPanel, "Sending...");
|
Panel_setHeader((Panel*)st->mainPanel, "Sending...");
|
||||||
Panel_draw((Panel*)st->mainPanel, false, true, true, State_hideFunctionBar(st));
|
Panel_draw((Panel*)st->mainPanel, false, true, true, State_hideFunctionBar(st));
|
||||||
refresh();
|
refresh();
|
||||||
|
|
|
@ -18,15 +18,14 @@ in the source distribution for its full text.
|
||||||
#include "XUtils.h"
|
#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 "));
|
Panel* this = Panel_new(1, 1, 1, 1, Class(ListItem), true, FunctionBar_newEnterEsc("Send ", "Cancel "));
|
||||||
const int defaultSignal = SIGTERM;
|
|
||||||
int defaultPosition = 15;
|
int defaultPosition = 15;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
for (i = 0; i < Platform_numberOfSignals; i++) {
|
for (i = 0; i < Platform_numberOfSignals; i++) {
|
||||||
Panel_set(this, i, (Object*) ListItem_new(Platform_signals[i].name, Platform_signals[i].number));
|
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
|
// 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;
|
defaultPosition = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@ Released under the GNU GPLv2+, see the COPYING file
|
||||||
in the source distribution for its full text.
|
in the source distribution for its full text.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include "Panel.h"
|
#include "Panel.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,6 +17,8 @@ typedef struct SignalItem_ {
|
||||||
int number;
|
int number;
|
||||||
} SignalItem;
|
} SignalItem;
|
||||||
|
|
||||||
Panel* SignalsPanel_new(void);
|
#define SIGNALSPANEL_INITSELECTEDSIGNAL SIGTERM
|
||||||
|
|
||||||
|
Panel* SignalsPanel_new(int preSelectedSignal);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue