Yes. Please take a look at the IupDialog documentation. Best, Scuri
Em sex., 28 de mai. de 2021 12:09, Isaac Raway <is...@mm.st> escreveu: > I just need to set NOFLUSH on the dialog element itself? > > On Thu, May 27, 2021, at 4:13 PM, Antonio Scuri wrote: > > Easier will be to disable the IupFlush on the close of that dialog. Set > NOFLUSH=Yes. > > But it seems to me that your timer is doing something that prevents the > popup loop to end. > > Best, > Scuri > > > Em qui., 27 de mai. de 2021 às 18:11, Isaac Raway <is...@mm.st> escreveu: > > > Scuri, > > Ah great, this was enough for me to figure out what was going on, well... > sort of. > > I did have 3 timers, one of which had a very small interval of 1 (TIME=1). > > If I change this to TIME=100 the problem seemed to go away, but would > impact performance of the module that it was calling (a web server's > polling function). > > So instead I implemented my own message loop: > > However there are two issues: > > 1. I'm not sure how to know when to exit the loop > 2. The documentation for IupLoopStep says: > > "Note that this function does not replace IupMainLoop." > > So, are there things that IupLoopStep doesn't do that are needed for IUP > to be healthy? Is there an example on completely replacing IupMainLoop with > a custom event loop? > > > > On Wed, May 26, 2021, at 10:19 PM, Antonio Scuri wrote: > > Hi, > > IupPopup starts a new message loop that will return only when one of the > following occurs: "a callback returns IUP_CLOSE, IupExitLoop is called, or > when the popup dialog is hidden, for example using IupHide". > > It looks that you are doing it right, but this: "IupHide never returns > and all following events are handled inside IupHide." Is quite weird. There > is no message processing in IupHide, but IupFlush is called. So pending > messages are processed. I noticed you have a timer, it may process the > timer and call the timer callback. > > If this does not help you find the problem, then to be able to reproduce > the problem here I'll need a small example code. For instance, you can > change one of the pre-defined samples. > > Sorry for taking so long. > > Best, > Scuri > > > > Em qua., 26 de mai. de 2021 às 14:14, Antonio Scuri < > antonio.sc...@gmail.com> escreveu: > > Later today, I'll see this. > > Best, > Scuri > > Em qua., 26 de mai. de 2021 às 14:12, Isaac Raway <is...@mm.st> escreveu: > > > Could really use some help with this. This bug is bad enough and hard > enough to track down I'm being forced to consider using a different > toolkit, which would be a ton of work and isn't really something I want to > do. Is there any way to figure out why these functions aren't returning as > documented? > > IJR > > On Thu, May 13, 2021, at 10:27 AM, Isaac Raway wrote: > > I should clarify that the callback below is on CLOSE_CB as well as ACTION > of the OK button on the form. When I close the dialog box with the windows > close button, it works correctly (callback is fired, and IupPopup returns, > where the data is saved). But it does *not* work when clicking the OK > button -- IupHide never returns and all following events are handled inside > IupHide. > > I tried removing the event callback from CLOSE_CB but the result is the > same when clicking the OK button: > > > stonenotes_nt.exe!win_dialog_ok_cb(Ihandle_ * self) Line 125 C > [External Code] > stonenotes_nt.exe!win_dialog_show(const char * id, const char * > ledFilename, int(*)(Ihandle_ *) callback, int(*)(WIN_DIALOG *, void *) > value_callback, void * data) Line 120 C > stonenotes_nt.exe!win_options_categories(Ihandle_ * self) Line 2748 C > [External Code] > stonenotes_nt.exe!win_dialog_ok_cb(Ihandle_ * self) Line 133 C > [External Code] > stonenotes_nt.exe!win_dialog_show(const char * id, const char * > ledFilename, int(*)(Ihandle_ *) callback, int(*)(WIN_DIALOG *, void *) > value_callback, void * data) Line 120 C > stonenotes_nt.exe!win_options_categories(Ihandle_ * self) Line 2748 C > [External Code] > stonenotes_nt.exe!main(int argc, char * * argv) Line 136 C++ > [External Code] > > > Also here is the dialog setup code in case that helps: > > > tWIN_DIALOG *win_dialog_show(const char *id, const char *ledFilename, > Icallback callback, dialog_value_callback value_callback, void *data) > { > tWIN_DIALOG *result = calloc(1, sizeof(tWIN_DIALOG)); > Ihandle *config = get_config(); > sds attr; > int immediate_show = 0; > int x = 0, y = 0; > > char *error = sys_load_led(ledFilename); // this function calls IupLoad > and returns the result after locating the file > if (NULL == error) { > sds key = NULL; > > // get handles from loaded LED file > result->ok = IupGetHandle(key = sdscatfmt(sdsempty(), "IDC_%s_OK", > id)); > sdsfree(key); > > result->cancel = IupGetHandle(key = sdscatfmt(sdsempty(), > "IDC_%s_CANCEL", id)); > sdsfree(key); > > result->dlg = IupGetHandle(key = sdscatfmt(sdsempty(), "IDD_%s", > id)); > sdsfree(key); > } else { > result->dlg = IupSetAttributes(IupDialog(IupLabel(error)), > "TITLE=\"StoneNotes Dialog Load - ERROR\", SIZE=400x200, > EXPANDCHILDREN=YES, RESIZE=YES"); > } > > IupSetAttribute(result->dlg, "MINBOX", "NO"); > > //IupSetCallback(result->dlg, "CLOSE_CB", (Icallback)win_dialog_ok_cb); > //IupSetAttribute(result->dlg, "WIND", (char *)result); > > IupSetCallback(result->ok, "ACTION", (Icallback)win_dialog_ok_cb); > IupSetAttribute(result->ok, "WIND", (char *)result); > > IupSetCallback(result->cancel, "ACTION", > (Icallback)win_dialog_cancel_cb); > IupSetAttribute(result->cancel, "WIND", (char *)result); > > // .. snip .. removed additional elements on the form > > IupPopup(result->dlg, IUP_CENTER, IUP_CENTER); > return result; > } > > IJR > > On Wed, May 12, 2021, at 12:31 PM, Isaac Raway wrote: > > For some reason I've noticed that calls to IupPopup have stopped returning. > > My dialogs have a callback for CLOSE_CB like this: > > int win_dialog_ok_cb(Ihandle *self) > { > tWIN_DIALOG *dialog = (tWIN_DIALOG *)IupGetAttribute(self, "WIND"); > Ihandle *config = get_config(); > sds val; > > dialog->ok_clicked = 1; > > IupHide(dialog->dlg); > > return IUP_DEFAULT; > } > > > This has always worked before, but now it seems that the IupHide call > enters a new loop which processes events from my main window. > > I tried returning IUP_CLOSE instead and commenting out IupHide, but the > loop appears to be entered instead after the callback returns. > > [External Code] > ... snip, below is a IUP timer callback .. > stonenotes_nt.exe!win_ipc_timer(Ihandle_ * self) Line 4203 C > [External Code] > > stonenotes_nt.exe!win_dialog_show(const char * id, const char * > ledFilename, int(*)(Ihandle_ *) callback, int(*)(WIN_DIALOG *, void *) > value_callback, void * data) Line 120 C > stonenotes_nt.exe!win_options_categories(Ihandle_ * self) Line 2748 C > [External Code] > stonenotes_nt.exe!main(int argc, char * * argv) Line 136 C++ > [External Code] > > > My win_dialog_show function is what calls IupPopup. This function is never > returned to, the rest of the execution happens inside the IupPopup call > (2nd External Code above). > > Any ideas why this would have changed? > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users > > _______________________________________________ > Iup-users mailing list > Iup-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/iup-users >
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users