diff --git a/src/legend/qarealegendmarker.cpp b/src/legend/qarealegendmarker.cpp index 0f93b02..a2fa6e7 100644 --- a/src/legend/qarealegendmarker.cpp +++ b/src/legend/qarealegendmarker.cpp @@ -103,11 +103,11 @@ void QAreaLegendMarkerPrivate::updated() bool labelChanged = false; bool brushChanged = false; - if (m_item->brush() != m_series->brush()) { + if (!m_customBrush && (m_item->brush() != m_series->brush())) { m_item->setBrush(m_series->brush()); brushChanged = true; } - if (m_item->label() != m_series->name()) { + if (!m_customLabel && (m_item->label() != m_series->name())) { m_item->setLabel(m_series->name()); labelChanged = true; } diff --git a/src/legend/qbarlegendmarker.cpp b/src/legend/qbarlegendmarker.cpp index 24bd38a..da7adcf 100644 --- a/src/legend/qbarlegendmarker.cpp +++ b/src/legend/qbarlegendmarker.cpp @@ -116,15 +116,15 @@ void QBarLegendMarkerPrivate::updated() bool brushChanged = false; bool penChanged = false; - if (m_item->pen() != m_barset->pen()) { + if (!m_customPen && (m_item->pen() != m_barset->pen())) { m_item->setPen(m_barset->pen()); penChanged = true; } - if (m_item->brush() != m_barset->brush()) { + if (!m_customBrush && (m_item->brush() != m_barset->brush())) { m_item->setBrush(m_barset->brush()); brushChanged = true; } - if (m_item->label() != m_barset->label()) { + if (!m_customLabel && (m_item->label() != m_barset->label())) { m_item->setLabel(m_barset->label()); labelChanged = true; } diff --git a/src/legend/qlegendmarker.cpp b/src/legend/qlegendmarker.cpp index ac67923..aa10f60 100644 --- a/src/legend/qlegendmarker.cpp +++ b/src/legend/qlegendmarker.cpp @@ -168,7 +168,12 @@ QString QLegendMarker::label() const */ void QLegendMarker::setLabel(const QString &label) { - d_ptr->m_item->setLabel(label); + if (label.isEmpty()) { + d_ptr->m_customLabel = false; + } else { + d_ptr->m_customLabel = true; + d_ptr->m_item->setLabel(label); + } } /*! Returns the brush which is used to draw label. @@ -215,7 +220,12 @@ QPen QLegendMarker::pen() const */ void QLegendMarker::setPen(const QPen &pen) { - d_ptr->m_item->setPen(pen); + if (pen == QPen(Qt::NoPen)) { + d_ptr->m_customPen = false; + } else { + d_ptr->m_customPen = true; + d_ptr->m_item->setPen(pen); + } } /*! @@ -231,7 +241,12 @@ QBrush QLegendMarker::brush() const */ void QLegendMarker::setBrush(const QBrush &brush) { - d_ptr->m_item->setBrush(brush); + if (brush == QBrush(Qt::NoBrush)) { + d_ptr->m_customBrush = false; + } else { + d_ptr->m_customBrush = true; + d_ptr->m_item->setBrush(brush); + } } /*! @@ -253,6 +268,9 @@ void QLegendMarker::setVisible(bool visible) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QLegendMarkerPrivate::QLegendMarkerPrivate(QLegendMarker *q, QLegend *legend) : m_legend(legend), + m_customLabel(false), + m_customBrush(false), + m_customPen(false), q_ptr(q) { m_item = new LegendMarkerItem(this); diff --git a/src/legend/qlegendmarker_p.h b/src/legend/qlegendmarker_p.h index b041952..e1b130e 100644 --- a/src/legend/qlegendmarker_p.h +++ b/src/legend/qlegendmarker_p.h @@ -73,6 +73,9 @@ public Q_SLOTS: protected: LegendMarkerItem *m_item; QLegend *m_legend; + bool m_customLabel; + bool m_customBrush; + bool m_customPen; private: QLegendMarker *q_ptr; diff --git a/src/legend/qpielegendmarker.cpp b/src/legend/qpielegendmarker.cpp index a5729e3..4f4b580 100644 --- a/src/legend/qpielegendmarker.cpp +++ b/src/legend/qpielegendmarker.cpp @@ -115,15 +115,15 @@ void QPieLegendMarkerPrivate::updated() bool brushChanged = false; bool penChanged = false; - if (m_item->pen() != m_slice->pen()) { + if (!m_customPen && (m_item->pen() != m_slice->pen())) { m_item->setPen(m_slice->pen()); penChanged = true; } - if (m_item->brush() != m_slice->brush()) { + if (!m_customBrush && (m_item->brush() != m_slice->brush())) { m_item->setBrush(m_slice->brush()); brushChanged = true; } - if (m_item->label() != m_slice->label()) { + if (!m_customLabel && (m_item->label() != m_slice->label())) { m_item->setLabel(m_slice->label()); labelChanged = true; } diff --git a/src/legend/qxylegendmarker.cpp b/src/legend/qxylegendmarker.cpp index 894f9c3..1e65d42 100644 --- a/src/legend/qxylegendmarker.cpp +++ b/src/legend/qxylegendmarker.cpp @@ -103,18 +103,18 @@ void QXYLegendMarkerPrivate::updated() bool labelChanged = false; bool brushChanged = false; - if (m_item->label() != m_series->name()) { + if (!m_customLabel && (m_item->label() != m_series->name())) { m_item->setLabel(m_series->name()); labelChanged = true; } if (m_series->type()== QAbstractSeries::SeriesTypeScatter) { - if (m_item->brush() != m_series->brush()) { + if (!m_customBrush && (m_item->brush() != m_series->brush())) { m_item->setBrush(m_series->brush()); brushChanged = true; } } else { - if (m_item->brush().color() != m_series->pen().color()) { + if (!m_customBrush && (m_item->brush().color() != m_series->pen().color())) { m_item->setBrush(QBrush(m_series->pen().color())); brushChanged = true; }