[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
David A. Capello <davidcapello@xxxxxxxxxx> wrote:
> This patch is so that when sending a message MSG_END, the
> parameter `c' it is the index of the object that I produce
> the exit.
> This is useful for if the doubts an object wants
> to have different answers depending on the object that I
> produce the exit (for e.g.: press "ok" sprite_proc creates
> a bitmap, press "cancel" sprite_proc it doesn't create
> anything...).
I still think this particular example is better done using the
return value of `do_dialog'. However..
Bob convinced me in a private message:
> Rather, it's so that the widgets can have different behaviours
> depending on which widget ended the dialog (or so the original
> auther wrote).
This might be useful in different cases. I was about to apply the
patch, but it's slightly wrong.
diff -Nu --recursive allegro.old/src/gui.c allegro.new/src/gui.c
--- allegro.old/src/gui.c Fri Feb 2 14:16:08 2001
+++ allegro.new/src/gui.c Thu Feb 15 22:38:58 2001
@@ -1039,7 +1039,7 @@
int obj;
/* send the finish messages */
- dialog_message(player->dialog, MSG_END, 0, &player->obj);
+ dialog_message(player->dialog, MSG_END, player->obj, &player->obj);
/* remove the double click handler */
gui_install_count--;
If you only use "return D_CLOSE" to close a dialog then it would be
fine. But if you use the `init_dialog' and `update_dialog'
functions, you could `shutdown_dialog' at any time, so `player->obj'
will not contain the right value.
I haven't tested this, so I might have messed up..
BTW, does anyone know why `shutdown_dialog' does this at the start:
dialog_message(player->dialog, MSG_END, 0, &player->obj);
...
then this at the end:
...
obj = player->obj;
free(player);
return obj;
instead of just:
dialog_message(player->dialog, MSG_END, 0, &obj);
...
free(player);
return obj;
AFAICT, in between, `player->obj' is not used at all.
--
tjaden@xxxxxxxxxx - http://www.psynet.net/tjaden/
KEDOPHOBIA (ked oh FO be uh), n. The fear of having one's sneakers eaten
by the teeth on the escalator. -- Rich Hall, "Sniglets"