diff --git a/src/dialog.c b/src/dialog.c index 738f6af9f..a6497731e 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -106,17 +106,20 @@ widget_erase (Widget * w) /* Clean the dialog area, draw the frame and the title */ void -common_dialog_repaint (struct Dlg_head *h) +common_dialog_repaint (Dlg_head *h) { int space; + if (h->state != DLG_ACTIVE) + return; + space = (h->flags & DLG_COMPACT) ? 0 : 1; tty_setcolor (DLG_NORMALC (h)); dlg_erase (h); draw_box (h, space, space, h->lines - 2 * space, h->cols - 2 * space, FALSE); - if (h->title) + if (h->title != NULL) { tty_setcolor (DLG_HOT_NORMALC (h)); dlg_move (h, space, (h->cols - str_term_width1 (h->title)) / 2); @@ -317,7 +320,7 @@ dlg_set_default_colors (void) void dlg_erase (Dlg_head * h) { - if (h != NULL) + if ((h != NULL) && (h->state == DLG_ACTIVE)) tty_fill_region (h->y, h->x, h->lines, h->cols, ' '); } @@ -458,7 +461,7 @@ dlg_focus (Dlg_head * h) { /* cannot focus disabled widget ... */ - if (h->current != NULL) + if ((h->current != NULL) && (h->state == DLG_ACTIVE)) { Widget *current = (Widget *) h->current->data; @@ -478,7 +481,7 @@ dlg_unfocus (Dlg_head * h) { /* ... but can unfocus disabled widget */ - if (h->current != NULL) + if ((h->current != NULL) && (h->state == DLG_ACTIVE)) { Widget *current = (Widget *) h->current->data; @@ -649,7 +652,7 @@ update_cursor (Dlg_head * h) { GList *p = h->current; - if (p != NULL) + if ((p != NULL) && (h->state == DLG_ACTIVE)) { Widget *w; @@ -683,6 +686,9 @@ update_cursor (Dlg_head * h) void dlg_redraw (Dlg_head * h) { + if (h->state != DLG_ACTIVE) + return; + if (h->winch_pending) { h->winch_pending = FALSE; diff --git a/src/dialog.h b/src/dialog.h index 4292b8a24..84b51cb59 100644 --- a/src/dialog.h +++ b/src/dialog.h @@ -253,7 +253,7 @@ void init_widget (Widget * w, int y, int x, int lines, int cols, cb_ret_t default_dlg_callback (Dlg_head * h, Widget * sender, dlg_msg_t msg, int parm, void *data); /* Default paint routine for dialogs */ -void common_dialog_repaint (struct Dlg_head *h); +void common_dialog_repaint (Dlg_head *h); #define widget_move(w, _y, _x) tty_gotoyx (((Widget *)(w))->y + _y, ((Widget *)(w))->x + _x) #define dlg_move(h, _y, _x) tty_gotoyx (((Dlg_head *)(h))->y + _y, ((Dlg_head *)(h))->x + _x)