Hi Josh,
Admittedly this isn't obvious from the documentation, but windows
should be destroyed this way:
AG_ObjectDetach(win);
Detached windows are automatically freed by the event loop, so calls
such as AG_ObjectDestroy() or free() must not be used. To pass a
pointer to the window to your event handler routine:
AG_ButtonNewFn(win, 0,
"Button Function", Button_Function, "%p", win);
static void
Button_Function(AG_Event *event)
{
AG_Window *win = AG_PTR(1);
AG_ObjectDetach(win);
}
On Wed, Nov 07, 2012 at 01:30:46AM +0000, Josh Branning wrote:
> Hello all, I've got agar working on Debian now, I had to do ldconfig
> after installing.
>
> I now attempting to close a window, using a function that is triggered
> from a button, but I am running into difficulties. If anyone knows what
> I need to replace /* Close "win" */ with in order to close the window
> named "win", I'd be a very happy person! :)
>
> #include <string.h>
>
> static void
> Button_Function(AG_Event *event)
> {
>
> /* Do something then ... */
>
> /* Close "win" */
> }
>
> static void
> Button(AG_Event *event)
> {
> AG_Window *winParent = AG_PTR(1);
> AG_Window *win;
>
> /* Create our window. */
> if ((win = AG_WindowNew(0)) == NULL) {
> return;
> }
> AG_WindowSetCaption(win, "This is the window I would like to close from
> Button_Function");
>
> AG_ButtonNewFn(win, 0,
> "Button Function", Button_Function, "%p", 0);
>
> AG_WindowSetGeometryAligned(win, AG_WINDOW_ML, 320, 240);
> AG_WindowAttach(winParent, win);
> AG_WindowShow(win);
> }
>
> int
> main(int argc, char *argv[])
> {
>
> if (AG_InitCore(NULL, 0) == -1 ||
> AG_InitGraphics(0) == -1)
> return (1);
>
> AG_Window *mainWin;
>
> /* Create our window. */
> if ((mainWin = AG_WindowNew(0)) == NULL) {
> return -1;
> }
> AG_WindowSetCaption(mainWin, "Test");
>
> /* Create a polled table. */
> AG_ButtonNewFn(mainWin, 0,
> "Button", Button, NULL, 0);
>
> /* Display and resize our window. */
> AG_WindowSetGeometryAligned(mainWin, AG_WINDOW_ML, 640, 480);
> AG_WindowShow(mainWin);
>
> AG_EventLoop();
> return (0);
> }
>
> _______________________________________________
> Agar mailing list
> [email protected]
> http://libagar.org/lists.html
_______________________________________________
Agar mailing list
[email protected]
http://libagar.org/lists.html