Motif/Xt: Trigger reconfiguration of a widget

Chris Sorenson csoren at
Fri Oct 29 02:48:25 UTC 2021

> 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

If you just want to redraw one widget, you can do it like this ("w" is the 
widget), you have to include a private header though, for access to

#include <X11/IntrinsicP.h>

XExposeEvent xev;
Dimension ww, hh; /* the widget's width and height */

xev.window  = XtWindow(w); 
xev.type    = Expose;
xev.display = XtDisplay(w);

XtVaGetValues(w, XmNwidth, &ww, XmNheight, &hh, NULL);

xev.width  = ww;
xev.height = hh;

(XtClass (w))->core_class.expose(w, (XEvent *) &xev, NULL);

More information about the xorg mailing list