diff options
author | Simon Howard | 2006-06-02 19:29:24 +0000 |
---|---|---|
committer | Simon Howard | 2006-06-02 19:29:24 +0000 |
commit | 517af9477b7269564f3ba8c0ccc6ef53c78a7abb (patch) | |
tree | 1d60d219a7c71b90330baee90acf06a05670fb0f /textscreen/txt_widget.c | |
parent | b3e5170bbba1c3048da86a5291cd45524abfeac2 (diff) | |
download | chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.tar.gz chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.tar.bz2 chocolate-doom-517af9477b7269564f3ba8c0ccc6ef53c78a7abb.zip |
textscreen: Rejig how the entire drawing process works. Add a recursive
layout method that assigns the position and size of widgets for the whole
window before drawing. Add another method that responds to mouse button
presses. Allow windows to have no title bar by specifying NULL as the
title.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 547
Diffstat (limited to 'textscreen/txt_widget.c')
-rw-r--r-- | textscreen/txt_widget.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/textscreen/txt_widget.c b/textscreen/txt_widget.c index 8411ac5b..3ca92c9a 100644 --- a/textscreen/txt_widget.c +++ b/textscreen/txt_widget.c @@ -112,18 +112,24 @@ void TXT_EmitSignal(TXT_UNCAST_ARG(widget), char *signal_name) } } -void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget), int *w, int *h) +void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget)) { TXT_CAST_ARG(txt_widget_t, widget); - return widget->widget_class->size_calc(widget, w, h); + widget->widget_class->size_calc(widget); } -void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int w, int selected) +void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int selected) { TXT_CAST_ARG(txt_widget_t, widget); - widget->widget_class->drawer(widget, w, selected); + // For convenience... + + TXT_GotoXY(widget->x, widget->y); + + // Call drawer method + + widget->widget_class->drawer(widget, selected); } void TXT_DestroyWidget(TXT_UNCAST_ARG(widget)) @@ -154,4 +160,23 @@ void TXT_SetWidgetAlign(TXT_UNCAST_ARG(widget), txt_horiz_align_t horiz_align) widget->align = horiz_align; } +void TXT_WidgetMousePress(TXT_UNCAST_ARG(widget), int x, int y, int b) +{ + TXT_CAST_ARG(txt_widget_t, widget); + + if (widget->widget_class->mouse_press != NULL) + { + widget->widget_class->mouse_press(widget, x, y, b); + } +} + +void TXT_LayoutWidget(TXT_UNCAST_ARG(widget)) +{ + TXT_CAST_ARG(txt_widget_t, widget); + + if (widget->widget_class->layout != NULL) + { + widget->widget_class->layout(widget); + } +} |