From 56824b130b786aab49876a71c6c768a17c5a4f1c Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Fri, 10 Dec 2010 20:31:46 +0000 Subject: Replace txt_widget_t#selectable with a callback function to query whether the widget is selectable. This stops the table code from selecting things that aren't really selectable - eg. empty tables, scrollpanes containing unselectable widgets, etc. Fixes a bug with the warp menu (thanks Proteh). Subversion-branch: /trunk/chocolate-doom Subversion-revision: 2207 --- textscreen/txt_widget.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'textscreen/txt_widget.c') diff --git a/textscreen/txt_widget.c b/textscreen/txt_widget.c index 2300b32c..760943d5 100644 --- a/textscreen/txt_widget.c +++ b/textscreen/txt_widget.c @@ -83,9 +83,8 @@ void TXT_InitWidget(TXT_UNCAST_ARG(widget), txt_widget_class_t *widget_class) widget->widget_class = widget_class; widget->callback_table = TXT_NewCallbackTable(); - // Default values: visible and selectable + // Visible by default. - widget->selectable = 1; widget->visible = 1; // Align left by default @@ -214,3 +213,27 @@ void TXT_LayoutWidget(TXT_UNCAST_ARG(widget)) } } +int TXT_AlwaysSelectable(TXT_UNCAST_ARG(widget)) +{ + return 1; +} + +int TXT_NeverSelectable(TXT_UNCAST_ARG(widget)) +{ + return 0; +} + +int TXT_SelectableWidget(TXT_UNCAST_ARG(widget)) +{ + TXT_CAST_ARG(txt_widget_t, widget); + + if (widget->widget_class->selectable != NULL) + { + return widget->widget_class->selectable(widget); + } + else + { + return 0; + } +} + -- cgit v1.2.3