mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-04 09:54:13 +02:00
Fix Project properties > OK marking the project modified with no edit
Pressing OK in Projet > Propriétés du projet without changing anything marked the project modified and rewrote its defaults for new folios. Besides the Page Num placeholder (fixed separately), four causes: - Title block custom fields: since #271 the dialog offers the template's variables for filling in; those left empty came back as part of the context. Drop the ones not in the stored context. - DiagramContext::remove() left the key's show flag behind, so a context with a key removed never equalled one without it. - Guides: applyConf() marked the project modified whether or not the guides changed. Compare them like every other setting. - Wire dash size and cross-reference offsets: the spin boxes cannot show the stored default (dash size 1 under a minimum of 2; offset 0 under a minimum of 40 shown as "Default"), so the clamped value came back. Keep the stored value unless the box shows something else, as #1204 did for the wire panel. Checked in the GUI (with the Page Num fix as well) on grafcet, schema_indus and Projet_vierge: OK with no edit then Ctrl+S saves the same file as Ctrl+S alone; master writes dash-size 1 -> 2, a cross-reference offset 0 -> 40, and on Projet_vierge 22 empty custom fields. New test for DiagramContext::remove() fails without the fix. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -166,6 +166,7 @@ void TitleBlockPropertiesWidget::setProperties(
|
||||
// Show the saved custom values, plus any of the template's custom variables
|
||||
// that aren't defined yet, so the user only fills in the missing ones (#271).
|
||||
DiagramContext context = properties.context;
|
||||
m_context_keys = context.keys();
|
||||
addTemplateVariables(context, index);
|
||||
m_dcw -> setContext(context);
|
||||
}
|
||||
@@ -215,6 +216,14 @@ TitleBlockProperties TitleBlockPropertiesWidget::properties() const
|
||||
}
|
||||
|
||||
prop.context = m_dcw -> context();
|
||||
//The template's custom variables are only offered for filling in
|
||||
//(#271): one left empty is not part of the properties.
|
||||
const QList<QString> keys = prop.context.keys();
|
||||
for (const QString &key : keys) {
|
||||
if (!m_context_keys.contains(key)
|
||||
&& prop.context.value(key).toString().isEmpty())
|
||||
prop.context.remove(key);
|
||||
}
|
||||
|
||||
prop.auto_page_num = ui->auto_page_cb->currentText();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user