if(mode != CTK_MODE_NORMAL) {
if(mode != CTK_MODE_NORMAL || widget == NULL) {
ctk_widget_redraw(struct ctk_widget *widget){  struct ctk_window *window;  if(mode != CTK_MODE_NORMAL) {    return;  }  /* If this function isn't called by CTK itself, we only queue the     redraw request. */  if(DISPATCHER_CURRENT() != ctkid) {    redraw |= REDRAW_WIDGETS;    add_redrawwidget(widget);  } else {        /* Only redraw widgets that are in the foremost window. If we       would allow redrawing widgets in non-focused windows, we would       have to redraw all the windows that cover the non-focused       window as well, which would lead to flickering.       Also, we avoid drawing any widgets when the menus are active.    */    #if CTK_CONF_MENUS    if(menus.open == NULL)#endif /* CTK_CONF_MENUS */      {	window = widget->window;	if(window == dialog) {	  ctk_draw_widget(widget, CTK_FOCUS_DIALOG, 0, height);	} else if(window == windows) {	  ctk_draw_widget(widget, CTK_FOCUS_WINDOW, 0, height);	      	} else if(window == &desktop_window) {	  ctk_draw_widget(widget, 0, 0, height);	}      }  }}