[comp.windows.x.motif] TransientShell

aw@KITCHEN.BELLCORE.COM (Andrew Wason, aw@cellar.bae.bellcore.com) (12/01/90)

I have started using TransientShells in my application
in an attempt to avoid the "convenience" of XmDialogShell.
I have a XmNcreatePopupChildProc function for each dialog
to create its children when it is popped up.

This doesn't work, because when I create the TransientShell,
Motif adds a function to the XmNpopupCallback list.
This function, libXm.a(Vendor.o):PopupCallback, appears to attempt
to realize the TransientShell.  Since the Intrinsics calls
the XmNpopupCallback before the XmNcreatePopupChildProc,
this function tries to realize my shell before it has any
children and I get a "shell has zero width/height error".

I solved this by doing an XtRemoveAllCallbacks on XmNpopupCallback
immediately after creating my TransientShell.  Everything seems
to work find now, but since I don't have source I am afraid
this PopupCallback() function does something else and removing
it may end up screwing me later.

Does anyone know what PopupCallback() does?  Is there anything
else I should be worried about when substituting TransientShell
for XmDialogShell?

Thanks,
Andrew

--------------------------------------------------------------------------------
Andrew Wason                                        Bell Communications Research
aw@cellar.bae.bellcore.com                          Piscataway, NJ
bellcore!cellar!aw

nazgul@alphalpha.com (Kee Hinckley) (12/01/90)

> Does anyone know what PopupCallback() does?  Is there anything
> else I should be worried about when substituting TransientShell
> for XmDialogShell?

Well, to start with, the reason it realizes your widget is that it
claims to be working around the "broken Xt spec ordering for
realize and popup callback".

It also sets the map style (whatever that is) and does a bunch
of suff with mwm hints.  Off hand it looks a little dangerous
to override.