Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!zaphod.mps.ohio-state.edu!mips!twg.com!david From: david@twg.com (David S. Herron) Newsgroups: comp.windows.x.motif Subject: Popup's cause lock-up of XmText (loss of keyboard translations) Message-ID: <8240@gollum.twg.com> Date: 8 Nov 90 21:32:59 GMT Reply-To: david@twg.com (David S. Herron) Organization: The Wollongong Group, Palo Alto, CA Lines: 65 Problem: Occasionally, after a popup-dialog, the application will partially `lock up'. Specifically, focusCallback on XmText widgets work but the keyboard translations stop working. Workaround: Off the menu is a popup-dialog .. bring that up and press its |ABORT| button. The difference between the two popups is in the parentage. The application has a central screen which is a XmMainWindow & which has very little on this screen. The real meat of the application is accessed via menu selections on this central screen. Each of the `side' applications do an XtCreateApplicationShell() to create a `top_level' widget, and I am using XmMainWindow inside that. Each branch of the application is two screens deep -- that is; main screen -> applicationShell -> applicationShell But this doesn't seem important since the top level widget isn't told anything about parentage. I'm just mentioning this for completeness. Inside each of these the hierarchy is: topLevelShellWidgetClass XmMainWindow ...menu bar... XmForm ...stuff... The XmForm is passed in as the work_region argument to XmMainWindowSetAreas(). The popups I am having trouble with start from somewhere underneath the XmForm in work_region. But instead of being told that their parent is the widget from which they were activated (Example: I have a scrolling list thing I use.. part of it is a `delete' button.. before actually doing the deletion I pupup up a XmFormDialog asking "Are you sure?" with |YES| and |NO| buttons..), the parent (passed in XmCreateFormDialog() in this example) is the top_level widget at the very top of the hierarchy. I used to have a dialog like this parented from the |DELETE| button (for instance) but had some problem which I don't remember right now. The parent of the popup started from the menu_bar is the button in the menu_bar which started this dialog. Since discovering this difference I've changed these popups so that their parent is the XmForm & I haven't had a problem since. Questions: Do I have the right solution? Is there more which y'all need to know? Is this a known problem? How the fart is somebody to know the correct parentage to use? (This isn't discussed well in any manual I have -- The O'Reilly books, OSF's Motif Programmers Guide (which is just as useless as always), and Young's Xt+Motif book). One of the entries in the beta-Frequently-Asked-Questions was somewhat similar & talked about keyboard grabs. I barked up that tree for awhile without gaining any understanding. -- <- David Herron, an MMDF & WIN/MHS guy, <- Formerly: David Herron -- NonResident E-Mail Hack <- <- Use the force Wes!