I’m still running Panda3D 1.2.3 and I don’t have a convenient copy of the latest head-build handy; my apologies if this issue has been fixed in a recent update.
We found an interesting issue concerning DirectButtons and window focus in Panda3D 1.2.3 for Windows. It starts with the following example code:
import direct.directbase.DirectStart from pandac.PandaModules import * from direct.gui.DirectGui import * from direct.interval.IntervalGlobal import * base.openMainWindow(type="onscreen") def buttonPressed(txt): print txt myButton=DirectButton() myButton.bind(B1PRESS,lambda x:buttonPressed('Doink!')) myButton2=DirectButton() myButton2.setX(.4) myButton2.bind(B1PRESS,lambda x:buttonPressed('Plink!')) run()
Running this small script will give you a Panda window with two buttons. To manifest the issue, do the following:
- Click and hold on the left button. “Doink!” is printed.
- While holding the mouse, press alt-tab to bring up the Windows program-selector. Continue holding the mouse button and the alt button down, but release tab.
- Move your cursor outside the Panda window.
- Release the mouse button and alt, which will kill the alt-tab window.
Panda is now in a state where if you click in the Panda window again, the click will be detected as a mousedown on “Doink!” (a second “Doink!” will be printed to the console), regardless of where the mousedown occurs. Obscure!
Is this a known issue that has been patched in a later version? If not, can anyone think of a workaround to force Panda to clear its notion of mousedown’d buttons when this order of operations occurs?
Thank you for your help!