static cb_ret_t chmod_callback (Dlg_head *h, dlg_msg_t msg, int parm) { char buffer[BUF_TINY]; int id = h->current->dlg_id - BUTTONS + single_set * 2; switch (msg) { case DLG_ACTION: if (id >= 0) { c_stat ^= check_perm[id].mode; g_snprintf (buffer, sizeof (buffer), "%o", c_stat); label_set_text (statl, buffer); chmod_toggle_select (h, id); mode_change = 1; } return MSG_HANDLED; case DLG_KEY: if ((parm == 'T' || parm == 't' || parm == KEY_IC) && id > 0) { chmod_toggle_select (h, id); if (parm == KEY_IC) dlg_one_down (h); return MSG_HANDLED; } return MSG_NOT_HANDLED; case DLG_DRAW: chmod_refresh (h); return MSG_HANDLED; default: return default_dlg_callback (h, msg, parm); } }
static cb_ret_t chmod_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void *data) { char buffer[BUF_TINY]; int id; id = dlg_get_current_widget_id (h) - (chmod_but_num - (single_set ? 4 : 0)) - 1; switch (msg) { case DLG_ACTION: /* close dialog due to SIGINT (ctrl-g) */ if (sender == NULL && parm == CK_Cancel) return MSG_NOT_HANDLED; /* handle checkboxes */ if (id >= 0) { gboolean sender_is_checkbox = FALSE; unsigned int i; /* whether action was sent by checkbox? */ for (i = 0; i < check_perm_num; i++) if (sender == (Widget *) check_perm[i].check) { sender_is_checkbox = TRUE; break; } if (sender_is_checkbox) { c_stat ^= check_perm[id].mode; g_snprintf (buffer, sizeof (buffer), "%o", (unsigned int) c_stat); label_set_text (statl, buffer); chmod_toggle_select (h, id); mode_change = TRUE; return MSG_HANDLED; } } return MSG_NOT_HANDLED; case DLG_KEY: if ((parm == 'T' || parm == 't' || parm == KEY_IC) && id > 0) { chmod_toggle_select (h, id); if (parm == KEY_IC) dlg_one_down (h); return MSG_HANDLED; } return MSG_NOT_HANDLED; case DLG_DRAW: chmod_refresh (h); return MSG_HANDLED; default: return default_dlg_callback (h, sender, msg, parm, data); } }