diff --git a/sources/diagramview.cpp b/sources/diagramview.cpp index 3c1841c2e..b07b03924 100644 --- a/sources/diagramview.cpp +++ b/sources/diagramview.cpp @@ -16,6 +16,7 @@ along with QElectroTech. If not, see . */ #include "diagramview.h" +#include "lastusedstyle.h" #include "qetproject.h" #include "QPropertyUndoCommand/qpropertyundocommand.h" #include "diagramcommands.h" @@ -143,6 +144,10 @@ DiagramView::DiagramView(Diagram *diagram, QWidget *parent) : QPropertyUndoCommand *undo = new QPropertyUndoCommand(edited_conductor, "properties", old_value, new_value); undo->setText(tr("Modifier les propriétés d'un conducteur", "undo caption")); m_diagram->undoStack().push(undo); + + // remember it for the next conductor drawn this session, + // the way LastUsedStyle already does for shapes (#879) + LastUsedStyle::setConductorColor(new_color); } } }); diff --git a/sources/lastusedstyle.cpp b/sources/lastusedstyle.cpp index 0dad351a8..168843231 100644 --- a/sources/lastusedstyle.cpp +++ b/sources/lastusedstyle.cpp @@ -23,6 +23,8 @@ QBrush LastUsedStyle::m_shape_brush; bool LastUsedStyle::m_has_shape_brush = false; QFont LastUsedStyle::m_text_font; bool LastUsedStyle::m_has_text_font = false; +QColor LastUsedStyle::m_conductor_color; +bool LastUsedStyle::m_has_conductor_color = false; /** @return true if a shape pen was set this session @@ -104,3 +106,30 @@ void LastUsedStyle::setTextFont(const QFont &font) m_text_font = font; m_has_text_font = true; } + +/** + @return true if a conductor color was set this session +*/ +bool LastUsedStyle::hasConductorColor() +{ + return m_has_conductor_color; +} + +/** + @return the last color applied to a conductor this session +*/ +QColor LastUsedStyle::conductorColor() +{ + return m_conductor_color; +} + +/** + @brief LastUsedStyle::setConductorColor + Record @a color as the last-used conductor color for this session + @param color +*/ +void LastUsedStyle::setConductorColor(const QColor &color) +{ + m_conductor_color = color; + m_has_conductor_color = true; +} diff --git a/sources/lastusedstyle.h b/sources/lastusedstyle.h index 17c1f50b3..4cca3b1b3 100644 --- a/sources/lastusedstyle.h +++ b/sources/lastusedstyle.h @@ -19,20 +19,23 @@ #define LAST_USED_STYLE_H #include +#include #include #include /** @brief The LastUsedStyle class - Session-scoped "last used" style for new shapes and free text created - on the diagram canvas: whatever pen/brush/font was last applied through - the properties editors becomes the starting point for the next new - item of that type, the way most drawing tools behave. + Session-scoped "last used" style for new shapes, free text and + conductors created on the diagram canvas: whatever pen/brush/font/color + was last applied through the properties editors becomes the starting + point for the next new item of that type, the way most drawing tools + behave. Deliberately in-memory only, not QSettings-backed: this is a live "what did I just use" value for the current editing session, not an app-wide default (that's already covered by the Preferences dialog's - font setting, read as the fallback when nothing has been set yet). + font setting, read as the fallback when nothing has been set yet, and + by the project's default conductor color, read the same way). */ class LastUsedStyle { @@ -49,6 +52,10 @@ class LastUsedStyle static QFont textFont(); static void setTextFont(const QFont &font); + static bool hasConductorColor(); + static QColor conductorColor(); + static void setConductorColor(const QColor &color); + private: LastUsedStyle() = delete; @@ -58,6 +65,8 @@ class LastUsedStyle static bool m_has_shape_brush; static QFont m_text_font; static bool m_has_text_font; + static QColor m_conductor_color; + static bool m_has_conductor_color; }; #endif // LAST_USED_STYLE_H diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 9d37ac387..049ac36d8 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -16,6 +16,7 @@ along with QElectroTech. If not, see . */ #include "../qetgraphicsitem/conductor.h" +#include "../lastusedstyle.h" #include "../qetproject.h" #include "../QPropertyUndoCommand/qpropertyundocommand.h" #include "../autoNum/numerotationcontextcommands.h" @@ -127,11 +128,17 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) : m_text_item = new ConductorTextItem(m_properties.text, this); connect(m_text_item, &ConductorTextItem::textEdited, this, &Conductor::displayedTextChanged); - //Set the default conductor properties. - if (p1->diagram()) - setProperties(p1->diagram()->defaultConductorProperties); - else if (p2->diagram()) - setProperties(p2->diagram()->defaultConductorProperties); + //Set the default conductor properties. The color, specifically, is + //overridden by the last one applied via the F2 color editor this + //session (#879), the same way LastUsedStyle already does for shapes. + Diagram *dia = p1->diagram() ? p1->diagram() : p2->diagram(); + if (dia) + { + ConductorProperties properties = dia->defaultConductorProperties; + if (LastUsedStyle::hasConductorColor()) + properties.color = LastUsedStyle::conductorColor(); + setProperties(properties); + } } /**