In some further testing, we've narrowed the problem down a bit to the XtGrabButton in RCPopup.C in the Xm library. When using motif to create a popup, using, for example XmCreatePopupMenu, it seems to use XtGrabButton. We found that if XtUngrabButton is called, the problem doesn't occur.
For example, a popup is created like so in example code:
menuRC = XmCreatePopupMenu(parent, (char*)(const char*)menuName, NULL, 0);
Then Ungrabbed immediately after:
for (i=0; i < ((_XmRowColumnRec *)menuRC)->row_column.postFromCount; i++)
{
XtUngrabButton( ((_XmRowColumnRec *)menuRC)->row_column.postFromList[i], AnyButton, AnyModifier);
}
Now the pop-up works with mouse button 3 correctly. I'm not sure what other effects this workaround would have, but it seems to be working for us so far.
In some further testing, we've narrowed the problem down a bit to the XtGrabButton in RCPopup.C in the Xm library. When using motif to create a popup, using, for example XmCreatePopupMenu, it seems to use XtGrabButton. We found that if XtUngrabButton is called, the problem doesn't occur.
For example, a popup is created like so in example code: nu(parent, (char*)(const char*)menuName, NULL, 0);
menuRC = XmCreatePopupMe
Then Ungrabbed immediately after:
for (i=0; i < ((_XmRowColumnRec *)menuRC) ->row_column. postFromCount; i++) ->row_column. postFromList[ i], AnyButton, AnyModifier);
{
XtUngrabButton( ((_XmRowColumnRec *)menuRC)
}
Now the pop-up works with mouse button 3 correctly. I'm not sure what other effects this workaround would have, but it seems to be working for us so far.