<URL: http://bugs.freeciv.org/Ticket/Display.html?id=39337 >
> [dmarks - Do 12. Apr 2007, 06:01:30]:
>
> In the SDL client's pregame nation selection dialog, there's no way of
> accessing the legends.
>
> IIRC it used to be middle-click, but I can't seem to make it work in
> recent versions of the code.
>
> ~Daniel
>
Patch attached.
Index: client/gui-sdl/dialogs.c
===================================================================
--- client/gui-sdl/dialogs.c (Revision 12916)
+++ client/gui-sdl/dialogs.c (Arbeitskopie)
@@ -2425,124 +2425,122 @@
**************************************************************************/
static int nation_button_callback(struct widget *pNationButton)
{
+ set_wstate(pNationButton, FC_WS_SELLECTED);
+ pSellected_Widget = pNationButton;
+
if (Main.event.button.button == SDL_BUTTON_LEFT) {
- set_wstate(pNationButton, FC_WS_SELLECTED);
- pSellected_Widget = pNationButton;
-
- if (Main.event.button.button == SDL_BUTTON_LEFT) {
- struct NAT *pSetup = (struct NAT *)(pNationDlg->pEndWidgetList->data.ptr);
-
- if (pSetup->nation == MAX_ID - pNationButton->ID) {
- widget_redraw(pNationButton);
- widget_flush(pNationButton);
- return -1;
- }
-
- pSetup->nation = MAX_ID - pNationButton->ID;
-
- change_nation_label();
-
- enable(MAX_ID - 1000 - pSetup->nation_city_style);
- pSetup->nation_city_style = get_nation_city_style(get_nation_by_idx(pSetup->nation));
- disable(MAX_ID - 1000 - pSetup->nation_city_style);
+ struct NAT *pSetup = (struct NAT *)(pNationDlg->pEndWidgetList->data.ptr);
- select_random_leader(pSetup->nation);
-
- redraw_group(pNationDlg->pBeginWidgetList, pNationDlg->pEndWidgetList, 0);
- widget_flush(pNationDlg->pEndWidgetList);
- } else {
- /* pop up legend info */
- struct widget *pWindow, *pCancel;
- SDL_String16 *pStr;
- SDL_Surface *pText, *pText2;
- SDL_Rect area, area2;
- struct nation_type *pNation = get_nation_by_idx(MAX_ID - pNationButton->ID);
-
+ if (pSetup->nation == MAX_ID - pNationButton->ID) {
widget_redraw(pNationButton);
- widget_mark_dirty(pNationButton);
+ widget_flush(pNationButton);
+ return -1;
+ }
+
+ pSetup->nation = MAX_ID - pNationButton->ID;
+
+ change_nation_label();
+
+ enable(MAX_ID - 1000 - pSetup->nation_city_style);
+ pSetup->nation_city_style = get_nation_city_style(get_nation_by_idx(pSetup->nation));
+ disable(MAX_ID - 1000 - pSetup->nation_city_style);
- if (!pHelpDlg) {
-
- pHelpDlg = fc_calloc(1, sizeof(struct SMALL_DLG));
-
- pStr = create_str16_from_char("Nation's Legend", adj_font(12));
- pStr->style |= TTF_STYLE_BOLD;
+ select_random_leader(pSetup->nation);
- pWindow = create_window_skeleton(NULL, pStr, 0);
- pWindow->action = help_dlg_callback;
-
- set_wstate(pWindow, FC_WS_NORMAL);
+ redraw_group(pNationDlg->pBeginWidgetList, pNationDlg->pEndWidgetList, 0);
+ widget_flush(pNationDlg->pEndWidgetList);
+ } else {
+ /* pop up legend info */
+ struct widget *pWindow, *pCancel;
+ SDL_String16 *pStr;
+ SDL_Surface *pText, *pText2;
+ SDL_Rect area, area2;
+ struct nation_type *pNation = get_nation_by_idx(MAX_ID - pNationButton->ID);
- pHelpDlg->pEndWidgetList = pWindow;
- add_to_gui_list(ID_WINDOW, pWindow);
-
- pCancel = create_themeicon_button_from_chars(pTheme->CANCEL_Icon,
- pWindow->dst, _("Cancel"), adj_font(14), 0);
- pCancel->action = cancel_help_dlg_callback;
- set_wstate(pCancel, FC_WS_NORMAL);
- pCancel->key = SDLK_ESCAPE;
- add_to_gui_list(ID_BUTTON, pCancel);
- pHelpDlg->pBeginWidgetList = pCancel;
- } else {
- pWindow = pHelpDlg->pEndWidgetList;
- pCancel = pHelpDlg->pBeginWidgetList;
- /* undraw window */
- widget_undraw(pWindow);
- widget_mark_dirty(pWindow);
- }
-
- area = pWindow->area;
-
- if (pNation->legend && *(pNation->legend) != '\0') {
- pStr = create_str16_from_char(pNation->legend, adj_font(12));
- } else {
- pStr = create_str16_from_char("SORRY... NO INFO", adj_font(12));
- }
-
- pStr->fgcol = *get_game_colorRGB(COLOR_THEME_NATIONDLG_LEGEND);
- pText = create_text_surf_smaller_that_w(pStr, Main.screen->w - adj_size(20));
+ widget_redraw(pNationButton);
+ widget_mark_dirty(pNationButton);
+
+ if (!pHelpDlg) {
- copy_chars_to_string16(pStr, Q_(pNation->name_plural));
- pText2 = create_text_surf_from_str16(pStr);
+ pHelpDlg = fc_calloc(1, sizeof(struct SMALL_DLG));
- FREESTRING16(pStr);
-
- /* create window background */
- area.w = MAX(area.w, pText2->w + adj_size(20));
- area.w = MAX(area.w, pText->w + adj_size(20));
- area.w = MAX(area.w, pCancel->size.w + adj_size(20));
- area.h = MAX(area.h, adj_size(9) + pText2->h + adj_size(10) + pText->h
- + adj_size(10) + pCancel->size.h + adj_size(10));
+ pStr = create_str16_from_char("Nation's Legend", adj_font(12));
+ pStr->style |= TTF_STYLE_BOLD;
+
+ pWindow = create_window_skeleton(NULL, pStr, 0);
+ pWindow->action = help_dlg_callback;
- resize_window(pWindow, NULL, get_game_colorRGB(COLOR_THEME_BACKGROUND),
- (pWindow->size.w - pWindow->area.w) + area.w,
- (pWindow->size.h - pWindow->area.h) + area.h);
-
- widget_set_position(pWindow,
- (Main.screen->w - pWindow->size.w) / 2,
- (Main.screen->h - pWindow->size.h) / 2);
-
- area2.x = area.x + adj_size(7);
- area2.y = area.y + adj_size(6);
- alphablit(pText2, NULL, pWindow->theme, &area2);
- area2.y += (pText2->h + adj_size(10));
- FREESURFACE(pText2);
+ set_wstate(pWindow, FC_WS_NORMAL);
- alphablit(pText, NULL, pWindow->theme, &area2);
- FREESURFACE(pText);
+ pHelpDlg->pEndWidgetList = pWindow;
+ add_to_gui_list(ID_WINDOW, pWindow);
- pCancel->size.x = area.x + (area.w - pCancel->size.w) / 2;
- pCancel->size.y = area.y + area.h - pCancel->size.h - adj_size(10);
+ pCancel = create_themeicon_button_from_chars(pTheme->CANCEL_Icon,
+ pWindow->dst, _("Cancel"), adj_font(14), 0);
+ pCancel->action = cancel_help_dlg_callback;
+ set_wstate(pCancel, FC_WS_NORMAL);
+ pCancel->key = SDLK_ESCAPE;
+ add_to_gui_list(ID_BUTTON, pCancel);
+ pHelpDlg->pBeginWidgetList = pCancel;
+ } else {
+ pWindow = pHelpDlg->pEndWidgetList;
+ pCancel = pHelpDlg->pBeginWidgetList;
+ /* undraw window */
+ widget_undraw(pWindow);
+ widget_mark_dirty(pWindow);
+ }
+
+ area = pWindow->area;
- /* redraw */
- redraw_group(pCancel, pWindow, 0);
+ if (pNation->legend && *(pNation->legend) != '\0') {
+ pStr = create_str16_from_char(pNation->legend, adj_font(12));
+ } else {
+ pStr = create_str16_from_char("SORRY... NO INFO", adj_font(12));
+ }
+
+ pStr->fgcol = *get_game_colorRGB(COLOR_THEME_NATIONDLG_LEGEND);
+ pText = create_text_surf_smaller_that_w(pStr, Main.screen->w - adj_size(20));
- widget_mark_dirty(pWindow);
+ copy_chars_to_string16(pStr, Q_(pNation->name_plural));
+ pText2 = create_text_surf_from_str16(pStr);
+
+ FREESTRING16(pStr);
- flush_dirty();
+ /* create window background */
+ area.w = MAX(area.w, pText2->w + adj_size(20));
+ area.w = MAX(area.w, pText->w + adj_size(20));
+ area.w = MAX(area.w, pCancel->size.w + adj_size(20));
+ area.h = MAX(area.h, adj_size(9) + pText2->h + adj_size(10) + pText->h
+ + adj_size(10) + pCancel->size.h + adj_size(10));
+
+ resize_window(pWindow, NULL, get_game_colorRGB(COLOR_THEME_BACKGROUND),
+ (pWindow->size.w - pWindow->area.w) + area.w,
+ (pWindow->size.h - pWindow->area.h) + area.h);
+
+ widget_set_position(pWindow,
+ (Main.screen->w - pWindow->size.w) / 2,
+ (Main.screen->h - pWindow->size.h) / 2);
+
+ area2.x = area.x + adj_size(7);
+ area2.y = area.y + adj_size(6);
+ alphablit(pText2, NULL, pWindow->theme, &area2);
+ area2.y += (pText2->h + adj_size(10));
+ FREESURFACE(pText2);
- }
- }
+ alphablit(pText, NULL, pWindow->theme, &area2);
+ FREESURFACE(pText);
+
+ pCancel->size.x = area.x + (area.w - pCancel->size.w) / 2;
+ pCancel->size.y = area.y + area.h - pCancel->size.h - adj_size(10);
+
+ /* redraw */
+ redraw_group(pCancel, pWindow, 0);
+
+ widget_mark_dirty(pWindow);
+
+ flush_dirty();
+
+ }
return -1;
}
_______________________________________________
Freeciv-dev mailing list
[EMAIL PROTECTED]
https://mail.gna.org/listinfo/freeciv-dev