Basically What it says in the title. The problem is right now it shows on change regardless if it was checked or unchecked.
<h:selectBooleanCheckbox id="checkbox" value="checkbox" >
</h:selectBooleanCheckbox>
<p:overlayPanel for="checkbox" widgetVar="descOverlay">
Test
</p:overlayPanel>
Try this...
<h:selectBooleanCheckbox id="chkbox" value="checkbox" ></h:selectBooleanCheckbox>
<p:overlayPanel for="chkbox" widgetVar="desc" showEvent="mousedown" hideEvent="mousedown">
Test
</p:overlayPanel>
Revised:
<h:selectBooleanCheckbox id="checkbox" onclick="(this.checked ? descOverlay.show() : descOverlay.hide());"/>
<p:overlayPanel for="checkbox" widgetVar="descOverlay" id="descOverlay" showEvent="mouseup" hideEvent="mouseup" appendToBody="true">
Test
</p:overlayPanel>