diff --git a/workbench/libs/gadtools/freevisualinfo.c b/workbench/libs/gadtools/freevisualinfo.c index e8a5dcee31b..6134b8cf0b1 100644 --- a/workbench/libs/gadtools/freevisualinfo.c +++ b/workbench/libs/gadtools/freevisualinfo.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2007, The AROS Development Team. All rights reserved. + Copyright © 1995-2007, The AROS Development Team. All rights reserved. $Id$ Desc: @@ -47,11 +47,22 @@ ***************************************************************************/ { AROS_LIBFUNC_INIT + struct ImageLink *il; + struct ImageLink *nextil; if (vi) { - FreeScreenDrawInfo(((struct VisualInfo *)vi)->vi_screen, ((struct VisualInfo *)vi)->vi_dri); - FreeVec(vi); + il = ((struct VisualInfo *)vi)->vi_images; + while(il) + { + nextil = il->il_Next; + DisposeObject(il->il_Image); + FreeVec(il); + il = nextil; + } + FreeScreenDrawInfo(((struct VisualInfo *)vi)->vi_screen, ((struct VisualInfo *)vi)->vi_dri); + CloseFont(((struct VisualInfo *)vi)->vi_screenfont); + FreeVec(vi); } AROS_LIBFUNC_EXIT diff --git a/workbench/libs/gadtools/gadtools_intern.h b/workbench/libs/gadtools/gadtools_intern.h index eb7c2103ecd..8255343c36b 100644 --- a/workbench/libs/gadtools/gadtools_intern.h +++ b/workbench/libs/gadtools/gadtools_intern.h @@ -2,7 +2,7 @@ #define GADTOOLS_INTERN_H /* - Copyright © 1995-2011, The AROS Development Team. All rights reserved. + Copyright © 1995-2011, The AROS Development Team. All rights reserved. $Id$ Desc: Internal definitions for gadtools.library. @@ -300,7 +300,11 @@ struct GT_IntuiMessage struct VisualInfo { struct Screen * vi_screen; + struct TextFont * vi_screenfont; struct DrawInfo * vi_dri; + struct ImageLink * vi_images; + UBYTE vi_textpen; + UBYTE vi_backpen; }; /* dummy gadget created by CreateContext */ diff --git a/workbench/libs/gadtools/getvisualinfoa.c b/workbench/libs/gadtools/getvisualinfoa.c index d195c922cf1..e1ae0306730 100644 --- a/workbench/libs/gadtools/getvisualinfoa.c +++ b/workbench/libs/gadtools/getvisualinfoa.c @@ -1,5 +1,5 @@ /* - Copyright © 1995-2007, The AROS Development Team. All rights reserved. + Copyright © 1995-2007, The AROS Development Team. All rights reserved. $Id$ Desc: @@ -61,13 +61,18 @@ if (screen == NULL) return NULL; - vi = AllocVec(sizeof(struct VisualInfo), MEMF_ANY); + vi = AllocVec(sizeof(struct VisualInfo), MEMF_ANY|MEMF_CLEAR); if (!vi) return NULL; vi->vi_screen = screen; + vi->vi_screenfont = OpenFont(screen->Font); vi->vi_dri = GetScreenDrawInfo(screen); - + if(vi->vi_dri) + { + vi->vi_textpen = vi->vi_dri->dri_Pens[TEXTPEN]; + vi->vi_backpen = vi->vi_dri->dri_Pens[BACKGROUNDPEN]; + } return vi; AROS_LIBFUNC_EXIT