From c90b80672878b60c8b4e2a2ef759a2a7b16272f7 Mon Sep 17 00:00:00 2001 From: Andrew Borodin Date: Tue, 7 Jun 2016 16:11:30 +0300 Subject: [PATCH] Don't focus widget that doesn't have the WOP_SELECTABLE option. Signed-off-by: Andrew Borodin --- lib/widget/buttonbar.c | 3 --- lib/widget/dialog.c | 3 ++- lib/widget/gauge.c | 4 ---- lib/widget/groupbox.c | 3 --- lib/widget/hline.c | 4 ---- lib/widget/label.c | 4 ---- src/filemanager/command.c | 11 +++++------ src/filemanager/info.c | 3 --- 8 files changed, 7 insertions(+), 28 deletions(-) diff --git a/lib/widget/buttonbar.c b/lib/widget/buttonbar.c index b1eb0b1c4..b73e9fc15 100644 --- a/lib/widget/buttonbar.c +++ b/lib/widget/buttonbar.c @@ -166,9 +166,6 @@ buttonbar_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, voi switch (msg) { - case MSG_FOCUS: - return MSG_NOT_HANDLED; - case MSG_HOTKEY: for (i = 0; i < BUTTONBAR_LABELS_NUM; i++) if (parm == KEY_F (i + 1) && buttonbar_call (bb, i)) diff --git a/lib/widget/dialog.c b/lib/widget/dialog.c index 88659e5f8..ac3a0e271 100644 --- a/lib/widget/dialog.c +++ b/lib/widget/dialog.c @@ -1079,7 +1079,8 @@ dlg_focus (WDialog * h) { Widget *current = WIDGET (h->current->data); - if (!widget_get_state (current, WST_DISABLED) + if (widget_get_options (current, WOP_SELECTABLE) + && !widget_get_state (current, WST_DISABLED) && (send_message (current, NULL, MSG_FOCUS, 0, NULL) == MSG_HANDLED)) { send_message (h, current, MSG_FOCUS, 0, NULL); diff --git a/lib/widget/gauge.c b/lib/widget/gauge.c index 61c3a03ef..819aa706a 100644 --- a/lib/widget/gauge.c +++ b/lib/widget/gauge.c @@ -65,10 +65,6 @@ gauge_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d case MSG_INIT: return MSG_HANDLED; - /* We don't want to get the focus */ - case MSG_FOCUS: - return MSG_NOT_HANDLED; - case MSG_DRAW: widget_move (w, 0, 0); if (!g->shown) diff --git a/lib/widget/groupbox.c b/lib/widget/groupbox.c index 5b404a2e0..2d7a5b4a9 100644 --- a/lib/widget/groupbox.c +++ b/lib/widget/groupbox.c @@ -62,9 +62,6 @@ groupbox_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void case MSG_INIT: return MSG_HANDLED; - case MSG_FOCUS: - return MSG_NOT_HANDLED; - case MSG_DRAW: { WDialog *h = w->owner; diff --git a/lib/widget/hline.c b/lib/widget/hline.c index 506d5a3ac..64a3d20ba 100644 --- a/lib/widget/hline.c +++ b/lib/widget/hline.c @@ -80,10 +80,6 @@ hline_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d } return MSG_HANDLED; - case MSG_FOCUS: - /* We don't want to get the focus */ - return MSG_NOT_HANDLED; - case MSG_DRAW: if (l->transparent) tty_setcolor (DEFAULT_COLOR); diff --git a/lib/widget/label.c b/lib/widget/label.c index 02d6605bf..769a9c3ab 100644 --- a/lib/widget/label.c +++ b/lib/widget/label.c @@ -67,10 +67,6 @@ label_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *d case MSG_INIT: return MSG_HANDLED; - /* We don't want to get the focus */ - case MSG_FOCUS: - return MSG_NOT_HANDLED; - case MSG_DRAW: { char *p = l->text; diff --git a/src/filemanager/command.c b/src/filemanager/command.c index 607211d75..a4f13c876 100644 --- a/src/filemanager/command.c +++ b/src/filemanager/command.c @@ -347,10 +347,6 @@ command_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void { switch (msg) { - case MSG_FOCUS: - /* Never accept focus, otherwise panels will be unselected */ - return MSG_NOT_HANDLED; - case MSG_KEY: /* Special case: we handle the enter key */ if (parm == '\n') @@ -473,14 +469,17 @@ WInput * command_new (int y, int x, int cols) { WInput *cmd; + Widget *w; cmd = input_new (y, x, command_colors, cols, "", "cmdline", INPUT_COMPLETE_FILENAMES | INPUT_COMPLETE_VARIABLES | INPUT_COMPLETE_USERNAMES | INPUT_COMPLETE_HOSTNAMES | INPUT_COMPLETE_CD | INPUT_COMPLETE_COMMANDS | INPUT_COMPLETE_SHELL_ESC); - + w = WIDGET (cmd); + /* Don't set WOP_SELECTABLE up, otherwise panels will be unselected */ + widget_set_options (w, WOP_SELECTABLE, FALSE); /* Add our hooks */ - WIDGET (cmd)->callback = command_callback; + w->callback = command_callback; return cmd; } diff --git a/src/filemanager/info.c b/src/filemanager/info.c index cb5cf6a56..f6da163b8 100644 --- a/src/filemanager/info.c +++ b/src/filemanager/info.c @@ -313,9 +313,6 @@ info_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, void *da info_hook (info); return MSG_HANDLED; - case MSG_FOCUS: - return MSG_NOT_HANDLED; - case MSG_DESTROY: delete_hook (&select_file_hook, info_hook); free_my_statfs (); -- 2.11.4.GIT