diff --git a/direct/src/showbase/ShowBase.py b/direct/src/showbase/ShowBase.py index 177556abde..b59060b982 100644 --- a/direct/src/showbase/ShowBase.py +++ b/direct/src/showbase/ShowBase.py @@ -789,7 +789,7 @@ class ShowBase(DirectObject.DirectObject): aspectRatio = float(win.getXSize()) / float(win.getYSize()) else: - if win == None: + if win == None or not hasattr(win, "getRequestedProperties"): props = WindowProperties.getDefault() else: props = win.getRequestedProperties() @@ -1531,9 +1531,10 @@ class ShowBase(DirectObject.DirectObject): if self.oobeVis: self.oobeVis.reparentTo(self.hidden) - # Restore the mouse interface node. - #self.mouseInterface.reparentTo(self.mouseWatcher) - self.oobeTrackball.reparentTo(self.dataUnused) + # Restore the mouse interface node, and remove the oobe + # trackball from the data path. + self.mouseInterfaceNode.clearButton(KeyboardButton.control()) + self.oobeTrackball.detachNode() self.cam.reparentTo(self.camera) self.camNode.setLens(self.camLens) @@ -1550,9 +1551,12 @@ class ShowBase(DirectObject.DirectObject): self.oobeCamera.reparentTo(cameraParent) self.oobeCamera.clearMat() - # Move aside the current mouse interface node and put the - # oobeTrackball in its place. - #self.mouseInterface.reparentTo(self.dataUnused) + # Make the regular MouseInterface node respond only when + # the control button is pressed. And the oobe node will + # respond only when control is *not* pressed. + + self.mouseInterfaceNode.requireButton(KeyboardButton.control(), True) + self.oobeTrackball.node().requireButton(KeyboardButton.control(), False) self.oobeTrackball.reparentTo(self.mouseWatcher) # Set our initial OOB position to be just behind the camera.