From 8d2bae818d7438e1ba41f69b3ad966b6dcedee0d Mon Sep 17 00:00:00 2001 From: jsalmon3 <> Date: Tue, 1 Apr 2003 15:58:48 +0000 Subject: [PATCH] Fixed bug in colors, freed memory --- src/ui/script_ui.cpp | 61 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 11 deletions(-) diff --git a/src/ui/script_ui.cpp b/src/ui/script_ui.cpp index 37fdd4ca4..42c2dffd8 100644 --- a/src/ui/script_ui.cpp +++ b/src/ui/script_ui.cpp @@ -10,7 +10,7 @@ // /**@name ccl_ui.c - The ui ccl functions. */ // -// (c) Copyright 1999-2003 by Lutz Sammer +// (c) Copyright 1999-2003 by Lutz Sammer and Jimmy Salmon // // FreeCraft is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published @@ -2302,10 +2302,22 @@ local SCM CclDefineMenu(SCM list) if (menu->items[i].d.text.text) { free(menu->items[i].d.text.text); } + if (menu->items[i].d.text.normalcolor) { + free(menu->items[i].d.text.normalcolor); + } + if (menu->items[i].d.text.reversecolor) { + free(menu->items[i].d.text.normalcolor); + } } else if (mitype == MI_TYPE_BUTTON) { if (menu->items[i].d.button.text) { free(menu->items[i].d.button.text); } + if (menu->items[i].d.button.normalcolor) { + free(menu->items[i].d.button.normalcolor); + } + if (menu->items[i].d.button.reversecolor) { + free(menu->items[i].d.button.normalcolor); + } } else if (mitype == MI_TYPE_PULLDOWN) { int j; j = menu->items[i].d.pulldown.noptions-1; @@ -2313,6 +2325,33 @@ local SCM CclDefineMenu(SCM list) free(menu->items[i].d.pulldown.options[j]); } free(menu->items[i].d.pulldown.options); + if (menu->items[i].d.pulldown.normalcolor) { + free(menu->items[i].d.pulldown.normalcolor); + } + if (menu->items[i].d.pulldown.reversecolor) { + free(menu->items[i].d.pulldown.normalcolor); + } + } else if (mitype == MI_TYPE_LISTBOX) { + if (menu->items[i].d.listbox.normalcolor) { + free(menu->items[i].d.listbox.normalcolor); + } + if (menu->items[i].d.listbox.reversecolor) { + free(menu->items[i].d.listbox.normalcolor); + } + } else if (mitype == MI_TYPE_INPUT) { + if (menu->items[i].d.input.normalcolor) { + free(menu->items[i].d.input.normalcolor); + } + if (menu->items[i].d.input.reversecolor) { + free(menu->items[i].d.input.normalcolor); + } + } else if (mitype == MI_TYPE_GEM) { + if (menu->items[i].d.gem.normalcolor) { + free(menu->items[i].d.gem.normalcolor); + } + if (menu->items[i].d.gem.reversecolor) { + free(menu->items[i].d.gem.normalcolor); + } } } free(menu->items); @@ -2640,11 +2679,11 @@ local SCM CclDefineMenuItem(SCM list) item->d.button.button=scm2buttonid(value); } else if ( gh_eq_p(value, gh_symbol2scm("color-normal")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.button.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); } } else if ( gh_eq_p(value, gh_symbol2scm("color-reverse")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.button.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); } } else { //s1=gh_scm2newstr(value, NULL); @@ -2705,11 +2744,11 @@ local SCM CclDefineMenuItem(SCM list) sublist=gh_cdr(sublist); } else if ( gh_eq_p(value, gh_symbol2scm("color-normal")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.pulldown.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); } } else if ( gh_eq_p(value, gh_symbol2scm("color-reverse")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.pulldown.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); } } else { //s1=gh_scm2newstr(value, NULL); @@ -2779,11 +2818,11 @@ local SCM CclDefineMenuItem(SCM list) sublist=gh_cdr(sublist); } else if ( gh_eq_p(value, gh_symbol2scm("color-normal")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.listbox.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); } } else if ( gh_eq_p(value, gh_symbol2scm("color-reverse")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.listbox.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); } } else { //s1=gh_scm2newstr(value, NULL); @@ -2916,11 +2955,11 @@ local SCM CclDefineMenuItem(SCM list) item->d.input.maxch=gh_scm2int(value); } else if ( gh_eq_p(value, gh_symbol2scm("color-normal")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.input.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); } } else if ( gh_eq_p(value, gh_symbol2scm("color-reverse")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.input.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); } } else { //s1=gh_scm2newstr(value, NULL); @@ -2972,11 +3011,11 @@ local SCM CclDefineMenuItem(SCM list) item->d.gem.text=gh_scm2newstr(value, NULL); } else if ( gh_eq_p(value, gh_symbol2scm("color-normal")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.gem.normalcolor=gh_scm2newstr(gh_car(sublist), NULL); } } else if ( gh_eq_p(value, gh_symbol2scm("color-reverse")) ) { if ( !gh_null_p(gh_car(sublist)) ) { - item->d.text.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); + item->d.gem.reversecolor=gh_scm2newstr(gh_car(sublist), NULL); } } else { //s1=gh_scm2newstr(value, NULL);