mirror of
https://github.com/MidnightCommander/mc
synced 2025-04-01 20:52:53 +03:00
Modified ButtonBar engine to allow bind keys to unused buttons.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
parent
eb2e4b0e17
commit
1ed7892f8e
@ -208,10 +208,10 @@ edit_dialog_callback (Dlg_head *h, Widget *sender,
|
||||
case DLG_ACTION:
|
||||
menubar = find_menubar (h);
|
||||
if (sender == (Widget *) menubar)
|
||||
return send_message (wedit, WIDGET_COMMAND, parm);
|
||||
return send_message ((Widget *) edit, WIDGET_COMMAND, parm);
|
||||
buttonbar = find_buttonbar (h);
|
||||
if (sender == (Widget *) buttonbar)
|
||||
return send_message (wedit, WIDGET_COMMAND, parm);
|
||||
return send_message ((Widget *) edit, WIDGET_COMMAND, parm);
|
||||
return MSG_HANDLED;
|
||||
|
||||
default:
|
||||
|
12
src/help.c
12
src/help.c
@ -957,12 +957,12 @@ interactive_display (const char *filename, const char *node)
|
||||
buttonbar_set_label (help_bar, 1, Q_("ButtonBar|Help"), help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 2, Q_("ButtonBar|Index"), help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 3, Q_("ButtonBar|Prev"), help_map, NULL);
|
||||
buttonbar_clear_label (help_bar, 4);
|
||||
buttonbar_clear_label (help_bar, 5);
|
||||
buttonbar_clear_label (help_bar, 6);
|
||||
buttonbar_clear_label (help_bar, 7);
|
||||
buttonbar_clear_label (help_bar, 8);
|
||||
buttonbar_clear_label (help_bar, 9);
|
||||
buttonbar_set_label (help_bar, 4, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 5, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 6, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 7, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 8, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 9, "", help_map, NULL);
|
||||
buttonbar_set_label (help_bar, 10, Q_("ButtonBar|Quit"), help_map, NULL);
|
||||
|
||||
run_dlg (whelp);
|
||||
|
@ -1237,7 +1237,7 @@ midnight_execute_cmd (Widget *sender, unsigned long command)
|
||||
history_cmd ();
|
||||
break;
|
||||
case CK_InfoCmd:
|
||||
if (sender == the_menubar)
|
||||
if (sender == (Widget *) the_menubar)
|
||||
info_cmd (); /* mwnu */
|
||||
else
|
||||
info_cmd_no_menu (); /* shortcut or buttonbar */
|
||||
@ -1290,7 +1290,7 @@ midnight_execute_cmd (Widget *sender, unsigned long command)
|
||||
quick_chdir_cmd ();
|
||||
break;
|
||||
case CK_QuickViewCmd:
|
||||
if (sender == the_menubar)
|
||||
if (sender == (Widget *) the_menubar)
|
||||
quick_view_cmd (); /* menu */
|
||||
else
|
||||
quick_cmd_no_menu (); /* shortcut or buttonabr */
|
||||
|
@ -1018,7 +1018,7 @@ tree_callback (Widget *w, widget_msg_t msg, int parm)
|
||||
/* FIXME: mkdir is currently defunct */
|
||||
buttonbar_set_label (b, 7, Q_("ButtonBar|Mkdir"), tree_map, (Widget *) tree);
|
||||
#else
|
||||
buttonbar_clear_label (b, 7);
|
||||
buttonbar_clear_label (b, 7, (Widget *) tree);
|
||||
#endif
|
||||
buttonbar_set_label (b, 8, Q_("ButtonBar|Rmdir"), tree_map, (Widget *) tree);
|
||||
buttonbar_redraw (b);
|
||||
|
@ -85,7 +85,7 @@ mcview_set_buttonbar (mcview_t *view)
|
||||
else if (view->datasource == DS_FILE)
|
||||
buttonbar_set_label (b, 2, Q_ ("ButtonBar|Edit"), keymap, (Widget *) view);
|
||||
else
|
||||
buttonbar_clear_label (b, 2);
|
||||
buttonbar_set_label (b, 2, "", keymap, (Widget *) view);
|
||||
|
||||
buttonbar_set_label (b, 4, Q_ ("ButtonBar|Ascii"), keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 5, Q_ ("ButtonBar|Goto"), keymap, (Widget *) view);
|
||||
@ -98,22 +98,24 @@ mcview_set_buttonbar (mcview_t *view)
|
||||
keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 4, Q_ ("ButtonBar|Hex"), keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 5, Q_ ("ButtonBar|Line"), keymap, (Widget *) view);
|
||||
buttonbar_clear_label (b, 6);
|
||||
buttonbar_set_label (b, 6, "", keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 7, Q_ ("ButtonBar|Search"), keymap, (Widget *) view);
|
||||
}
|
||||
|
||||
/* don't override the key to access the main menu */
|
||||
if (!mcview_is_in_panel (view)) {
|
||||
buttonbar_set_label (b, 3, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 9, view->text_nroff_mode ? Q_ ("ButtonBar|Unform")
|
||||
: Q_ ("ButtonBar|Format"),
|
||||
keymap, (Widget *) view);
|
||||
}
|
||||
|
||||
buttonbar_set_label (b, 8, view->magic_mode ? Q_ ("ButtonBar|Raw")
|
||||
: Q_ ("ButtonBar|Parse"),
|
||||
keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 10, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view);
|
||||
|
||||
if (mcview_is_in_panel (view))
|
||||
buttonbar_set_label (b, 10, "", keymap, (Widget *) view);
|
||||
else {
|
||||
/* don't override some panel buttonbar keys */
|
||||
buttonbar_set_label (b, 3, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 9, view->text_nroff_mode ? Q_ ("ButtonBar|Unform")
|
||||
: Q_ ("ButtonBar|Format"),
|
||||
keymap, (Widget *) view);
|
||||
buttonbar_set_label (b, 10, Q_ ("ButtonBar|Quit"), keymap, (Widget *) view);
|
||||
}
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
19
src/widget.c
19
src/widget.c
@ -2675,10 +2675,9 @@ buttonbar_call (WButtonBar *bb, int i)
|
||||
{
|
||||
cb_ret_t ret = MSG_NOT_HANDLED;
|
||||
|
||||
if ((bb != NULL) && (bb->labels[i].text != NULL)
|
||||
&& (bb->labels[i].command != CK_Ignore_Key))
|
||||
if (bb != NULL)
|
||||
ret = bb->widget.parent->callback (bb->widget.parent,
|
||||
&bb->widget, DLG_ACTION,
|
||||
(Widget *) bb, DLG_ACTION,
|
||||
bb->labels[i].command,
|
||||
bb->labels[i].receiver);
|
||||
return ret;
|
||||
@ -2805,15 +2804,13 @@ buttonbar_set_label (WButtonBar *bb, int idx, const char *text,
|
||||
if (keymap != NULL)
|
||||
command = lookup_keymap_command (keymap, KEY_F (idx));
|
||||
|
||||
if ((text == NULL) || (text[0] == '\0') || (command == CK_Ignore_Key)) {
|
||||
set_label_text (bb, idx, NULL);
|
||||
bb->labels[idx - 1].command = CK_Ignore_Key;
|
||||
bb->labels[idx - 1].receiver = NULL;
|
||||
} else {
|
||||
if ((text == NULL) || (text[0] == '\0'))
|
||||
set_label_text (bb, idx, "");
|
||||
else
|
||||
set_label_text (bb, idx, text);
|
||||
bb->labels[idx - 1].command = command;
|
||||
bb->labels[idx - 1].receiver = receiver;
|
||||
}
|
||||
|
||||
bb->labels[idx - 1].command = command;
|
||||
bb->labels[idx - 1].receiver = (Widget *) receiver;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -251,7 +251,7 @@ struct global_keymap_t;
|
||||
WButtonBar *find_buttonbar (const Dlg_head *h);
|
||||
void buttonbar_set_label (WButtonBar *bb, int index, const char *text,
|
||||
const struct global_keymap_t *keymap, const Widget *receiver);
|
||||
#define buttonbar_clear_label(bb, idx) buttonbar_set_label (bb, idx, NULL, NULL, NULL);
|
||||
#define buttonbar_clear_label(bb, idx, recv) buttonbar_set_label (bb, idx, "", NULL, recv)
|
||||
void buttonbar_set_visible (WButtonBar *bb, gboolean visible);
|
||||
void buttonbar_redraw (WButtonBar *bb);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user