Commit: 87e716e620463e76fd3dfff5d0a51cf671a846a5
Parent: c98cc3b3ad4ca7372f452131b40132d07fd1257c
Author: opask
Date: Sat, 1 Dec 2018 17:41:41 -0700
bfu.c: style
Diffstat:
M | bfu.c | | | 1515 | ++++++++++++++++++++++++++++++++++++++++++++----------------------------------- |
1 file changed, 852 insertions(+), 663 deletions(-)
diff --git a/bfu.c b/bfu.c
@@ -383,15 +383,27 @@ static void display_menu_item_gfx(struct terminal *term, struct menu *menu, int
if (it < menu->view || it >= menu->ni || it >= menu->view + menu->nview) return;
y = menu->y + G_MENU_TOP_BORDER + (it - menu->view) * G_BFU_FONT_SIZE;
if (item->hotkey == M_BAR && !get_text_translation(item->text, term)[0]) {
- drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y, menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2, y + (G_BFU_FONT_SIZE - 1) / 2, bfu_bg_color);
- drv->draw_hline(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y + (G_BFU_FONT_SIZE - 1) / 2, menu->x + menu->xw - G_MENU_LEFT_BORDER / 2, bfu_fg_color);
- drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y + (G_BFU_FONT_SIZE - 1) / 2 + 1, menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2, y + G_BFU_FONT_SIZE, bfu_bg_color);
+ drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1,
+ y, menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2,
+ y + (G_BFU_FONT_SIZE - 1) / 2, bfu_bg_color);
+ drv->draw_hline(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1,
+ y + (G_BFU_FONT_SIZE - 1) / 2,
+ menu->x + menu->xw - G_MENU_LEFT_BORDER / 2,
+ bfu_fg_color);
+
+ drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1,
+ y + (G_BFU_FONT_SIZE - 1) / 2 + 1,
+ menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2,
+ y + G_BFU_FONT_SIZE, bfu_bg_color);
} else {
int p;
struct rect r;
unsigned char *rtext = get_text_translation(get_rtext(item->rtext), term);
if (it != menu->selected) {
- drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y, menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER, y + G_BFU_FONT_SIZE, bfu_bg_color);
+ drv->fill_area(dev,
+ menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y,
+ menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER,
+ y + G_BFU_FONT_SIZE, bfu_bg_color);
} else {
menu->xl1 = menu->x;
menu->yl1 = y;
@@ -399,11 +411,22 @@ static void display_menu_item_gfx(struct terminal *term, struct menu *menu, int
menu->yl2 = y + G_BFU_FONT_SIZE;
menu_ptr_set = 1;
set_window_ptr(menu->win, menu->x + menu->xw, y);
- drv->fill_area(dev, menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y, menu->x + G_MENU_LEFT_BORDER, y + G_BFU_FONT_SIZE, bfu_bg_color);
- drv->fill_area(dev, menu->x + menu->xw - G_MENU_LEFT_BORDER, y, menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2, y + G_BFU_FONT_SIZE, bfu_bg_color);
- drv->fill_area(dev, menu->x + G_MENU_LEFT_BORDER, y, menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER, y + G_BFU_FONT_SIZE, bfu_fg_color);
+ drv->fill_area(dev,
+ menu->x + (G_MENU_LEFT_BORDER - 1) / 2 + 1, y,
+ menu->x + G_MENU_LEFT_BORDER,
+ y + G_BFU_FONT_SIZE, bfu_bg_color);
+ drv->fill_area(dev,
+ menu->x + menu->xw - G_MENU_LEFT_BORDER, y,
+ menu->x + menu->xw - (G_MENU_LEFT_BORDER + 1) / 2,
+ y + G_BFU_FONT_SIZE, bfu_bg_color);
+ drv->fill_area(dev, menu->x + G_MENU_LEFT_BORDER, y,
+ menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER,
+ y + G_BFU_FONT_SIZE, bfu_fg_color);
}
- restrict_clip_area(dev, &r, menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER, y, menu->x + menu->xw - G_MENU_LEFT_BORDER - G_MENU_LEFT_INNER_BORDER, y + G_BFU_FONT_SIZE);
+ restrict_clip_area(dev, &r,
+ menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER,
+ y, menu->x + menu->xw - G_MENU_LEFT_BORDER - G_MENU_LEFT_INNER_BORDER,
+ y + G_BFU_FONT_SIZE);
if (it == menu->selected) {
p = menu->x + G_MENU_LEFT_BORDER + G_MENU_LEFT_INNER_BORDER;
g_print_text(dev, p, y, bfu_style_wb, menu->hktxt1[it], &p);
@@ -475,168 +498,185 @@ static void menu_func(struct window *win, struct links_event *ev, int fwd)
struct menu *menu = win->data;
menu->win = win;
switch ((int)ev->ev) {
- case EV_INIT:
- case EV_RESIZE:
- get_parent_ptr(win, &menu->xp, &menu->yp);
+ case EV_INIT:
+ case EV_RESIZE:
+ get_parent_ptr(win, &menu->xp, &menu->yp);
+ count_menu_size(win->term, menu);
+ goto xxx;
+ case EV_REDRAW:
+ get_parent_ptr(win, &xp, &yp);
+ if (xp != menu->xp || yp != menu->yp) {
+ menu->xp = xp;
+ menu->yp = yp;
count_menu_size(win->term, menu);
- goto xxx;
- case EV_REDRAW:
- get_parent_ptr(win, &xp, &yp);
- if (xp != menu->xp || yp != menu->yp) {
- menu->xp = xp;
- menu->yp = yp;
- count_menu_size(win->term, menu);
- }
- xxx:
- menu->selected--;
- scroll_menu(menu, 1);
- draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx), menu);
+ }
+ xxx:
+ menu->selected--;
+ scroll_menu(menu, 1);
+ draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx), menu);
+ break;
+ case EV_MOUSE:
+ if ((ev->b & BM_ACT) == B_MOVE) break;
+ if ((ev->b & BM_BUTT) == B_FOURTH
+ || (ev->b & BM_BUTT) == B_FIFTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_lr;
break;
- case EV_MOUSE:
- if ((ev->b & BM_ACT) == B_MOVE) break;
- if ((ev->b & BM_BUTT) == B_FOURTH ||
- (ev->b & BM_BUTT) == B_FIFTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_lr;
- break;
- }
- if ((ev->b & BM_BUTT) == B_SIXTH) {
- break;
- }
- if (ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y || ev->y >= menu->y+menu->yw) {
- int f = 1;
- struct window *w1 = NULL;
- struct list_head *w1l;
- foreachfrom(struct window, w1, w1l, win->term->windows, &win->list_entry) {
- struct menu *m1;
- if (w1->handler == mainmenu_func) {
+ }
+ if ((ev->b & BM_BUTT) == B_SIXTH)
+ break;
+
+ if (ev->x < menu->x || ev->x >= menu->x+menu->xw
+ || ev->y < menu->y || ev->y >= menu->y+menu->yw) {
+ int f = 1;
+ struct window *w1 = NULL;
+ struct list_head *w1l;
+ foreachfrom(struct window, w1, w1l, win->term->windows, &win->list_entry) {
+ struct menu *m1;
+ if (w1->handler == mainmenu_func) {
#ifdef G
- struct mainmenu *m2 = w1->data;
- if (F && !f && ev->x >= m2->xl1 && ev->x < m2->xl2 && ev->y >= m2->yl1 && ev->y < m2->yl2) goto bbb;
+ struct mainmenu *m2 = w1->data;
+ if (F && !f && ev->x >= m2->xl1 && ev->x < m2->xl2 && ev->y >= m2->yl1 && ev->y < m2->yl2) goto bbb;
#endif
- if (ev->y < gf_val(1, G_BFU_FONT_SIZE)) goto del;
- break;
- }
- if (w1->handler != menu_func) break;
- m1 = w1->data;
+ if (ev->y < gf_val(1, G_BFU_FONT_SIZE)) goto del;
+ break;
+ }
+ if (w1->handler != menu_func) break;
+ m1 = w1->data;
#ifdef G
- if (F && !f && ev->x >= m1->xl1 && ev->x < m1->xl2 && ev->y >= m1->yl1 && ev->y < m1->yl2) goto bbb;
+ if (F && !f && ev->x >= m1->xl1
+ && ev->x < m1->xl2 && ev->y >= m1->yl1
+ && ev->y < m1->yl2)
+ goto bbb;
#endif
- if (ev->x > m1->x && ev->x < m1->x+m1->xw-1 && ev->y > m1->y && ev->y < m1->y+m1->yw-1) goto del;
- f--;
- }
- if ((ev->b & BM_ACT) == B_DOWN) goto del;
- if (0) del:delete_window_ev(win, ev);
+ if (ev->x > m1->x && ev->x < m1->x+m1->xw-1
+ && ev->y > m1->y && ev->y < m1->y+m1->yw-1)
+ goto del;
+ f--;
+ }
+ if ((ev->b & BM_ACT) == B_DOWN) goto del;
+ if (0)
+ del: delete_window_ev(win, ev);
#ifdef G
- bbb:;
+ bbb:;
#endif
- } else {
- if (!(ev->x < menu->x || ev->x >= menu->x+menu->xw || ev->y < menu->y + gf_val(1, G_MENU_TOP_BORDER) || ev->y >= menu->y + menu->yw - gf_val(1, G_MENU_TOP_BORDER))) {
- int s = gf_val(ev->y - menu->y-1 + menu->view, (ev->y - menu->y - G_MENU_TOP_BORDER) / G_BFU_FONT_SIZE + menu->view);
- if (s >= 0 && s < menu->ni && menu->items[s].hotkey != M_BAR) {
- menu_oldview = menu->view;
- menu_oldsel = menu->selected;
- menu->selected = s;
- scroll_menu(menu, 0);
- draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx), menu);
- menu_oldview = menu_oldsel = -1;
- if ((ev->b & BM_ACT) == B_UP /*|| menu->items[s].in_m*/) select_menu(win->term, menu);
- }
+ } else {
+ if (!(ev->x < menu->x || ev->x >= menu->x+menu->xw
+ || ev->y < menu->y + gf_val(1, G_MENU_TOP_BORDER)
+ || ev->y >= menu->y + menu->yw - gf_val(1, G_MENU_TOP_BORDER))) {
+ int s = gf_val(ev->y - menu->y-1 + menu->view, (ev->y - menu->y - G_MENU_TOP_BORDER) / G_BFU_FONT_SIZE + menu->view);
+ if (s >= 0 && s < menu->ni && menu->items[s].hotkey != M_BAR) {
+ menu_oldview = menu->view;
+ menu_oldsel = menu->selected;
+ menu->selected = s;
+ scroll_menu(menu, 0);
+ draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx), menu);
+ menu_oldview = menu_oldsel = -1;
+ if ((ev->b & BM_ACT) == B_UP)
+ select_menu(win->term, menu);
}
}
+ }
+ break;
+ case EV_KBD:
+ if (ev->y & KBD_PASTING) break;
+ if (ev->x == KBD_LEFT || ev->x == KBD_RIGHT) {
+ go_lr:
+ if (win->list_entry.next == &win->term->windows)
+ goto mm;
+ if (list_struct(win->list_entry.next, struct window)->handler == mainmenu_func)
+ goto mm;
+ if (ev->ev == EV_MOUSE && (ev->b & BM_BUTT) == B_FIFTH)
+ goto mm;
+ if (ev->ev == EV_KBD && ev->x == KBD_RIGHT) goto enter;
+ delete_window(win);
break;
- case EV_KBD:
- if (ev->y & KBD_PASTING) break;
- if (ev->x == KBD_LEFT || ev->x == KBD_RIGHT) {
-go_lr:
- if (win->list_entry.next == &win->term->windows)
- goto mm;
- if (list_struct(win->list_entry.next, struct window)->handler == mainmenu_func)
- goto mm;
- if (ev->ev == EV_MOUSE && (ev->b & BM_BUTT) == B_FIFTH) goto mm;
- if (ev->ev == EV_KBD && ev->x == KBD_RIGHT) goto enter;
- delete_window(win);
- break;
- }
- if (ev->x == KBD_ESC) {
- if (win->list_entry.next == &win->term->windows)
- ev = NULL;
- else if (list_struct(win->list_entry.next, struct window)->handler != mainmenu_func)
- ev = NULL;
- delete_window_ev(win, ev);
- break;
- }
- if (KBD_ESCAPE_MENU(ev->x) || ev->y & KBD_ALT) {
- mm:
- delete_window_ev(win, ev);
- break;
- }
- menu_oldview = menu->view;
- menu_oldsel = menu->selected;
- if (ev->x == KBD_UP) scroll_menu(menu, -1);
- else if (ev->x == KBD_DOWN) scroll_menu(menu, 1);
- else if (ev->x == KBD_HOME || (upcase(ev->x) == 'A' && ev->y & KBD_CTRL)) {
- menu->selected = -1;
- scroll_menu(menu, 1);
- } else if (ev->x == KBD_END || (upcase(ev->x) == 'E' && ev->y & KBD_CTRL)) {
- menu->selected = menu->ni;
- scroll_menu(menu, -1);
- } else if (ev->x == KBD_PAGE_UP || (upcase(ev->x) == 'B' && ev->y & KBD_CTRL)) {
- if ((menu->selected -= menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 3) < -1) menu->selected = -1;
- if ((menu->view -= menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 2) < 0) menu->view = 0;
- scroll_menu(menu, -1);
- }
- else if (ev->x == KBD_PAGE_DOWN || (upcase(ev->x) == 'F' && ev->y & KBD_CTRL)) {
- if ((menu->selected += menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 3) > menu->ni) menu->selected = menu->ni;
- if ((menu->view += menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 2) >= menu->ni - menu->yw + 2) menu->view = menu->ni - menu->yw + 2;
- scroll_menu(menu, 1);
- }
- else if (ev->x > ' ') {
- int i;
- for (i = 0; i < menu->ni; i++) {
- if (charset_upcase(ev->x, term_charset(win->term)) == menu->hotkeys[i]) {
- menu->selected = i;
- scroll_menu(menu, 0);
- s = 1;
- }
+ }
+ if (ev->x == KBD_ESC) {
+ if (win->list_entry.next == &win->term->windows)
+ ev = NULL;
+ else if (list_struct(win->list_entry.next, struct window)->handler != mainmenu_func)
+ ev = NULL;
+ delete_window_ev(win, ev);
+ break;
+ }
+ if (KBD_ESCAPE_MENU(ev->x) || ev->y & KBD_ALT) {
+ mm:
+ delete_window_ev(win, ev);
+ break;
+ }
+ menu_oldview = menu->view;
+ menu_oldsel = menu->selected;
+ if (ev->x == KBD_UP) scroll_menu(menu, -1);
+ else if (ev->x == KBD_DOWN) scroll_menu(menu, 1);
+ else if (ev->x == KBD_HOME || (upcase(ev->x) == 'A'
+ && ev->y & KBD_CTRL)) {
+ menu->selected = -1;
+ scroll_menu(menu, 1);
+ } else if (ev->x == KBD_END || (upcase(ev->x) == 'E'
+ && ev->y & KBD_CTRL)) {
+ menu->selected = menu->ni;
+ scroll_menu(menu, -1);
+ } else if (ev->x == KBD_PAGE_UP || (upcase(ev->x) == 'B'
+ && ev->y & KBD_CTRL)) {
+ if ((menu->selected -= menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 3) < -1) menu->selected = -1;
+ if ((menu->view -= menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 2) < 0) menu->view = 0;
+ scroll_menu(menu, -1);
+ }
+ else if (ev->x == KBD_PAGE_DOWN || (upcase(ev->x) == 'F'
+ && ev->y & KBD_CTRL)) {
+ if ((menu->selected += menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 3) > menu->ni) menu->selected = menu->ni;
+ if ((menu->view += menu->yw / gf_val(1, G_BFU_FONT_SIZE) - 2) >= menu->ni - menu->yw + 2) menu->view = menu->ni - menu->yw + 2;
+ scroll_menu(menu, 1);
+ }
+ else if (ev->x > ' ') {
+ int i;
+ for (i = 0; i < menu->ni; i++) {
+ if (charset_upcase(ev->x, term_charset(win->term)) == menu->hotkeys[i]) {
+ menu->selected = i;
+ scroll_menu(menu, 0);
+ s = 1;
}
}
- draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx), menu);
- if (s || ev->x == KBD_ENTER || ev->x == ' ') {
- enter:
- menu_oldview = menu_oldsel = -1;
- select_menu(win->term, menu);
- }
+ }
+ draw_to_window(win, gf_val(display_menu_txt, display_menu_gfx),
+ menu);
+ if (s || ev->x == KBD_ENTER || ev->x == ' ') {
+ enter:
menu_oldview = menu_oldsel = -1;
- break;
- case EV_ABORT:
+ select_menu(win->term, menu);
+ }
+ menu_oldview = menu_oldsel = -1;
+ break;
+ case EV_ABORT:
#ifdef G
- if (F) {
- int i;
- for (i = 0; i < menu->ni; i++) {
- free(menu->hktxt1[i]);
- free(menu->hktxt2[i]);
- free(menu->hktxt3[i]);
- }
- free(menu->hktxt1);
- free(menu->hktxt2);
- free(menu->hktxt3);
+ if (F) {
+ int i;
+ for (i = 0; i < menu->ni; i++) {
+ free(menu->hktxt1[i]);
+ free(menu->hktxt2[i]);
+ free(menu->hktxt3[i]);
}
+ free(menu->hktxt1);
+ free(menu->hktxt2);
+ free(menu->hktxt3);
+ }
#endif
- if (menu->items->free_i) {
- int i;
- for (i = 0; i < menu->ni; i++) {
- if (menu->items[i].free_i & 2)
- free(menu->items[i].text);
- if (menu->items[i].free_i & 4)
- free(menu->items[i].rtext);
- if (menu->items[i].free_i & 8)
- free(menu->items[i].hotkey);
- }
- free(menu->items);
+ if (menu->items->free_i) {
+ int i;
+ for (i = 0; i < menu->ni; i++) {
+ if (menu->items[i].free_i & 2)
+ free(menu->items[i].text);
+ if (menu->items[i].free_i & 4)
+ free(menu->items[i].rtext);
+ if (menu->items[i].free_i & 8)
+ free(menu->items[i].hotkey);
}
- if (menu->free_function)
- register_bottom_half(menu->free_function, menu->free_data);
- break;
+ free(menu->items);
+ }
+ if (menu->free_function)
+ register_bottom_half(menu->free_function,
+ menu->free_data);
+ break;
}
}
@@ -702,7 +742,8 @@ static void display_mainmenu(struct terminal *term, void *menu_)
} else {
struct graphics_device *dev = term->dev;
int i, p;
- drv->fill_area(dev, 0, 0, p = G_MAINMENU_LEFT_BORDER, G_BFU_FONT_SIZE, bfu_bg_color);
+ drv->fill_area(dev, 0, 0, p = G_MAINMENU_LEFT_BORDER,
+ G_BFU_FONT_SIZE, bfu_bg_color);
for (i = 0; i < menu->ni; i++) {
int s = i == menu->selected;
unsigned char *text = get_text_translation(menu->items[i].text, term);
@@ -713,8 +754,11 @@ static void display_mainmenu(struct terminal *term, void *menu_)
}
drv->fill_area(dev, p, 0, p + G_MAINMENU_BORDER, G_BFU_FONT_SIZE, s ? bfu_fg_color : bfu_bg_color);
p += G_MAINMENU_BORDER;
- g_print_text(dev, p, 0, s ? bfu_style_wb : bfu_style_bw, text, &p);
- drv->fill_area(dev, p, 0, p + G_MAINMENU_BORDER, G_BFU_FONT_SIZE, s ? bfu_fg_color : bfu_bg_color);
+ g_print_text(dev, p, 0, s ? bfu_style_wb : bfu_style_bw,
+ text, &p);
+ drv->fill_area(dev, p, 0, p + G_MAINMENU_BORDER,
+ G_BFU_FONT_SIZE,
+ s ? bfu_fg_color : bfu_bg_color);
p += G_MAINMENU_BORDER;
if (s) {
menu->xl2 = p;
@@ -752,88 +796,95 @@ static void mainmenu_func(struct window *win, struct links_event *ev, int fwd)
struct mainmenu *menu = win->data;
menu->win = win;
switch ((int)ev->ev) {
- case EV_INIT:
- case EV_RESIZE:
+ case EV_INIT:
+ case EV_RESIZE:
#ifdef G
- if (F) set_window_pos(win, 0, 0, win->term->x, G_BFU_FONT_SIZE);
+ if (F) set_window_pos(win, 0, 0, win->term->x, G_BFU_FONT_SIZE);
#endif
- /*-fallthrough*/
- case EV_REDRAW:
- draw_to_window(win, display_mainmenu, menu);
+ /*-fallthrough*/
+ case EV_REDRAW:
+ draw_to_window(win, display_mainmenu, menu);
+ break;
+ case EV_MOUSE:
+ in_menu = ev->x >= 0 && ev->x < win->term->x && ev->y >= 0 && ev->y < gf_val(1, G_BFU_FONT_SIZE);
+ if ((ev->b & BM_ACT) == B_MOVE) break;
+ if ((ev->b & BM_BUTT) == B_FOURTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_left;
break;
- case EV_MOUSE:
- in_menu = ev->x >= 0 && ev->x < win->term->x && ev->y >= 0 && ev->y < gf_val(1, G_BFU_FONT_SIZE);
- if ((ev->b & BM_ACT) == B_MOVE) break;
- if ((ev->b & BM_BUTT) == B_FOURTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_left;
- break;
- }
- if ((ev->b & BM_BUTT) == B_FIFTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_right;
- break;
- }
- if ((ev->b & BM_BUTT) == B_SIXTH) {
- break;
- }
- if ((ev->b & BM_ACT) == B_DOWN && !in_menu) delete_window_ev(win, ev);
- else if (in_menu) {
- int i;
- int p = gf_val(2, G_MAINMENU_LEFT_BORDER);
- for (i = 0; i < menu->ni; i++) {
- int o = p;
- unsigned char *tmptext = get_text_translation(menu->items[i].text, win->term);
- p += txtlen(win->term, tmptext) + gf_val(4, 2 * G_MAINMENU_BORDER);
- if (ev->x >= o && ev->x < p) {
- menu->selected = i;
- draw_to_window(win, display_mainmenu, menu);
- if ((ev->b & BM_ACT) == B_UP
- || menu->items[s].in_m)
- select_mainmenu(win->term, menu);
- break;
- }
+ }
+ if ((ev->b & BM_BUTT) == B_FIFTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_right;
+ break;
+ }
+ if ((ev->b & BM_BUTT) == B_SIXTH) {
+ break;
+ }
+ if ((ev->b & BM_ACT) == B_DOWN && !in_menu)
+ delete_window_ev(win, ev);
+ else if (in_menu) {
+ int i;
+ int p = gf_val(2, G_MAINMENU_LEFT_BORDER);
+ for (i = 0; i < menu->ni; i++) {
+ int o = p;
+ unsigned char *tmptext = get_text_translation(menu->items[i].text, win->term);
+ p += txtlen(win->term, tmptext) + gf_val(4, 2 * G_MAINMENU_BORDER);
+ if (ev->x >= o && ev->x < p) {
+ menu->selected = i;
+ draw_to_window(win, display_mainmenu, menu);
+ if ((ev->b & BM_ACT) == B_UP
+ || menu->items[s].in_m)
+ select_mainmenu(win->term, menu);
+ break;
}
}
+ }
+ break;
+ case EV_KBD:
+ if (ev->y & KBD_PASTING) break;
+ if (ev->x == ' ' || ev->x == KBD_ENTER || ev->x == KBD_DOWN
+ || ev->x == KBD_UP || ev->x == KBD_PAGE_DOWN
+ || (upcase(ev->x) == 'F' && ev->y & KBD_CTRL)
+ || ev->x == KBD_PAGE_UP
+ || (upcase(ev->x) == 'B' && ev->y & KBD_CTRL)) {
+ select_mainmenu(win->term, menu);
break;
- case EV_KBD:
- if (ev->y & KBD_PASTING) break;
- if (ev->x == ' ' || ev->x == KBD_ENTER || ev->x == KBD_DOWN || ev->x == KBD_UP || ev->x == KBD_PAGE_DOWN || (upcase(ev->x) == 'F' && ev->y & KBD_CTRL) || ev->x == KBD_PAGE_UP || (upcase(ev->x) == 'B' && ev->y & KBD_CTRL)) {
- select_mainmenu(win->term, menu);
- break;
- } else if (ev->x == KBD_LEFT) {
-go_left:
- if (!menu->selected--) menu->selected = menu->ni - 1;
- s = 1;
- if (fwd) s = 2;
- } else if (ev->x == KBD_RIGHT) {
-go_right:
- if (++menu->selected >= menu->ni) menu->selected = 0;
- s = 1;
- if (fwd) s = 2;
- } else if (ev->x == KBD_HOME || (upcase(ev->x) == 'A' && ev->y & KBD_CTRL)) {
- menu->selected = 0;
- s = 1;
- } else if (ev->x == KBD_END || (upcase(ev->x) == 'E' && ev->y & KBD_CTRL)) {
- menu->selected = menu->ni - 1;
- s = 1;
- } else if (ev->x > ' ') {
- int i;
- s = 1;
- for (i = 0; i < menu->ni; i++) {
- if (charset_upcase(ev->x, term_charset(win->term)) == menu->hotkeys[i]) {
- menu->selected = i;
- s = 2;
- }
+ } else if (ev->x == KBD_LEFT) {
+ go_left:
+ if (!menu->selected--) menu->selected = menu->ni - 1;
+ s = 1;
+ if (fwd) s = 2;
+ } else if (ev->x == KBD_RIGHT) {
+ go_right:
+ if (++menu->selected >= menu->ni) menu->selected = 0;
+ s = 1;
+ if (fwd) s = 2;
+ } else if (ev->x == KBD_HOME || (upcase(ev->x) == 'A'
+ && ev->y & KBD_CTRL)) {
+ menu->selected = 0;
+ s = 1;
+ } else if (ev->x == KBD_END || (upcase(ev->x) == 'E'
+ && ev->y & KBD_CTRL)) {
+ menu->selected = menu->ni - 1;
+ s = 1;
+ } else if (ev->x > ' ') {
+ int i;
+ s = 1;
+ for (i = 0; i < menu->ni; i++) {
+ if (charset_upcase(ev->x, term_charset(win->term)) == menu->hotkeys[i]) {
+ menu->selected = i;
+ s = 2;
}
}
- if (!s) {
- delete_window_ev(win, KBD_ESCAPE_MENU(ev->x) || ev->y & KBD_ALT ? ev : NULL);
- break;
- }
- draw_to_window(win, display_mainmenu, menu);
- if (s == 2) select_mainmenu(win->term, menu);
- break;
- case EV_ABORT:
+ }
+ if (!s) {
+ delete_window_ev(win, KBD_ESCAPE_MENU(ev->x) || ev->y & KBD_ALT ? ev : NULL);
break;
+ }
+ draw_to_window(win, display_mainmenu, menu);
+ if (s == 2) select_mainmenu(win->term, menu);
+ break;
+ case EV_ABORT:
+ break;
}
}
@@ -852,9 +903,8 @@ void add_to_menu(struct menu_item **mi, unsigned char *text, unsigned char *rtex
if (pos != -1) {
n = pos;
if ((*mi)[n].text) internal("invalid menu position %d", n);
- } else {
+ } else
for (n = 0; (*mi)[n].text; n++) if (n == INT_MAX) overalloc();
- }
if (((unsigned)n + 2) > INT_MAX / sizeof(struct menu_item))
overalloc();
mii = xrealloc(*mi, (n + 2) * sizeof(struct menu_item));
@@ -929,7 +979,8 @@ void display_dlg_item(struct dialog_data *dlg, struct dialog_item_data *di, int
if (di->item->type == D_FIELD_PASS)
free(t);
if (sel) {
- set_cursor(term, di->x + vposlen - cposlen, di->y, di->x + vposlen - cposlen, di->y);
+ set_cursor(term, di->x + vposlen - cposlen,
+ di->y, di->x + vposlen - cposlen, di->y);
set_window_ptr(dlg->win, di->x, di->y);
}
break;
@@ -938,9 +989,11 @@ void display_dlg_item(struct dialog_data *dlg, struct dialog_item_data *di, int
text = get_text_translation(di->item->text, term);
print_text(term, di->x, di->y, 2, cast_uchar "[ ", co);
print_text(term, di->x + 2, di->y, strlen((char *)text), text, co);
- print_text(term, di->x + 2 + strlen((char *)text), di->y, 2, cast_uchar " ]", co);
+ print_text(term, di->x + 2 + strlen((char *)text),
+ di->y, 2, cast_uchar " ]", co);
if (sel) {
- set_cursor(term, di->x + 2, di->y, di->x + 2, di->y);
+ set_cursor(term, di->x + 2, di->y, di->x + 2,
+ di->y);
set_window_ptr(dlg->win, di->x, di->y);
}
break;
@@ -950,117 +1003,130 @@ void display_dlg_item(struct dialog_data *dlg, struct dialog_item_data *di, int
} else {
struct rect rr;
struct graphics_device *dev = term->dev;
- if (!dlg->s) restrict_clip_area(dev, &rr, dlg->rr.x1, dlg->rr.y1, dlg->rr.x2, dlg->rr.y2);
+ if (!dlg->s)
+ restrict_clip_area(dev, &rr, dlg->rr.x1, dlg->rr.y1,
+ dlg->rr.x2, dlg->rr.y2);
switch (di->item->type) {
int p, pp;
struct style *st;
unsigned char *text, *text2, *text3, *tt, *t;
struct rect r;
- case D_CHECKBOX:
- p = di->x;
- if (di->checked) {
- if (!sel) g_print_text(dev, di->x, di->y, bfu_style_bw, di->item->gid?cast_uchar(G_DIALOG_RADIO_L G_DIALOG_RADIO_X G_DIALOG_RADIO_R):cast_uchar(G_DIALOG_CHECKBOX_L G_DIALOG_CHECKBOX_X G_DIALOG_CHECKBOX_R), &p);
- else {
- g_print_text(dev, di->x, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_L:cast_uchar G_DIALOG_CHECKBOX_L, &p);
- g_print_text(dev, p, di->y, bfu_style_bw_u, di->item->gid?cast_uchar G_DIALOG_RADIO_X:cast_uchar G_DIALOG_CHECKBOX_X, &p);
- g_print_text(dev, p, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_R:cast_uchar G_DIALOG_CHECKBOX_R, &p);
- }
- } else {
- int s = g_text_width(bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_X:cast_uchar G_DIALOG_CHECKBOX_X);
+ case D_CHECKBOX:
+ p = di->x;
+ if (di->checked) {
+ if (!sel)
+ g_print_text(dev, di->x, di->y, bfu_style_bw, di->item->gid ? cast_uchar(G_DIALOG_RADIO_L G_DIALOG_RADIO_X G_DIALOG_RADIO_R) : cast_uchar(G_DIALOG_CHECKBOX_L G_DIALOG_CHECKBOX_X G_DIALOG_CHECKBOX_R), &p);
+ else {
g_print_text(dev, di->x, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_L:cast_uchar G_DIALOG_CHECKBOX_L, &p);
- if (!sel) {
- drv->fill_area(dev, p, di->y,
- p + s,
- di->y + G_BFU_FONT_SIZE,
- bfu_bg_color);
- p += s;
- } else {
- restrict_clip_area(dev, &r, p, di->y, p + s, di->y + G_BFU_FONT_SIZE);
- g_print_text(dev, p, di->y, bfu_style_bw_u, cast_uchar " ", NULL);
- p += s;
- set_clip_area(dev, &r);
- }
+ g_print_text(dev, p, di->y, bfu_style_bw_u, di->item->gid?cast_uchar G_DIALOG_RADIO_X:cast_uchar G_DIALOG_CHECKBOX_X, &p);
g_print_text(dev, p, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_R:cast_uchar G_DIALOG_CHECKBOX_R, &p);
}
- di->l = p - di->x;
- if (sel) set_window_ptr(dlg->win, di->x, di->y + G_BFU_FONT_SIZE);
- if (dlg->s) exclude_from_set(&dlg->s, di->x, di->y, p, di->y + G_BFU_FONT_SIZE);
- break;
- case D_FIELD:
- case D_FIELD_PASS:
- text = memacpy(di->cdata, di->cpos);
- if (*(text2 = text3 = di->cdata + di->cpos)) {
- GET_UTF_8(text3, p);
- text2 = memacpy(text2, text3 - text2);
+ } else {
+ int s = g_text_width(bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_X:cast_uchar G_DIALOG_CHECKBOX_X);
+ g_print_text(dev, di->x, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_L:cast_uchar G_DIALOG_CHECKBOX_L, &p);
+ if (!sel) {
+ drv->fill_area(dev, p, di->y,
+ p + s,
+ di->y + G_BFU_FONT_SIZE,
+ bfu_bg_color);
+ p += s;
} else {
- text2 = stracpy(cast_uchar " ");
- text3 = cast_uchar "";
+ restrict_clip_area(dev, &r, p, di->y, p + s, di->y + G_BFU_FONT_SIZE);
+ g_print_text(dev, p, di->y, bfu_style_bw_u, cast_uchar " ", NULL);
+ p += s;
+ set_clip_area(dev, &r);
}
- if (!text2) {
- free(text);
- break;
+ g_print_text(dev, p, di->y, bfu_style_bw, di->item->gid?cast_uchar G_DIALOG_RADIO_R:cast_uchar G_DIALOG_CHECKBOX_R, &p);
+ }
+ di->l = p - di->x;
+ if (sel) set_window_ptr(dlg->win, di->x, di->y + G_BFU_FONT_SIZE);
+ if (dlg->s) exclude_from_set(&dlg->s, di->x, di->y, p, di->y + G_BFU_FONT_SIZE);
+ break;
+ case D_FIELD:
+ case D_FIELD_PASS:
+ text = memacpy(di->cdata, di->cpos);
+ if (*(text2 = text3 = di->cdata + di->cpos)) {
+ GET_UTF_8(text3, p);
+ text2 = memacpy(text2, text3 - text2);
+ } else {
+ text2 = stracpy(cast_uchar " ");
+ text3 = cast_uchar "";
+ }
+ if (!text2) {
+ free(text);
+ break;
+ }
+ text3 = stracpy(text3);
+ if (di->item->type == D_FIELD_PASS) {
+ unsigned d;
+ for (tt = t = text; *tt; ) {
+ t = tt;
+ GET_UTF_8(tt, d);
+ *t++ = '*';
}
- text3 = stracpy(text3);
- if (di->item->type == D_FIELD_PASS) {
- unsigned d;
- for (tt = t = text; *tt; ) {
+ *t = 0;
+ if (di->cdata[di->cpos]) {
+ for (tt = t = text2; *tt; ) {
t = tt;
GET_UTF_8(tt, d);
*t++ = '*';
}
*t = 0;
- if (di->cdata[di->cpos]) {
- for (tt = t = text2; *tt; ) {
- t = tt;
- GET_UTF_8(tt, d);
- *t++ = '*';
- }
- *t = 0;
- for (tt = t = text3; *tt; ) {
- t = tt;
- GET_UTF_8(tt, d);
- *t++ = '*';
- }
- *t = 0;
+ for (tt = t = text3; *tt; ) {
+ t = tt;
+ GET_UTF_8(tt, d);
+ *t++ = '*';
}
+ *t = 0;
}
- p = g_text_width(bfu_style_wb_mono, text);
- pp = g_text_width(bfu_style_wb_mono, text2);
- if (di->vpos + di->l < p + pp) di->vpos = p + pp - di->l;
- if (di->vpos > p) di->vpos = p;
- if (di->vpos < 0) di->vpos = 0;
-
- if (dlg->s) exclude_from_set(&dlg->s, di->x, di->y, di->x + di->l, di->y + G_BFU_FONT_SIZE);
- restrict_clip_area(dev, &r, di->x, di->y, di->x + di->l, di->y + G_BFU_FONT_SIZE);
- p = di->x - di->vpos;
- g_print_text(dev, p, di->y, bfu_style_wb_mono, text, &p);
- g_print_text(dev, p, di->y, sel ? bfu_style_wb_mono_u : bfu_style_wb_mono, text2, &p);
- g_print_text(dev, p, di->y, bfu_style_wb_mono, text3, &p);
- drv->fill_area(dev, p, di->y, di->x + di->l, di->y + G_BFU_FONT_SIZE, bfu_fg_color);
- set_clip_area(dev, &r);
- free(text);
- free(text2);
- free(text3);
- if (sel) {
- set_window_ptr(dlg->win, di->x, di->y);
- }
+ }
+ p = g_text_width(bfu_style_wb_mono, text);
+ pp = g_text_width(bfu_style_wb_mono, text2);
+ if (di->vpos + di->l < p + pp) di->vpos = p + pp - di->l;
+ if (di->vpos > p) di->vpos = p;
+ if (di->vpos < 0) di->vpos = 0;
+
+ if (dlg->s)
+ exclude_from_set(&dlg->s, di->x, di->y,
+ di->x + di->l, di->y + G_BFU_FONT_SIZE);
+ restrict_clip_area(dev, &r, di->x, di->y, di->x + di->l,
+ di->y + G_BFU_FONT_SIZE);
+ p = di->x - di->vpos;
+ g_print_text(dev, p, di->y, bfu_style_wb_mono, text, &p);
+ g_print_text(dev, p, di->y,
+ sel ? bfu_style_wb_mono_u : bfu_style_wb_mono,
+ text2, &p);
+ g_print_text(dev, p, di->y, bfu_style_wb_mono, text3, &p);
+ drv->fill_area(dev, p, di->y, di->x + di->l,
+ di->y + G_BFU_FONT_SIZE, bfu_fg_color);
+ set_clip_area(dev, &r);
+ free(text);
+ free(text2);
+ free(text3);
+ if (sel) {
+ set_window_ptr(dlg->win, di->x, di->y);
+ }
- break;
- case D_BUTTON:
- st = sel ? bfu_style_wb_b : bfu_style_bw;
- text = get_text_translation(di->item->text, term);
- text2 = xmalloc(strlen(cast_const_char text) + 5);
- strcpy(cast_char text2, cast_const_char G_DIALOG_BUTTON_L);
- strcpy(cast_char(text2 + 2), cast_const_char text);
- strcat(cast_char text2, cast_const_char G_DIALOG_BUTTON_R);
- di->l = 0;
- g_print_text(dev, di->x, di->y, st, text2, &di->l);
- free(text2);
- if (dlg->s) exclude_from_set(&dlg->s, di->x, di->y, di->x + di->l, di->y + G_BFU_FONT_SIZE);
- if (sel) set_window_ptr(dlg->win, di->x, di->y + G_BFU_FONT_SIZE);
- break;
- default:
- internal("display_dlg_item: unknown item: %d", di->item->type);
+ break;
+ case D_BUTTON:
+ st = sel ? bfu_style_wb_b : bfu_style_bw;
+ text = get_text_translation(di->item->text, term);
+ text2 = xmalloc(strlen(cast_const_char text) + 5);
+ strcpy(cast_char text2, cast_const_char G_DIALOG_BUTTON_L);
+ strcpy(cast_char(text2 + 2), cast_const_char text);
+ strcat(cast_char text2, cast_const_char G_DIALOG_BUTTON_R);
+ di->l = 0;
+ g_print_text(dev, di->x, di->y, st, text2, &di->l);
+ free(text2);
+ if (dlg->s)
+ exclude_from_set(&dlg->s, di->x, di->y,
+ di->x + di->l, di->y + G_BFU_FONT_SIZE);
+ if (sel)
+ set_window_ptr(dlg->win, di->x,
+ di->y + G_BFU_FONT_SIZE);
+ break;
+ default:
+ internal("display_dlg_item: unknown item: %d", di->item->type);
}
if (!dlg->s) set_clip_area(dev, &rr);
#endif
@@ -1091,7 +1157,8 @@ static void x_display_dlg_item(struct dialog_data *dlg, struct dialog_item_data
static void dlg_select_item(struct dialog_data *dlg, struct dialog_item_data *di)
{
if (di->item->type == D_CHECKBOX) {
- if (!di->item->gid) di -> checked = *(int *)di->cdata = !*(int *)di->cdata;
+ if (!di->item->gid)
+ di -> checked = *(int *)di->cdata = !*(int *)di->cdata;
else {
int i;
for (i = 0; i < dlg->n; i++) {
@@ -1145,51 +1212,62 @@ static void dlg_set_history(struct terminal *term, struct dialog_item_data *di)
static int dlg_mouse(struct dialog_data *dlg, struct dialog_item_data *di, struct links_event *ev)
{
switch (di->item->type) {
- case D_BUTTON:
- if (gf_val(ev->y != di->y, ev->y < di->y || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x || ev->x >= di->x + gf_val(strlen((char *)get_text_translation(di->item->text, dlg->win->term)) + 4, di->l)) return 0;
- if (dlg->selected != di - dlg->items) {
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- dlg->selected = (int)(di - dlg->items);
- x_display_dlg_item(dlg, di, 1);
- }
- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di);
- return 1;
- case D_FIELD:
- case D_FIELD_PASS:
- if (gf_val(ev->y != di->y, ev->y < di->y || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x || ev->x >= di->x + di->l) return 0;
- if (!is_utf_8(dlg->win->term)) {
- if ((size_t)(di->cpos = di->vpos + ev->x - di->x) > strlen(cast_const_char di->cdata)) di->cpos = (int)strlen(cast_const_char di->cdata);
- } else {
- int p, u;
- unsigned char *t = di->cdata;
- p = di->x - di->vpos;
- while (1) {
- di->cpos = (int)(t - di->cdata);
- if (!*t) break;
- GET_UTF_8(t, u);
- if (!u) continue;
- if (!F) p++;
+ case D_BUTTON:
+ if (gf_val(ev->y != di->y, ev->y < di->y
+ || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x
+ || ev->x >= di->x + gf_val(strlen((char *)get_text_translation(di->item->text, dlg->win->term)) + 4, di->l))
+ return 0;
+ if (dlg->selected != di - dlg->items) {
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
+ dlg->selected = (int)(di - dlg->items);
+ x_display_dlg_item(dlg, di, 1);
+ }
+ if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di);
+ return 1;
+ case D_FIELD:
+ case D_FIELD_PASS:
+ if (gf_val(ev->y != di->y, ev->y < di->y
+ || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x
+ || ev->x >= di->x + di->l)
+ return 0;
+ if (!is_utf_8(dlg->win->term)) {
+ if ((size_t)(di->cpos = di->vpos + ev->x - di->x) > strlen(cast_const_char di->cdata))
+ di->cpos = (int)strlen(cast_const_char di->cdata);
+ } else {
+ int p, u;
+ unsigned char *t = di->cdata;
+ p = di->x - di->vpos;
+ while (1) {
+ di->cpos = (int)(t - di->cdata);
+ if (!*t) break;
+ GET_UTF_8(t, u);
+ if (!u) continue;
+ if (!F) p++;
#ifdef G
- else p += g_char_width(bfu_style_wb_mono, u);
+ else p += g_char_width(bfu_style_wb_mono, u);
#endif
- if (p > ev->x) break;
- }
- }
- if (dlg->selected != di - dlg->items) {
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- dlg->selected = (int)(di - dlg->items);
- x_display_dlg_item(dlg, di, 1);
- } else x_display_dlg_item(dlg, di, 1);
- return 1;
- case D_CHECKBOX:
- if (gf_val(ev->y != di->y, ev->y < di->y || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x || ev->x >= di->x + gf_val(3, di->l)) return 0;
- if (dlg->selected != di - dlg->items) {
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- dlg->selected = (int)(di - dlg->items);
- x_display_dlg_item(dlg, di, 1);
+ if (p > ev->x) break;
}
- if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di);
- return 1;
+ }
+ if (dlg->selected != di - dlg->items) {
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
+ dlg->selected = (int)(di - dlg->items);
+ x_display_dlg_item(dlg, di, 1);
+ } else
+ x_display_dlg_item(dlg, di, 1);
+ return 1;
+ case D_CHECKBOX:
+ if (gf_val(ev->y != di->y, ev->y < di->y
+ || ev->y >= di->y + G_BFU_FONT_SIZE) || ev->x < di->x
+ || ev->x >= di->x + gf_val(3, di->l))
+ return 0;
+ if (dlg->selected != di - dlg->items) {
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
+ dlg->selected = (int)(di - dlg->items);
+ x_display_dlg_item(dlg, di, 1);
+ }
+ if ((ev->b & BM_ACT) == B_UP) dlg_select_item(dlg, di);
+ return 1;
}
return 0;
}
@@ -1198,7 +1276,8 @@ static void redraw_dialog_items(struct terminal *term, void *dlg_)
{
struct dialog_data *dlg = (struct dialog_data *)dlg_;
int i;
- for (i = 0; i < dlg->n; i++) display_dlg_item(dlg, &dlg->items[i], i == dlg->selected);
+ for (i = 0; i < dlg->n; i++)
+ display_dlg_item(dlg, &dlg->items[i], i == dlg->selected);
}
static void redraw_dialog(struct terminal *term, void *dlg_)
@@ -1293,276 +1372,288 @@ void dialog_func(struct window *win, struct links_event *ev, int fwd)
}
switch ((int)ev->ev) {
- case EV_INIT:
- for (i = 0; i < dlg->n; i++) {
- struct dialog_item_data *di = &dlg->items[i];
- memset(di, 0, sizeof(struct dialog_item_data));
- di->item = &dlg->dlg->items[i];
- di->cdata = xmalloc(di->item->dlen);
- if (di->item->dlen)
- memcpy(di->cdata, di->item->data, di->item->dlen);
- if (di->item->type == D_CHECKBOX) {
- if (di->item->gid) {
- if (*(int *)di->cdata == di->item->gnum) di->checked = 1;
- } else if (*(int *)di->cdata) di->checked = 1;
- }
- init_list(di->history);
- di->cur_hist = &di->history;
- if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) {
- if (di->item->history) {
- struct history_item *j = NULL;
- struct list_head *lj;
- foreach(struct history_item, j, lj, di->item->history->items) {
- struct history_item *hi;
- size_t sl = strlen(cast_const_char j->str);
- if (sl > INT_MAX - sizeof(struct history_item)) overalloc();
- hi = xmalloc(sizeof(struct history_item) + sl);
- strcpy(cast_char hi->str, cast_const_char j->str);
- add_to_list(di->history, hi);
- }
+ case EV_INIT:
+ for (i = 0; i < dlg->n; i++) {
+ struct dialog_item_data *di = &dlg->items[i];
+ memset(di, 0, sizeof(struct dialog_item_data));
+ di->item = &dlg->dlg->items[i];
+ di->cdata = xmalloc(di->item->dlen);
+ if (di->item->dlen)
+ memcpy(di->cdata, di->item->data, di->item->dlen);
+ if (di->item->type == D_CHECKBOX) {
+ if (di->item->gid) {
+ if (*(int *)di->cdata == di->item->gnum) di->checked = 1;
+ } else if (*(int *)di->cdata) di->checked = 1;
+ }
+ init_list(di->history);
+ di->cur_hist = &di->history;
+ if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) {
+ if (di->item->history) {
+ struct history_item *j = NULL;
+ struct list_head *lj;
+ foreach(struct history_item, j, lj, di->item->history->items) {
+ struct history_item *hi;
+ size_t sl = strlen(cast_const_char j->str);
+ if (sl > INT_MAX - sizeof(struct history_item)) overalloc();
+ hi = xmalloc(sizeof(struct history_item) + sl);
+ strcpy(cast_char hi->str, cast_const_char j->str);
+ add_to_list(di->history, hi);
}
- di->cpos = (int)strlen(cast_const_char di->cdata);
}
+ di->cpos = (int)strlen(cast_const_char di->cdata);
}
- dlg->selected = 0;
- /*-fallthrough*/
- case EV_RESIZE:
- /* this must be really called twice !!! */
- draw_to_window(dlg->win, redraw_dialog, dlg);
- /*-fallthrough*/
- case EV_REDRAW:
- draw_to_window(dlg->win, redraw_dialog, dlg);
+ }
+ dlg->selected = 0;
+ /*-fallthrough*/
+ case EV_RESIZE:
+ /* this must be really called twice !!! */
+ draw_to_window(dlg->win, redraw_dialog, dlg);
+ /*-fallthrough*/
+ case EV_REDRAW:
+ draw_to_window(dlg->win, redraw_dialog, dlg);
+ break;
+ case EV_MOUSE:
+ if ((ev->b & BM_ACT) == B_MOVE) break;
+ if ((ev->b & BM_BUTT) == B_FOURTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_prev;
break;
- case EV_MOUSE:
- if ((ev->b & BM_ACT) == B_MOVE) break;
- if ((ev->b & BM_BUTT) == B_FOURTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_prev;
- break;
- }
- if ((ev->b & BM_BUTT) == B_FIFTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_next;
- break;
- }
- if ((ev->b & BM_BUTT) == B_SIXTH) {
- if ((ev->b & BM_ACT) == B_DOWN) goto go_enter;
- break;
- }
- for (i = 0; i < dlg->n; i++) if (dlg_mouse(dlg, &dlg->items[i], ev)) break;
- if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) {
- di = &dlg->items[dlg->selected]; /* don't delete this!!! it's here because of jump from mouse event */
- if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) goto clipbd_paste;
- }
+ }
+ if ((ev->b & BM_BUTT) == B_FIFTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_next;
+ break;
+ }
+ if ((ev->b & BM_BUTT) == B_SIXTH) {
+ if ((ev->b & BM_ACT) == B_DOWN) goto go_enter;
break;
- case EV_KBD:
+ }
+ for (i = 0; i < dlg->n; i++) if (dlg_mouse(dlg, &dlg->items[i], ev)) break;
+ if ((ev->b & BM_ACT) == B_DOWN && (ev->b & BM_BUTT) == B_MIDDLE) {
+ /* don't delete this!!! it's here because of jump from mouse event */
di = &dlg->items[dlg->selected];
- if (ev->y & KBD_PASTING) {
- if (!((di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) &&
- (ev->x >= ' ' && !(ev->y & (KBD_CTRL | KBD_ALT)))))
- break;
+ if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) goto clipbd_paste;
+ }
+ break;
+ case EV_KBD:
+ di = &dlg->items[dlg->selected];
+ if (ev->y & KBD_PASTING) {
+ if (!((di->item->type == D_FIELD
+ || di->item->type == D_FIELD_PASS)
+ && (ev->x >= ' ' && !(ev->y & (KBD_CTRL | KBD_ALT)))))
+ break;
+ }
+ if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) {
+ if (ev->x == KBD_UP && di->cur_hist->prev != &di->history) {
+ di->cur_hist = di->cur_hist->prev;
+ dlg_set_history(term, di);
+ goto dsp_f;
}
- if (di->item->type == D_FIELD || di->item->type == D_FIELD_PASS) {
- if (ev->x == KBD_UP && di->cur_hist->prev != &di->history) {
- di->cur_hist = di->cur_hist->prev;
- dlg_set_history(term, di);
- goto dsp_f;
- }
- if (ev->x == KBD_DOWN && di->cur_hist != &di->history) {
- di->cur_hist = di->cur_hist->next;
- dlg_set_history(term, di);
- goto dsp_f;
- }
- if (ev->x == KBD_RIGHT) {
- if ((size_t)di->cpos < strlen(cast_const_char di->cdata)) {
- if (!is_utf_8(term)) di->cpos++;
- else {
- int u;
- unsigned char *p = di->cdata + di->cpos;
- GET_UTF_8(p, u);
- di->cpos = (int)(p - di->cdata);
- }
- }
- goto dsp_f;
- }
- if (ev->x == KBD_LEFT) {
- if (di->cpos > 0) {
- if (!is_utf_8(term)) di->cpos--;
- else {
- unsigned char *p = di->cdata + di->cpos;
- BACK_UTF_8(p, di->cdata);
- di->cpos = (int)(p - di->cdata);
- }
+ if (ev->x == KBD_DOWN && di->cur_hist != &di->history) {
+ di->cur_hist = di->cur_hist->next;
+ dlg_set_history(term, di);
+ goto dsp_f;
+ }
+ if (ev->x == KBD_RIGHT) {
+ if ((size_t)di->cpos < strlen(cast_const_char di->cdata)) {
+ if (!is_utf_8(term))
+ di->cpos++;
+ else {
+ int u;
+ unsigned char *p = di->cdata + di->cpos;
+ GET_UTF_8(p, u);
+ di->cpos = (int)(p - di->cdata);
}
- goto dsp_f;
- }
- if (ev->x == KBD_HOME || (upcase(ev->x) == 'A' && ev->y & KBD_CTRL)) {
- di->cpos = 0;
- goto dsp_f;
}
- if (ev->x == KBD_END || (upcase(ev->x) == 'E' && ev->y & KBD_CTRL)) {
- di->cpos = (int)strlen(cast_const_char di->cdata);
- goto dsp_f;
- }
- if (ev->x >= ' ' && !(ev->y & (KBD_CTRL | KBD_ALT))) {
- unsigned char *u;
- unsigned char p[2] = { 0, 0 };
- if (cp2u(ev->x, term_charset(term)) == -1)
- break;
- if (!is_utf_8(term)) {
- p[0] = (unsigned char)ev->x;
- u = p;
- } else {
- u = encode_utf_8(ev->x);
- }
- if (strlen(cast_const_char di->cdata) + strlen(cast_const_char u) < (size_t)di->item->dlen) {
- memmove(di->cdata + di->cpos + strlen(cast_const_char u), di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + 1);
- memcpy(&di->cdata[di->cpos], u, strlen(cast_const_char u));
- di->cpos += (int)strlen(cast_const_char u);
+ goto dsp_f;
+ }
+ if (ev->x == KBD_LEFT) {
+ if (di->cpos > 0) {
+ if (!is_utf_8(term))
+ di->cpos--;
+ else {
+ unsigned char *p = di->cdata + di->cpos;
+ BACK_UTF_8(p, di->cdata);
+ di->cpos = (int)(p - di->cdata);
}
- goto dsp_f;
}
- if (ev->x == KBD_BS) {
- if (di->cpos) {
- int s = 1;
- if (is_utf_8(term)) {
- unsigned u;
- unsigned char *p, *pp;
- p = di->cdata;
- a:
- pp = p;
- GET_UTF_8(p, u);
- if (p < di->cdata + di->cpos) goto a;
- s = (int)(p - pp);
- }
- memmove(di->cdata + di->cpos - s, di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + s);
- di->cpos -= s;
- }
- goto dsp_f;
+ goto dsp_f;
+ }
+ if (ev->x == KBD_HOME || (upcase(ev->x) == 'A' && ev->y & KBD_CTRL)) {
+ di->cpos = 0;
+ goto dsp_f;
+ }
+ if (ev->x == KBD_END || (upcase(ev->x) == 'E' && ev->y & KBD_CTRL)) {
+ di->cpos = (int)strlen(cast_const_char di->cdata);
+ goto dsp_f;
+ }
+ if (ev->x >= ' ' && !(ev->y & (KBD_CTRL | KBD_ALT))) {
+ unsigned char *u;
+ unsigned char p[2] = { 0, 0 };
+ if (cp2u(ev->x, term_charset(term)) == -1)
+ break;
+ if (!is_utf_8(term)) {
+ p[0] = (unsigned char)ev->x;
+ u = p;
+ } else {
+ u = encode_utf_8(ev->x);
}
- if (ev->x == KBD_DEL || (upcase(ev->x) == 'D' && ev->y & KBD_CTRL)) {
- if ((size_t)di->cpos < strlen(cast_const_char di->cdata)) {
- int s = 1;
- if (is_utf_8(term)) {
- unsigned u;
- unsigned char *p = di->cdata + di->cpos;
- GET_UTF_8(p, u);
- s = (int)(p - (di->cdata + di->cpos));
- }
- memmove(di->cdata + di->cpos, di->cdata + di->cpos + s, strlen(cast_const_char di->cdata) - di->cpos + s);
- }
- goto dsp_f;
+ if (strlen(cast_const_char di->cdata) + strlen(cast_const_char u) < (size_t)di->item->dlen) {
+ memmove(di->cdata + di->cpos + strlen(cast_const_char u), di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + 1);
+ memcpy(&di->cdata[di->cpos], u, strlen(cast_const_char u));
+ di->cpos += (int)strlen(cast_const_char u);
}
- if (upcase(ev->x) == 'U' && ev->y & KBD_CTRL) {
- unsigned char *a = memacpy(di->cdata, di->cpos);
- if (a) {
- set_clipboard_text(term, a);
- free(a);
+ goto dsp_f;
+ }
+ if (ev->x == KBD_BS) {
+ if (di->cpos) {
+ int s = 1;
+ if (is_utf_8(term)) {
+ unsigned u;
+ unsigned char *p, *pp;
+ p = di->cdata;
+ a:
+ pp = p;
+ GET_UTF_8(p, u);
+ if (p < di->cdata + di->cpos)
+ goto a;
+ s = (int)(p - pp);
}
- memmove(di->cdata, di->cdata + di->cpos, strlen(cast_const_char di->cdata + di->cpos) + 1);
- di->cpos = 0;
- goto dsp_f;
+ memmove(di->cdata + di->cpos - s, di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + s);
+ di->cpos -= s;
}
- if (upcase(ev->x) == 'K' && ev->y & KBD_CTRL) {
- set_clipboard_text(term, di->cdata + di->cpos);
- di->cdata[di->cpos] = 0;
- goto dsp_f;
- }
- /* Copy to clipboard */
- if ((ev->x == KBD_INS && ev->y & KBD_CTRL) || (upcase(ev->x) == 'B' && ev->y & KBD_CTRL) || ev->x == KBD_COPY) {
- set_clipboard_text(term, di->cdata);
- break; /* We don't need to redraw */
- }
- /* FIXME -- why keyboard shortcuts with shift don't works??? */
- /* Cut to clipboard */
- if ((ev->x == KBD_DEL && ev->y & KBD_SHIFT) || (upcase(ev->x) == 'X' && ev->y & KBD_CTRL) || ev->x == KBD_CUT) {
- set_clipboard_text(term, di->cdata);
- di->cdata[0] = 0;
- di->cpos = 0;
- goto dsp_f;
- }
- /* Paste from clipboard */
- if ((ev->x == KBD_INS && ev->y & KBD_SHIFT) || (upcase(ev->x) == 'V' && ev->y & KBD_CTRL) || ev->x == KBD_PASTE) {
- unsigned char *clipboard;
-clipbd_paste:
- clipboard = get_clipboard_text(term);
- if (clipboard) {
- unsigned char *nl = clipboard;
- while ((nl = cast_uchar strchr(cast_const_char nl, '\n'))) *nl = ' ';
- if (strlen(cast_const_char di->cdata) + strlen(cast_const_char clipboard) < (size_t)di->item->dlen ||
- strlen(cast_const_char di->cdata) + strlen(cast_const_char clipboard) < strlen(cast_const_char di->cdata)) {
- memmove(di->cdata + di->cpos + strlen(cast_const_char clipboard), di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + 1);
- memcpy(&di->cdata[di->cpos], clipboard, strlen(cast_const_char clipboard));
- di->cpos += (int)strlen(cast_const_char clipboard);
- }
- free(clipboard);
+ goto dsp_f;
+ }
+ if (ev->x == KBD_DEL || (upcase(ev->x) == 'D' && ev->y & KBD_CTRL)) {
+ if ((size_t)di->cpos < strlen(cast_const_char di->cdata)) {
+ int s = 1;
+ if (is_utf_8(term)) {
+ unsigned u;
+ unsigned char *p = di->cdata + di->cpos;
+ GET_UTF_8(p, u);
+ s = (int)(p - (di->cdata + di->cpos));
}
- goto dsp_f;
+ memmove(di->cdata + di->cpos, di->cdata + di->cpos + s, strlen(cast_const_char di->cdata) - di->cpos + s);
}
- if ((upcase(ev->x) == 'W' && ev->y & KBD_CTRL) || ev->x == KBD_FIND) {
- do_tab_compl(term, &di->history, win);
- goto dsp_f;
- }
- goto gh;
- dsp_f:
- x_display_dlg_item(dlg, di, 1);
- break;
+ goto dsp_f;
}
- if ((ev->x == KBD_ENTER && di->item->type == D_BUTTON) || ev->x == ' ') {
- dlg_select_item(dlg, di);
- break;
+ if (upcase(ev->x) == 'U' && ev->y & KBD_CTRL) {
+ unsigned char *a = memacpy(di->cdata, di->cpos);
+ if (a) {
+ set_clipboard_text(term, a);
+ free(a);
+ }
+ memmove(di->cdata, di->cdata + di->cpos, strlen(cast_const_char di->cdata + di->cpos) + 1);
+ di->cpos = 0;
+ goto dsp_f;
}
- gh:
- if (ev->x > ' ') for (i = 0; i < dlg->n; i++) {
- unsigned char *tx = get_text_translation(dlg->dlg->items[i].text, term);
- if (dlg->dlg->items[i].type == D_BUTTON && charset_upcase(GET_TERM_CHAR(term, &tx), term_charset(term)) == charset_upcase(ev->x, term_charset(term))) goto sel;
+ if (upcase(ev->x) == 'K' && ev->y & KBD_CTRL) {
+ set_clipboard_text(term, di->cdata + di->cpos);
+ di->cdata[di->cpos] = 0;
+ goto dsp_f;
}
- if (ev->x == KBD_ENTER) {
-go_enter:
- for (i = 0; i < dlg->n; i++)
- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ENTER) goto sel;
- break;
+ /* Copy to clipboard */
+ if ((ev->x == KBD_INS && ev->y & KBD_CTRL)
+ || (upcase(ev->x) == 'B' && ev->y & KBD_CTRL)
+ || ev->x == KBD_COPY) {
+ set_clipboard_text(term, di->cdata);
+ break; /* We don't need to redraw */
}
- if (ev->x == KBD_ESC) {
- for (i = 0; i < dlg->n; i++)
- if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ESC) goto sel;
- break;
+ /* FIXME -- why keyboard shortcuts with shift don't works??? */
+ /* Cut to clipboard */
+ if ((ev->x == KBD_DEL && ev->y & KBD_SHIFT)
+ || (upcase(ev->x) == 'X' && ev->y & KBD_CTRL)
+ || ev->x == KBD_CUT) {
+ set_clipboard_text(term, di->cdata);
+ di->cdata[0] = 0;
+ di->cpos = 0;
+ goto dsp_f;
}
- if (0) {
- sel:
- if (dlg->selected != i) {
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- x_display_dlg_item(dlg, &dlg->items[i], 1);
- dlg->selected = i;
+ /* Paste from clipboard */
+ if ((ev->x == KBD_INS && ev->y & KBD_SHIFT)
+ || (upcase(ev->x) == 'V' && ev->y & KBD_CTRL)
+ || ev->x == KBD_PASTE) {
+ unsigned char *clipboard;
+ clipbd_paste:
+ clipboard = get_clipboard_text(term);
+ if (clipboard) {
+ unsigned char *nl = clipboard;
+ while ((nl = cast_uchar strchr(cast_const_char nl, '\n'))) *nl = ' ';
+ if (strlen(cast_const_char di->cdata) + strlen(cast_const_char clipboard) < (size_t)di->item->dlen
+ || strlen(cast_const_char di->cdata) + strlen(cast_const_char clipboard) < strlen(cast_const_char di->cdata)) {
+
+ memmove(di->cdata + di->cpos + strlen(cast_const_char clipboard), di->cdata + di->cpos, strlen(cast_const_char di->cdata) - di->cpos + 1);
+ memcpy(&di->cdata[di->cpos], clipboard, strlen(cast_const_char clipboard));
+ di->cpos += (int)strlen(cast_const_char clipboard);
+ }
+ free(clipboard);
}
- dlg_select_item(dlg, &dlg->items[i]);
- break;
+ goto dsp_f;
}
- if (((ev->x == KBD_TAB && !ev->y) || ev->x == KBD_DOWN
- || ev->x == KBD_RIGHT) && dlg->n > 1) {
- go_next:
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- if ((++dlg->selected) >= dlg->n) dlg->selected = 0;
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 1);
- break;
+ if ((upcase(ev->x) == 'W' && ev->y & KBD_CTRL) || ev->x == KBD_FIND) {
+ do_tab_compl(term, &di->history, win);
+ goto dsp_f;
}
- if (((ev->x == KBD_TAB && ev->y) || ev->x == KBD_UP
- || ev->x == KBD_LEFT) && dlg->n > 1) {
- go_prev:
+ goto gh;
+ dsp_f:
+ x_display_dlg_item(dlg, di, 1);
+ break;
+ }
+ if ((ev->x == KBD_ENTER && di->item->type == D_BUTTON) || ev->x == ' ') {
+ dlg_select_item(dlg, di);
+ break;
+ }
+ gh:
+ if (ev->x > ' ') for (i = 0; i < dlg->n; i++) {
+ unsigned char *tx = get_text_translation(dlg->dlg->items[i].text, term);
+ if (dlg->dlg->items[i].type == D_BUTTON && charset_upcase(GET_TERM_CHAR(term, &tx), term_charset(term)) == charset_upcase(ev->x, term_charset(term))) goto sel;
+ }
+ if (ev->x == KBD_ENTER) {
+ go_enter:
+ for (i = 0; i < dlg->n; i++)
+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ENTER) goto sel;
+ break;
+ }
+ if (ev->x == KBD_ESC) {
+ for (i = 0; i < dlg->n; i++)
+ if (dlg->dlg->items[i].type == D_BUTTON && dlg->dlg->items[i].gid & B_ESC) goto sel;
+ break;
+ }
+ if (0) {
+ sel:
+ if (dlg->selected != i) {
x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
- if ((--dlg->selected) < 0) dlg->selected = dlg->n - 1;
- x_display_dlg_item(dlg, &dlg->items[dlg->selected], 1);
- break;
+ x_display_dlg_item(dlg, &dlg->items[i], 1);
+ dlg->selected = i;
}
+ dlg_select_item(dlg, &dlg->items[i]);
break;
- case EV_ABORT:
- /* Moved this line up so that the dlg would have access to its
- member vars before they get freed. */
- if (dlg->dlg->abort) dlg->dlg->abort(dlg);
- for (i = 0; i < dlg->n; i++) {
- struct dialog_item_data *di = &dlg->items[i];
- free(di->cdata);
- free_list(struct history_item, di->history);
- }
- freeml(dlg->ml);
+ }
+ if (((ev->x == KBD_TAB && !ev->y) || ev->x == KBD_DOWN
+ || ev->x == KBD_RIGHT) && dlg->n > 1) {
+ go_next:
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
+ if ((++dlg->selected) >= dlg->n) dlg->selected = 0;
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 1);
+ break;
+ }
+ if (((ev->x == KBD_TAB && ev->y) || ev->x == KBD_UP
+ || ev->x == KBD_LEFT) && dlg->n > 1) {
+ go_prev:
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 0);
+ if ((--dlg->selected) < 0) dlg->selected = dlg->n - 1;
+ x_display_dlg_item(dlg, &dlg->items[dlg->selected], 1);
+ break;
+ }
+ break;
+ case EV_ABORT:
+ /* Moved this line up so that the dlg would have access to its
+ member vars before they get freed. */
+ if (dlg->dlg->abort) dlg->dlg->abort(dlg);
+ for (i = 0; i < dlg->n; i++) {
+ struct dialog_item_data *di = &dlg->items[i];
+ free(di->cdata);
+ free_list(struct history_item, di->history);
+ }
+ freeml(dlg->ml);
}
}
@@ -1571,12 +1662,19 @@ int check_float(struct dialog_data *dlg, struct dialog_item_data *di)
{
unsigned char *end;
double d = strtod(cast_const_char di->cdata, (char **)(void *)&end);
- if (!*di->cdata || *end || di->cdata[strspn(cast_const_char di->cdata, "0123456789.")] || *di->cdata == (unsigned char)'.') {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ if (!*di->cdata || *end
+ || di->cdata[strspn(cast_const_char di->cdata, "0123456789.")]
+ || *di->cdata == (unsigned char)'.') {
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
- if (d < 0 || d > di->item->gnum || 100*d < di->item->gid || 100*d > di->item->gnum) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ if (d < 0 || d > di->item->gnum || 100*d < di->item->gid
+ || 100*d > di->item->gnum) {
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
return 0;
@@ -1587,11 +1685,15 @@ int check_number(struct dialog_data *dlg, struct dialog_item_data *di)
unsigned char *end;
long l = strtol(cast_const_char di->cdata, (char **)(void *)&end, 10);
if (!*di->cdata || *end) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
if (l < di->item->gid || l > di->item->gnum) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
return 0;
@@ -1602,11 +1704,15 @@ int check_hex_number(struct dialog_data *dlg, struct dialog_item_data *di)
unsigned char *end;
long l = strtol(cast_const_char di->cdata, (char **)(void *)&end, 16);
if (!*di->cdata || *end) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_EXPECTED), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
if (l < di->item->gid || l > di->item->gnum) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER, TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_NUMBER), AL_CENTER,
+ TEXT_(T_NUMBER_OUT_OF_RANGE), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
return 0;
@@ -1616,7 +1722,9 @@ int check_nonempty(struct dialog_data *dlg, struct dialog_item_data *di)
{
unsigned char *p;
for (p = di->cdata; *p; p++) if (*p > ' ') return 0;
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_STRING), AL_CENTER, TEXT_(T_EMPTY_STRING_NOT_ALLOWED), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_STRING), AL_CENTER,
+ TEXT_(T_EMPTY_STRING_NOT_ALLOWED), MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
return 1;
}
@@ -1633,13 +1741,16 @@ static int check_local_ip_address_internal(struct dialog_data *dlg, struct dialo
else
rs = numeric_ip_address((char *)p, NULL);
if (rs) {
- msg_box(dlg->win->term, NULL, TEXT_(T_BAD_IP_ADDRESS), AL_CENTER, TEXT_(T_INVALID_IP_ADDRESS_SYNTAX), MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, NULL, TEXT_(T_BAD_IP_ADDRESS),
+ AL_CENTER, TEXT_(T_INVALID_IP_ADDRESS_SYNTAX),
+ MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null,
+ B_ENTER | B_ESC);
return 1;
}
s = socket_and_bind(pf, p);
- if (s != -1) {
+ if (s != -1)
EINTRLOOP(rs, close(s));
- } else {
+ else {
if (1
#ifdef ENFILE
&& errno != ENFILE
@@ -1656,7 +1767,13 @@ static int check_local_ip_address_internal(struct dialog_data *dlg, struct dialo
) {
unsigned char *er = stracpy(cast_uchar strerror(errno));
unsigned char *ad = stracpy(p);
- msg_box(dlg->win->term, getml(er, ad, NULL), TEXT_(T_BAD_IP_ADDRESS), AL_CENTER, TEXT_(T_UNABLE_TO_USE_LOCAL_IP_ADDRESS), cast_uchar " ", ad, cast_uchar ": ", er, MSG_BOX_END, NULL, 1, TEXT_(T_CANCEL), msg_box_null, B_ENTER | B_ESC);
+ msg_box(dlg->win->term, getml(er, ad, NULL),
+ TEXT_(T_BAD_IP_ADDRESS), AL_CENTER,
+ TEXT_(T_UNABLE_TO_USE_LOCAL_IP_ADDRESS),
+ cast_uchar " ", ad, cast_uchar ": ",
+ er, MSG_BOX_END, NULL, 1,
+ TEXT_(T_CANCEL), msg_box_null,
+ B_ENTER | B_ESC);
return 1;
}
}
@@ -1725,8 +1842,13 @@ void draw_dlg(struct dialog_data *dlg)
if (!F) {
int i, tpos;
struct terminal *term = dlg->win->term;
- fill_area(term, dlg->x, dlg->y, dlg->xw, dlg->yw, ' ', COLOR_DIALOG);
- draw_frame(term, dlg->x + DIALOG_LEFT_BORDER, dlg->y + DIALOG_TOP_BORDER, dlg->xw - 2 * DIALOG_LEFT_BORDER, dlg->yw - 2 * DIALOG_TOP_BORDER, COLOR_DIALOG_FRAME, DIALOG_FRAME);
+ fill_area(term, dlg->x, dlg->y, dlg->xw, dlg->yw, ' ',
+ COLOR_DIALOG);
+ draw_frame(term, dlg->x + DIALOG_LEFT_BORDER,
+ dlg->y + DIALOG_TOP_BORDER,
+ dlg->xw - 2 * DIALOG_LEFT_BORDER,
+ dlg->yw - 2 * DIALOG_TOP_BORDER, COLOR_DIALOG_FRAME,
+ DIALOG_FRAME);
i = strlen((char *)get_text_translation(dlg->dlg->title, term));
tpos = (dlg->xw - i) / 2;
print_text(term, tpos + dlg->x - 1, dlg->y + DIALOG_TOP_BORDER, 1, cast_uchar " ", COLOR_DIALOG_TITLE);
@@ -1745,7 +1867,8 @@ void draw_dlg(struct dialog_data *dlg)
TXT_X = dlg->x + (dlg->xw - tl) / 2;
TXT_Y = dlg->y + G_DIALOG_TOP_BORDER + (G_DIALOG_HLINE_SPACE + 1) / 2 - G_BFU_FONT_SIZE / 2;
if (TXT_Y < dlg->y) TXT_Y = dlg->y;
- if (TXT_Y < dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1 - G_BFU_FONT_SIZE) TXT_Y = dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1 - G_BFU_FONT_SIZE;
+ if (TXT_Y < dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1 - G_BFU_FONT_SIZE)
+ TXT_Y = dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1 - G_BFU_FONT_SIZE;
set_window_pos(dlg->win, dlg->x, dlg->y, dlg->x + dlg->xw, dlg->y + dlg->yw);
restrict_clip_area(dev, &r, TXT_X, TXT_Y, TXT_X + tl, TXT_Y + G_BFU_FONT_SIZE);
@@ -1753,38 +1876,100 @@ void draw_dlg(struct dialog_data *dlg)
rt.x2 = TXT_X + tl;
rt.y1 = TXT_Y;
rt.y2 = TXT_Y + G_BFU_FONT_SIZE;
- if (xtl > tl) g_print_text(dev, TXT_X, TXT_Y, bfu_style_wb, text, NULL);
+ if (xtl > tl)
+ g_print_text(dev, TXT_X, TXT_Y, bfu_style_wb, text, NULL);
else {
- drv->fill_area(dev, TXT_X, TXT_Y, TXT_X + (tl - xtl) / 2, TXT_Y + G_BFU_FONT_SIZE, bfu_fg_color);
- g_print_text(dev, TXT_X + (tl - xtl) / 2, TXT_Y, bfu_style_wb, text, NULL);
- drv->fill_area(dev, TXT_X + (tl - xtl) / 2 + xtl, TXT_Y, TXT_X + tl, TXT_Y + G_BFU_FONT_SIZE, bfu_fg_color);
+ drv->fill_area(dev, TXT_X, TXT_Y,
+ TXT_X + (tl - xtl) / 2, TXT_Y + G_BFU_FONT_SIZE,
+ bfu_fg_color);
+ g_print_text(dev, TXT_X + (tl - xtl) / 2, TXT_Y,
+ bfu_style_wb, text, NULL);
+ drv->fill_area(dev, TXT_X + (tl - xtl) / 2 + xtl,
+ TXT_Y, TXT_X + tl, TXT_Y + G_BFU_FONT_SIZE,
+ bfu_fg_color);
}
set_clip_area(dev, &r);
- drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER, dlg->y + G_DIALOG_TOP_BORDER, TXT_X, bfu_fg_color);
- drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, TXT_X, bfu_fg_color);
- drv->draw_hline(dev, TXT_X + tl, dlg->y + G_DIALOG_TOP_BORDER, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER, bfu_fg_color);
- drv->draw_hline(dev, TXT_X + tl, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE, bfu_fg_color);
- drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER, bfu_fg_color);
- drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE, bfu_fg_color);
-
- drv->draw_vline(dev, dlg->x + G_DIALOG_LEFT_BORDER, dlg->y + G_DIALOG_TOP_BORDER + 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1, bfu_fg_color);
- drv->draw_vline(dev, dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1, bfu_fg_color);
- drv->draw_vline(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1, dlg->y + G_DIALOG_TOP_BORDER + 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1, bfu_fg_color);
- drv->draw_vline(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE - 1, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1, bfu_fg_color);
-
- drv->fill_area(dev, dlg->x, dlg->y, TXT_X, dlg->y + G_DIALOG_TOP_BORDER, bfu_bg_color);
- drv->fill_area(dev, TXT_X, dlg->y, TXT_X + tl, TXT_Y, bfu_bg_color);
- drv->fill_area(dev, TXT_X + tl, dlg->y, dlg->x + dlg->xw, dlg->y + G_DIALOG_TOP_BORDER, bfu_bg_color);
- drv->fill_area(dev, dlg->x, dlg->y + G_DIALOG_TOP_BORDER, dlg->x + G_DIALOG_LEFT_BORDER, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER, bfu_bg_color);
- drv->fill_area(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER, dlg->y + G_DIALOG_TOP_BORDER, dlg->x + dlg->xw, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER, bfu_bg_color);
- drv->fill_area(dev, dlg->x, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER, dlg->x + dlg->xw, dlg->y + dlg->yw, bfu_bg_color);
-
- drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1, dlg->y + G_DIALOG_TOP_BORDER + 1, TXT_X, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, bfu_bg_color);
- drv->fill_area(dev, TXT_X + tl, dlg->y + G_DIALOG_TOP_BORDER + 1, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, bfu_bg_color);
- drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE, bfu_bg_color);
- drv->fill_area(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE, dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE, bfu_bg_color);
- drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1, dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1, bfu_bg_color);
+ drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER,
+ dlg->y + G_DIALOG_TOP_BORDER, TXT_X, bfu_fg_color);
+ drv->draw_hline(dev,
+ dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ TXT_X, bfu_fg_color);
+ drv->draw_hline(dev, TXT_X + tl, dlg->y + G_DIALOG_TOP_BORDER,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER, bfu_fg_color);
+ drv->draw_hline(dev, TXT_X + tl,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE,
+ bfu_fg_color);
+ drv->draw_hline(dev, dlg->x + G_DIALOG_LEFT_BORDER,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER, bfu_fg_color);
+ drv->draw_hline(dev,
+ dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE,
+ bfu_fg_color);
+
+ drv->draw_vline(dev, dlg->x + G_DIALOG_LEFT_BORDER,
+ dlg->y + G_DIALOG_TOP_BORDER + 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1,
+ bfu_fg_color);
+ drv->draw_vline(dev,
+ dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1,
+ bfu_fg_color);
+ drv->draw_vline(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1,
+ dlg->y + G_DIALOG_TOP_BORDER + 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1, bfu_fg_color);
+ drv->draw_vline(dev,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE - 1,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE + 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1,
+ bfu_fg_color);
+
+ drv->fill_area(dev, dlg->x, dlg->y, TXT_X,
+ dlg->y + G_DIALOG_TOP_BORDER, bfu_bg_color);
+ drv->fill_area(dev, TXT_X, dlg->y, TXT_X + tl, TXT_Y,
+ bfu_bg_color);
+ drv->fill_area(dev, TXT_X + tl, dlg->y, dlg->x + dlg->xw,
+ dlg->y + G_DIALOG_TOP_BORDER, bfu_bg_color);
+ drv->fill_area(dev, dlg->x, dlg->y + G_DIALOG_TOP_BORDER,
+ dlg->x + G_DIALOG_LEFT_BORDER,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER, bfu_bg_color);
+ drv->fill_area(dev, dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER,
+ dlg->y + G_DIALOG_TOP_BORDER, dlg->x + dlg->xw,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER, bfu_bg_color);
+ drv->fill_area(dev, dlg->x,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER,
+ dlg->x + dlg->xw, dlg->y + dlg->yw, bfu_bg_color);
+
+ drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1,
+ dlg->y + G_DIALOG_TOP_BORDER + 1, TXT_X,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ bfu_bg_color);
+ drv->fill_area(dev, TXT_X + tl,
+ dlg->y + G_DIALOG_TOP_BORDER + 1,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ bfu_bg_color);
+ drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE,
+ bfu_bg_color);
+ drv->fill_area(dev,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - G_DIALOG_VLINE_SPACE,
+ dlg->y + G_DIALOG_TOP_BORDER + G_DIALOG_HLINE_SPACE,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE,
+ bfu_bg_color);
+ drv->fill_area(dev, dlg->x + G_DIALOG_LEFT_BORDER + 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE,
+ dlg->x + dlg->xw - G_DIALOG_LEFT_BORDER - 1,
+ dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - 1,
+ bfu_bg_color);
dlg->s = init_rect_set();
dlg->rr.x1 = dlg->x + G_DIALOG_LEFT_BORDER + G_DIALOG_VLINE_SPACE + 1;
@@ -1793,7 +1978,8 @@ void draw_dlg(struct dialog_data *dlg)
dlg->rr.y2 = dlg->y + dlg->yw - G_DIALOG_TOP_BORDER - G_DIALOG_HLINE_SPACE - 1;
add_to_rect_set(&dlg->s, &dlg->rr);
exclude_rect_from_set(&dlg->s, &rt);
- restrict_clip_area(dev, &dlg->r, dlg->rr.x1, dlg->rr.y1, dlg->rr.x2, dlg->rr.y2);
+ restrict_clip_area(dev, &dlg->r, dlg->rr.x1, dlg->rr.y1,
+ dlg->rr.x2, dlg->rr.y2);
#endif
}
}
@@ -1945,7 +2131,8 @@ void max_buttons_width(struct terminal *term, struct dialog_item_data *butt, int
{
int w = gf_val(-2, -G_DIALOG_BUTTON_SPACE);
int i;
- for (i = 0; i < n; i++) w += txtlen(term, get_text_translation((butt++)->item->text, term)) + gf_val(6, G_DIALOG_BUTTON_SPACE + txtlen(term, cast_uchar G_DIALOG_BUTTON_L) + txtlen(term, cast_uchar G_DIALOG_BUTTON_R));
+ for (i = 0; i < n; i++)
+ w += txtlen(term, get_text_translation((butt++)->item->text, term)) + gf_val(6, G_DIALOG_BUTTON_SPACE + txtlen(term, cast_uchar G_DIALOG_BUTTON_L) + txtlen(term, cast_uchar G_DIALOG_BUTTON_R));
if (w > *width) *width = w;
}
@@ -2289,11 +2476,10 @@ void add_to_history(struct terminal *term, struct history *h, unsigned char *t)
struct list_head *lhs;
size_t l;
if (!h || !t || !*t) return;
- if (term) {
+ if (term)
s = convert(term_charset(term), 0, t, NULL);
- } else {
+ else
s = t;
- }
l = strlen(cast_const_char s);
if (l > INT_MAX - sizeof(struct history_item)) overalloc();
hi = xmalloc(sizeof(struct history_item) + l);
@@ -2359,9 +2545,11 @@ static void input_field_fn(struct dialog_data *dlg)
if (w > max) w = max;
if (w < min) w = min;
rw = w;
- dlg_format_text_and_field(dlg, NULL, dlg->dlg->udata, dlg->items, 0, &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
+ dlg_format_text_and_field(dlg, NULL, dlg->dlg->udata, dlg->items, 0,
+ &y, w, &rw, COLOR_DIALOG_TEXT, AL_LEFT);
y += LL;
- dlg_format_buttons(dlg, NULL, dlg->items + 1, dlg->n - 1, 0, &y, w, &rw, AL_CENTER);
+ dlg_format_buttons(dlg, NULL, dlg->items + 1, dlg->n - 1, 0, &y, w,
+ &rw, AL_CENTER);
w = rw;
dlg->xw = rw + 2 * DIALOG_LB;
dlg->yw = y + 2 * DIALOG_TB;
@@ -2370,7 +2558,8 @@ static void input_field_fn(struct dialog_data *dlg)
y = dlg->y + DIALOG_TB;
dlg_format_text_and_field(dlg, term, dlg->dlg->udata, dlg->items, dlg->x + DIALOG_LB, &y, w, NULL, COLOR_DIALOG_TEXT, AL_LEFT);
y += LL;
- dlg_format_buttons(dlg, term, dlg->items + 1, dlg->n - 1, dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);
+ dlg_format_buttons(dlg, term, dlg->items + 1, dlg->n - 1,
+ dlg->x + DIALOG_LB, &y, w, NULL, AL_CENTER);
}
void input_field_null(void)