static void dlg_resize_cb (void *data, void *user_data) { Dlg_head *d = data; (void) user_data; d->callback (d, NULL, DLG_RESIZE, 0, NULL); }
static void dlg_resize_cb (void *data, void *user_data) { Dlg_head *d = data; (void) user_data; if (d->state == DLG_ACTIVE) d->callback (d, NULL, DLG_RESIZE, 0, NULL); else d->winch_pending = TRUE; }
static cb_ret_t check_callback (Widget * w, widget_msg_t msg, int parm) { WCheck *c = (WCheck *) w; Dlg_head *h = c->widget.owner; switch (msg) { case WIDGET_HOTKEY: if (c->text.hotkey != NULL) { if (g_ascii_tolower ((gchar) c->text.hotkey[0]) == parm) { check_callback (w, WIDGET_KEY, ' '); /* make action */ return MSG_HANDLED; } } return MSG_NOT_HANDLED; case WIDGET_KEY: if (parm != ' ') return MSG_NOT_HANDLED; c->state ^= C_BOOL; c->state ^= C_CHANGE; h->callback (h, w, DLG_ACTION, 0, NULL); check_callback (w, WIDGET_FOCUS, ' '); return MSG_HANDLED; case WIDGET_CURSOR: widget_move (&c->widget, 0, 1); return MSG_HANDLED; case WIDGET_FOCUS: case WIDGET_UNFOCUS: case WIDGET_DRAW: widget_selectcolor (w, msg == WIDGET_FOCUS, FALSE); widget_move (&c->widget, 0, 0); tty_print_string ((c->state & C_BOOL) ? "[x] " : "[ ] "); hotkey_draw (w, c->text, msg == WIDGET_FOCUS); return MSG_HANDLED; case WIDGET_DESTROY: release_hotkey (c->text); return MSG_HANDLED; default: return default_proc (msg, parm); } }
void dialog_switch_list (void) { const size_t dlg_num = g_list_length (mc_dialogs); int lines, cols; Listbox *listbox; GList *h; int i = 0; int rv; if (mc_global.widget.midnight_shutdown || mc_current == NULL) return; lines = min ((size_t) (LINES * 2 / 3), dlg_num); cols = COLS * 2 / 3; listbox = create_listbox_window (lines, cols, _("Screens"), "[Screen selector]"); for (h = mc_dialogs; h != NULL; h = g_list_next (h)) { Dlg_head *dlg; char *title; dlg = (Dlg_head *) h->data; if ((dlg != NULL) && (dlg->get_title != NULL)) title = dlg->get_title (dlg, listbox->list->widget.cols - 2); /* FIXME! */ else title = g_strdup (""); listbox_add_item (listbox->list, LISTBOX_APPEND_BEFORE, get_hotkey (i++), title, NULL); g_free (title); } listbox_select_entry (listbox->list, dlg_num - 1 - g_list_position (mc_dialogs, mc_current)); rv = run_listbox (listbox); if (rv >= 0) { h = g_list_nth (mc_dialogs, dlg_num - 1 - rv); dialog_switch_goto (h); } }
static int button_event (Gpm_Event * event, void *data) { WButton *b = data; if ((event->type & (GPM_DOWN | GPM_UP)) != 0) { Dlg_head *h = b->widget.owner; dlg_select_widget (b); if ((event->type & GPM_UP) != 0) { button_callback (&b->widget, WIDGET_KEY, ' '); h->callback (h, &b->widget, DLG_POST_KEY, ' ', NULL); return MOU_NORMAL; } } return MOU_NORMAL; }