On 10/28/21 09:09, Marc Balmer wrote:
I am working on Motif code, so please excuse if this mailing list is
not the right place for asking my question, but since Motif is based on
libXt, I thought I'll give it a try. --

I would like to add and remove CascadeButtons dynamically to and from
a menubar (a.k.a RowColumn widget).

For each addition of a button I create a completely new menubar
containing the button(s) to be added and set it in the MainWindow via:

    XtVaSetValues(main_window, XmNmenuBar, new_menubar, NULL);

The good news is that the program does not crash :) but the menubar is
not updated either. Only when I resize the application window does the
menubar get updated and displays the new button(s).

So my question is: How can I trigger the reconfiguration of a widget's
geometry without having to resize the main window?

The XmUpdateDisplay() function does exactly this.  Call it with the top level 
widget as parameter.


Thanks for the hint! Calling XmUpdateDisplay() did not have the desired
effect, however.

It turned out that I have to explicitly do an XtDestroyWidget() on the
old menubar before setting the new one (which I had not yet done). It
seems like -- if you don't do this -- the MainWindow widget keeps a
reference of the old menubar somehow still around, even though it should
have been overwritten by XtVaSetValues(XmNmenuBar).

Best,
Holger

Reply via email to