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 >>>>>>> <mailto:Iup-users%40lists.sourceforge.net> >>>>>>> https://lists.sourceforge.net/lists/listinfo/iup-users >>>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Iup-users mailing list >>>>>> Iup-users@lists.sourceforge.net >>>>>> <mailto:Iup-users%40lists.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 <mailto:Iup-users%40lists.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 <mailto:Iup-users%40lists.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