14.17: the Layers panel grays only for what lasts
This commit is contained in:
12 files changed
+156
-12
No files matched your search
@@ -263,6 +263,13 @@ void EditorSession::endEdit()
|
||||
notify();
|
||||
}
|
||||
|
||||
bool EditorSession::layersLookEditable() const
|
||||
{
|
||||
return !m_selectionAmountOperation && !m_colorRange && !m_textDraft && m_document && !showsBusy() && !m_isImporting && !m_showsNewDocument
|
||||
&& !m_showsImporter && !m_renamingLayerID && !(m_transformEdit && m_transformEdit->persistent) && !m_cropRect && !m_gradientEdit && !m_hueSaturation
|
||||
&& !m_levels && !m_filterEdit && !m_adjustmentEditingID;
|
||||
}
|
||||
|
||||
bool EditorSession::canEditLayers() const
|
||||
{
|
||||
return !m_selectionAmountOperation && !m_colorRange && !m_textDraft && m_document && !m_brushStroke && !m_warpStroke && !m_isProjectBusy && !m_isImporting
|
||||
|
||||
@@ -217,6 +217,8 @@ public:
|
||||
void beginEdit(const QString &name);
|
||||
void endEdit();
|
||||
bool canEditLayers() const;
|
||||
// The panel grays for what lasts, not for a stroke.
|
||||
bool layersLookEditable() const;
|
||||
void addBlankLayer();
|
||||
void deleteLayer(QUuid id);
|
||||
void deleteActiveLayer();
|
||||
|
||||
@@ -21,7 +21,7 @@ LayerMaskMenu::LayerMaskMenu(EditorSession &session, QWidget *parent) : QToolBut
|
||||
void LayerMaskMenu::synchronize()
|
||||
{
|
||||
const std::optional<ImageLayer> active = m_session.activeLayer();
|
||||
setEnabled(m_session.canEditMask() && !(active && active->mask));
|
||||
setEnabled(m_session.layersLookEditable() && m_session.selectedLayerIDs().size() == 1 && active && !active->mask);
|
||||
setToolTip(m_session.selection() ? QStringLiteral("Add layer mask revealing the selection (Alt-click to hide it)")
|
||||
: QStringLiteral("Add layer mask (Alt-click for a black mask)"));
|
||||
setIcon(footerIcon(LayerIcon::addMask, *this));
|
||||
|
||||
@@ -160,10 +160,13 @@ void LayersPanel::synchronize()
|
||||
m_count->setText(QString::number(count));
|
||||
m_body->setCurrentIndex(count > 0 ? 0 : 1);
|
||||
m_emptyHint->setText(document ? QStringLiteral("Import an image or add a blank layer.") : QStringLiteral("Create a canvas or import an image."));
|
||||
m_addBlankLayer->setEnabled(m_session.canEditLayers());
|
||||
m_group->setEnabled(m_session.canEditLayers());
|
||||
m_effects->setEnabled(m_session.canEditEffects());
|
||||
m_adjustments->setEnabled(m_session.canEditLayers());
|
||||
// Swift 1.4.8: no flash for a stroke; the session refuses.
|
||||
const bool editable = m_session.layersLookEditable();
|
||||
const std::optional<ImageLayer> active = m_session.activeLayer();
|
||||
m_addBlankLayer->setEnabled(editable);
|
||||
m_group->setEnabled(editable);
|
||||
m_effects->setEnabled(editable && active && active->asset);
|
||||
m_adjustments->setEnabled(editable);
|
||||
const bool mask = m_session.isMaskSelected(), several = m_session.selectedLayerIDs().size() > 1;
|
||||
const QString what = m_session.selectedEffect() ? QStringLiteral("Delete selected effect")
|
||||
: mask ? QStringLiteral("Delete layer mask")
|
||||
@@ -171,7 +174,7 @@ void LayersPanel::synchronize()
|
||||
: QStringLiteral("Delete selected layer");
|
||||
m_delete->setToolTip(what);
|
||||
m_delete->setAccessibleName(what);
|
||||
m_delete->setEnabled(m_session.canEditLayers() && m_session.activeLayer().has_value());
|
||||
m_delete->setEnabled(editable && active);
|
||||
// Swift's .task(id:): a new request begins its editor.
|
||||
if (m_session.adjustmentEditingID() != m_adjustmentTask) {
|
||||
m_adjustmentTask = m_session.adjustmentEditingID();
|
||||
|
||||
@@ -44,7 +44,8 @@ void NativeLayerList::update()
|
||||
next.push_back(layers[index]);
|
||||
m_details.insert_or_assign(entry.layer.id, entry);
|
||||
}
|
||||
m_editingEnabled = m_session.canEditLayers();
|
||||
// Swift 1.4.8: gray for what lasts; actions ask the gates.
|
||||
m_editingEnabled = m_session.layersLookEditable();
|
||||
// The rows are made anew when the ids change.
|
||||
bool same = next.size() == m_rows.size();
|
||||
for (size_t row = 0; same && row < next.size(); ++row)
|
||||
|
||||
Reference in new issue
Block a user