Override mode works with non-toplevel viewprovider

And adopt the part design body to handle the override mode correctly
This commit is contained in:
Stefan Tröger
2016-03-15 07:06:49 +01:00
parent 048c374080
commit 666a5968cb
6 changed files with 57 additions and 8 deletions

View File

@@ -65,6 +65,7 @@ PROPERTY_SOURCE_ABSTRACT(Gui::ViewProvider, App::PropertyContainer)
ViewProvider::ViewProvider()
: pcAnnotation(0)
, pyViewObject(0)
, overrideMode("As Is")
, _iActualMode(-1)
, _iEditMode(-1)
, viewOverrideMode(-1)
@@ -334,19 +335,27 @@ bool ViewProvider::isVisible() const
}
void ViewProvider::setOverrideMode(const std::string &mode)
{
if (mode == "As Is")
{
if (mode == "As Is") {
viewOverrideMode = -1;
overrideMode = mode;
}
else {
std::map<std::string, int>::const_iterator it = _sDisplayMaskModes.find(mode);
if (it == _sDisplayMaskModes.end())
return; //view style not supported
viewOverrideMode = (*it).second;
overrideMode = mode;
}
if (pcModeSwitch->whichChild.getValue() != -1)
setModeSwitch();
}
const string ViewProvider::getOverrideMode() {
return overrideMode;
}
void ViewProvider::setModeSwitch()
{
if (viewOverrideMode == -1)