WGroup: support draw.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2016-10-16 13:11:18 +03:00
parent 2a265e38a0
commit c77dc88ff9
2 changed files with 25 additions and 5 deletions

View File

@ -614,20 +614,21 @@ do_refresh (void)
void
dlg_draw (WDialog * h)
{
Widget *w = WIDGET (h);
WGroup *g = GROUP (h);
if (!widget_get_state (WIDGET (h), WST_ACTIVE))
if (!widget_get_state (w, WST_ACTIVE))
return;
if (g->winch_pending)
{
g->winch_pending = FALSE;
send_message (h, NULL, MSG_RESIZE, 0, NULL);
send_message (w, NULL, MSG_RESIZE, 0, NULL);
}
send_message (h, NULL, MSG_DRAW, 0, NULL);
group_send_broadcast_msg (g, MSG_DRAW);
widget_update_cursor (WIDGET (h));
send_message (w, NULL, MSG_DRAW, 0, NULL);
group_default_callback (w, NULL, MSG_DRAW, 0, NULL);
widget_update_cursor (w);
}
/* --------------------------------------------------------------------------------------------- */

View File

@ -380,6 +380,21 @@ group_default_resize (WGroup * g, WRect * r)
group_set_position (g, &r0);
}
/* --------------------------------------------------------------------------------------------- */
static void
group_draw (WGroup * g)
{
/* draw all widgets in Z-order, from first to last */
if (widget_get_state (WIDGET (g), WST_ACTIVE))
{
GList *p;
for (p = g->widgets; p != NULL; p = g_list_next (p))
widget_draw (WIDGET (p->data));
}
}
/* --------------------------------------------------------------------------------------------- */
/*** public functions ****************************************************************************/
/* --------------------------------------------------------------------------------------------- */
@ -423,6 +438,10 @@ group_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm,
g_list_foreach (g->widgets, group_widget_init, NULL);
return MSG_HANDLED;
case MSG_DRAW:
group_draw (g);
return MSG_HANDLED;
case MSG_CURSOR:
return group_update_cursor (g);