[TD]restore view frame toggle in context menu

#This is the commit message #2:
This commit is contained in:
wandererfan
2025-12-09 22:11:05 -05:00
committed by Yorik van Havre
parent c95ce2c06d
commit fa8e81f0d6
11 changed files with 188 additions and 31 deletions

View File

@@ -1069,34 +1069,7 @@ void QGIView::makeMark(QPointF pos, QColor color)
void QGIView::updateFrameVisibility()
{
// Get the preference group
auto hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/View");
// 0 = Auto (Default), 1 = Always On, 2 = Always Off
int frameMode = hGrp->GetInt("ViewFrameMode", 0);
bool shouldShow = false;
if (isSelected()) {
shouldShow = true;
}
else {
if (frameMode == 1) {
// Always On
shouldShow = true;
}
else if (frameMode == 2) {
// Always Off
shouldShow = false;
}
else {
// Auto (Default)
shouldShow = m_isHovered;
}
}
if (shouldShow) {
if (shouldShowFrame()) {
m_border->show();
m_label->show();
if (m_lock && getViewObject()) {
@@ -1105,10 +1078,47 @@ void QGIView::updateFrameVisibility()
} else {
m_border->hide();
m_label->hide();
if (m_lock) m_lock->hide();
if (m_lock) {
m_lock->hide();
}
}
}
bool QGIView::shouldShowFrame() const
{
if (isSelected()) {
return true;
}
ViewFrameMode frameMode = PreferencesGui::getViewFrameMode();
switch(frameMode) {
case ViewFrameMode::Manual:
return shouldShowFromViewProvider();
case ViewFrameMode::AlwaysOn:
return true;
case ViewFrameMode::AlwaysOff:
return false;
break;
default:
return m_isHovered;
};
}
bool QGIView::shouldShowFromViewProvider() const
{
DrawView* feature = getViewObject();
if (!feature) {
return false;
}
ViewProviderPage* vpPage = getViewProviderPage(feature);
if (!vpPage) {
return false;
}
return vpPage->getFrameState();
}
//! Retrieves objects of type T with given indexes
template <typename T>
std::vector<T> QGIView::getObjects(std::vector<int> indexes)