Hey man thanks for your in depth description of the issue! I think that the second solution is better. The customMessageBox is used in other places throughout aMSN's code base as well, and the modal behavior may be necessary there.
If no-one has any better solutions I will commit this? - Tom PEACEYALL wrote: > Hello! > > This is my first time programming tcl so I barely know anything about > how dialog boxes work in tk. Anyways, If I try to close the chat > window while more than one tab is opened from the compiz-fusion scale > addon (as in the expose mac os x-like feature in compiz-fusion), after > the close dialog appears, an empty tk error dialog also appears with > the following text as detail: > "grab failed: another application has grab > while executing > "grab set $w" > (procedure "::amsn::customMessageBox" line 106) > invoked from within > "::amsn::customMessageBox [trans closeall] yesnocancel question [trans > title] $window 1 1 "ContainerClose"" > (procedure "::ChatWindow::ContainerClose" line 18) > invoked from within > "::ChatWindow::ContainerClose .container_0" > (command for "WM_DELETE_WINDOW" window manager protocol)" > When that error dialog appears, the buttons on the close dialog no > longer work and the only way I can close the chat window is to close > each tab seperately until all the tabs have closed. In addition, now > the close dialog that has appeared before isn't receiving any input > and the only way to close it is to restart amsn or press the "esc" key > while the close dialog is focused. > > Since I know nothing of tk, I can only think of two solutions which are: > > 1. Create the close customMessageBox as a non-modal dialog. (Since I > don't think creating it as a modal dialog is that necessary on > account that it would be perfectly fine if all events are still > available in the chat window while the dialog appears in my opinion) > > 2. In the function ::amsn::customMessageBox on line 835, add a catch > statement around "grab set $w" > > Actually both those solutions aren't actually solutions, they're just > workarounds. > The first one doesn't even run the grab statement anymore since the if > block it's in wouldn't be run. > The second one is a workaround since even though the tk error messgae > dialog isn't displayed anymore and everything seems to continue as > normal (i.e.: All the buttons on the dialog work as they're supposed > to), the chat window still allows events/inputs and therefore the > dialog isn't actually a "real" modal dialog anymore. Honestly, I can't > evaluate which would be the better solution for the reason that > they're both just quick workarounds. Though, I think the second one > would be better because in this case, the only drawback is that even > though the close dialog will stay a modal dialog, when an error like > this should have appeared, it would suppress it and the chat window > would still be able to receive events, but as stated before, the close > dialog actually does receive input and work as the user expects in > comparison to if the error was not suppressed. > > Anyways, for the second workaround, I have proposed the patch for it > if someone wants to test it. > > Again, I am pretty much illiterate in Tk, so if someone has a better > idea or has a proper solution, please say it. > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Check out the new SourceForge.net Marketplace. > It is the best place to buy or sell services for > just about anything Open Source. > http://p.sf.net/sfu/Xq1LFB > > > ------------------------------------------------------------------------ > > _______________________________________________ > Amsn-devel mailing list > Amsn-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/amsn-devel ------------------------------------------------------------------------------ Check out the new SourceForge.net Marketplace. It is the best place to buy or sell services for just about anything Open Source. http://p.sf.net/sfu/Xq1LFB _______________________________________________ Amsn-devel mailing list Amsn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/amsn-devel