From f74f720e631840566200e8f022b1068e6f3453fb Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sat, 24 Aug 2013 06:21:02 +0200 Subject: [PATCH] Added further (though rarely informative) handling of windows library error. --- src/draw_wins.c | 11 +++++++---- src/keybindings.c | 3 ++- src/misc.c | 31 ++++++++++++++++--------------- src/misc.h | 11 ++++++++--- 4 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/draw_wins.c b/src/draw_wins.c index 4dfd054..02b569c 100644 --- a/src/draw_wins.c +++ b/src/draw_wins.c @@ -11,6 +11,7 @@ #include "map_objects.h" /* for structs MapObj, Player */ #include "map.h" /* for Map struct */ #include "main.h" /* for World struct */ +#include "rexit.h" /* for err_exit() */ @@ -227,16 +228,18 @@ extern void draw_keys_win(struct Win * win) { if (0 == y && offset > 0) { - draw_scroll_hint(&win->frame, y, offset + 1, '^'); + exit_err(draw_scroll_hint(&win->frame, y, offset + 1, '^'), + world, NULL); continue; } else if (win->frame.size.y == y + 1 && 0 < world->keyswindata->max - (win->frame.size.y + offset - 1)) { - draw_scroll_hint(&win->frame, y, - world->keyswindata->max - - (offset + win->frame.size.y) + 2, 'v'); + exit_err(draw_scroll_hint(&win->frame, y, + world->keyswindata->max + - (offset + win->frame.size.y) + 2, 'v'), + world, NULL); continue; } attri = 0; diff --git a/src/keybindings.c b/src/keybindings.c index f33b559..0b5194c 100644 --- a/src/keybindings.c +++ b/src/keybindings.c @@ -10,6 +10,7 @@ #include "windows.h" /* for draw_all_wins() and WinMeta struct */ #include "misc.h" /* for texfile_sizes() */ #include "main.h" /* for World struct */ +#include "rexit.h" /* for err_exit() */ @@ -169,7 +170,7 @@ extern char * get_keyname(uint16_t keycode) extern void keyswin_mod_key(struct World * world, struct WinMeta * win_meta) { world->keyswindata->edit = 1; - draw_all_wins(win_meta); + exit_err(draw_all_wins(win_meta), world, "Window drawing error."); int key = getch(); if (key < 1000) { diff --git a/src/misc.c b/src/misc.c index 6f8c6c7..7256885 100644 --- a/src/misc.c +++ b/src/misc.c @@ -185,15 +185,15 @@ extern void save_game(struct World * world) -extern void toggle_window(struct WinMeta * win_meta, struct Win * win) +extern uint8_t toggle_window(struct WinMeta * win_meta, struct Win * win) { if (0 != win->frame.curses_win) { - suspend_win(win_meta, win); + return suspend_win(win_meta, win); } else { - append_win(win_meta, win); + return append_win(win_meta, win); } } @@ -213,7 +213,7 @@ extern void scroll_pad(struct WinMeta * win_meta, char dir) -extern void growshrink_active_window(struct WinMeta * win_meta, char change) +extern uint8_t growshrink_active_window(struct WinMeta * win_meta, char change) { if (0 != win_meta->active) { @@ -234,8 +234,9 @@ extern void growshrink_active_window(struct WinMeta * win_meta, char change) { size.x++; } - resize_active_win (win_meta, size); + return resize_active_win (win_meta, size); } + return 0; } @@ -272,19 +273,19 @@ extern uint8_t meta_keys(int key, struct World * world, } else if (key == get_action_key(world->keybindings, "toggle keys window")) { - toggle_window(win_meta, win_keys); + exit_err(toggle_window(win_meta, win_keys), world, NULL); } else if (key == get_action_key(world->keybindings, "toggle map window")) { - toggle_window(win_meta, win_map); + exit_err(toggle_window(win_meta, win_map), world, NULL); } else if (key == get_action_key(world->keybindings, "toggle info window")) { - toggle_window(win_meta, win_info); + exit_err(toggle_window(win_meta, win_info), world, NULL); } else if (key == get_action_key(world->keybindings, "toggle log window")) { - toggle_window(win_meta, win_log); + exit_err(toggle_window(win_meta, win_log), world, NULL); } else if (key == get_action_key(world->keybindings, "cycle forwards")) { @@ -296,27 +297,27 @@ extern uint8_t meta_keys(int key, struct World * world, } else if (key == get_action_key(world->keybindings, "shift forwards")) { - shift_active_win(win_meta, 'f'); + exit_err(shift_active_win(win_meta, 'f'), world, NULL); } else if (key == get_action_key(world->keybindings, "shift backwards")) { - shift_active_win(win_meta, 'b'); + exit_err(shift_active_win(win_meta, 'b'), world, NULL); } else if (key == get_action_key(world->keybindings, "grow horizontally")) { - growshrink_active_window(win_meta, '*'); + exit_err(growshrink_active_window(win_meta, '*'), world, NULL); } else if (key == get_action_key(world->keybindings, "shrink horizontally")) { - growshrink_active_window(win_meta, '_'); + exit_err(growshrink_active_window(win_meta, '_'), world, NULL); } else if (key == get_action_key(world->keybindings, "grow vertically")) { - growshrink_active_window(win_meta, '+'); + exit_err(growshrink_active_window(win_meta, '+'), world, NULL); } else if (key == get_action_key(world->keybindings, "shrink vertically")) { - growshrink_active_window(win_meta, '-'); + exit_err(growshrink_active_window(win_meta, '-'), world, NULL); } else if (key == get_action_key(world->keybindings, "save keys")) { diff --git a/src/misc.h b/src/misc.h index 39efe6a..259a511 100644 --- a/src/misc.h +++ b/src/misc.h @@ -54,8 +54,11 @@ extern void save_game(struct World * world); -/* Toggle display of a window "win". */ -extern void toggle_window(struct WinMeta * win_meta, struct Win * win); +/* Toggle display of a window "win". + * + * Return 0 on success, 1 on (ncurses pad/window memory allocation) error. + */ +extern uint8_t toggle_window(struct WinMeta * win_meta, struct Win * win); @@ -70,8 +73,10 @@ extern void scroll_pad(struct WinMeta * win_meta, char dir); /* Try to grow or shrink the active window horizontally ("change" = "*"/"_") or * vertically ("change = "+"/"-") by one cell size, subject to the limitations * provided by the window manager via resize_active_win(). + * + * Return 0 on success, 1 on (ncurses pad/window memory allocation) error. */ -extern void growshrink_active_window(struct WinMeta * win_meta, char change); +extern uint8_t growshrink_active_window(struct WinMeta * win_meta, char change); -- 2.30.2