From e339efa45fb54e794d1dd26f7a716a383cc3dc6d Mon Sep 17 00:00:00 2001 From: Simon Howard Date: Tue, 22 Mar 2011 21:33:17 +0000 Subject: Switch separator to show "screen mode" or "window size" depending on whether fullscreen is turned on or not. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 2308 --- NEWS | 6 ++++++ setup/display.c | 26 +++++++++++++++++++++++--- textscreen/txt_separator.c | 24 ++++++++++++++++-------- textscreen/txt_separator.h | 10 +++++++++- 4 files changed, 54 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index e8b16fe4..d0fee599 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ with instructions specific to the platform that it is targetting. This should help to avoid confusion that some users have reported experiencing. + * The display settings window in the setup tool has been + reorganised to a better arrangement. Compatibility: * Added support for the alternate version of the Final Doom @@ -36,6 +38,10 @@ libtextscreen: * It is now possible to type a '+' in input boxes (thanks Alexandre Xavier). + * It is possible to use the mouse wheel to scroll through scroll + panes. + * Clicking on scroll bars now moves the scroll handle to a + matching location. 1.5.0 (2011-01-02): diff --git a/setup/display.c b/setup/display.c index 67e398b8..f15b2b06 100644 --- a/setup/display.c +++ b/setup/display.c @@ -517,6 +517,21 @@ static void UpdateBPP(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(modes_table)) GenerateModesTable(NULL, modes_table); } +static void UpdateModeSeparator(TXT_UNCAST_ARG(widget), + TXT_UNCAST_ARG(separator)) +{ + TXT_CAST_ARG(txt_separator_t, separator); + + if (fullscreen) + { + TXT_SetSeparatorLabel(separator, "Screen mode"); + } + else + { + TXT_SetSeparatorLabel(separator, "Window size"); + } +} + #if defined(_WIN32) && !defined(_WIN32_WCE) static int use_directx = 1; @@ -612,9 +627,10 @@ void ConfigDisplay(void) { txt_window_t *window; txt_table_t *modes_table; + txt_separator_t *modes_separator; txt_table_t *bpp_table; - txt_checkbox_t *fs_checkbox; txt_window_action_t *advanced_button; + txt_checkbox_t *fs_checkbox; int i; int num_columns; int num_rows; @@ -684,11 +700,14 @@ void ConfigDisplay(void) } TXT_AddWidgets(window, - TXT_NewSeparator("Screen mode"), + modes_separator = TXT_NewSeparator(""), modes_table, NULL); - TXT_SignalConnect(fs_checkbox, "changed", GenerateModesTable, modes_table); + TXT_SignalConnect(fs_checkbox, "changed", + GenerateModesTable, modes_table); + TXT_SignalConnect(fs_checkbox, "changed", + UpdateModeSeparator, modes_separator); // How many rows high will the configuration window be? // Need to take into account number of fullscreen modes, and also @@ -726,6 +745,7 @@ void ConfigDisplay(void) TXT_SCREEN_W / 2, window_y); GenerateModesTable(NULL, modes_table); + UpdateModeSeparator(NULL, modes_separator); // Button to open "advanced" window. // Need to pass a pointer to the modes table, as some of the options diff --git a/textscreen/txt_separator.c b/textscreen/txt_separator.c index 6b779626..563d0c62 100644 --- a/textscreen/txt_separator.c +++ b/textscreen/txt_separator.c @@ -80,6 +80,20 @@ static void TXT_SeparatorDestructor(TXT_UNCAST_ARG(separator)) free(separator->label); } +void TXT_SetSeparatorLabel(txt_separator_t *separator, char *label) +{ + free(separator->label); + + if (label != NULL) + { + separator->label = strdup(label); + } + else + { + separator->label = NULL; + } +} + txt_widget_class_t txt_separator_class = { TXT_NeverSelectable, @@ -99,14 +113,8 @@ txt_separator_t *TXT_NewSeparator(char *label) TXT_InitWidget(separator, &txt_separator_class); - if (label != NULL) - { - separator->label = strdup(label); - } - else - { - separator->label = NULL; - } + separator->label = NULL; + TXT_SetSeparatorLabel(separator, label); return separator; } diff --git a/textscreen/txt_separator.h b/textscreen/txt_separator.h index 2f2331da..f693d70e 100644 --- a/textscreen/txt_separator.h +++ b/textscreen/txt_separator.h @@ -59,6 +59,14 @@ extern txt_widget_class_t txt_separator_class; txt_separator_t *TXT_NewSeparator(char *label); -#endif /* #ifndef TXT_SEPARATOR_H */ +/** + * Change the label on a separator. + * + * @param separator The separator. + * @param label The new label. + */ + +void TXT_SetSeparatorLabel(txt_separator_t *separator, char *label); +#endif /* #ifndef TXT_SEPARATOR_H */ -- cgit v1.2.3