1
0
Fork 0

Issue 790, restore hiding of 2D panel by view.

Restore previous behaviour where the 2D panel is automatically hidden when the current view is != 0. Also add two property controls to alter this behaviour, and the 'autohide' behaviour at runtime. (Requires an fgdata update to get matching preferences.xml)

https://code.google.com/p/flightgear-bugs/issues/detail?id=790
This commit is contained in:
James Turner 2012-06-26 11:24:10 +01:00
parent 1c83a15110
commit 08e72f8bfc
2 changed files with 24 additions and 1 deletions

View file

@ -26,6 +26,7 @@
#include <Cockpit/panel.hxx>
#include <Cockpit/panel_io.hxx>
#include "Viewer/viewer.hxx"
#include "Viewer/viewmgr.hxx"
using std::vector;
@ -304,7 +305,21 @@ bool FGPanelNode::isVisible2d() const
return false;
}
if (_panel->getAutohide()) {
if (!_hideNonDefaultViews) {
_hideNonDefaultViews = fgGetNode("/sim/panel/hide-nonzero-view", true);
}
if (_hideNonDefaultViews->getBoolValue()) {
if (globals->get_viewmgr()->get_current() != 0) {
return false;
}
}
if (!_autoHide2d) {
_autoHide2d = fgGetNode("/sim/panel/hide-nonzero-heading-offset", true);
}
if (_panel->getAutohide() && _autoHide2d->getBoolValue()) {
if (!globals->get_current_view()) {
return false;
}

View file

@ -4,7 +4,9 @@
#include <osg/Vec3>
#include <osg/Matrix>
#include <osg/Drawable>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/props/props.hxx>
class FGPanel;
class SGPropertyNode;
@ -66,6 +68,12 @@ private:
// The matrix that results, which transforms 2D x/y panel
// coordinates into 3D coordinates of the panel quadrilateral.
osg::Matrix _xform;
/// should the 2D panel auto-hide when the view orientation changes
mutable SGPropertyNode_ptr _autoHide2d;
/// should the 2D panel be hidden in views other than the default (view 0)
mutable SGPropertyNode_ptr _hideNonDefaultViews;
};