diff --git a/CHANGELOG-EN.md b/CHANGELOG-EN.md
index ff2b32cc..f257937a 100644
--- a/CHANGELOG-EN.md
+++ b/CHANGELOG-EN.md
@@ -32,6 +32,7 @@
## Latest
+* (2021.03.22) Added `Theme` `Unbind` button to unbind theme when copying chart #118
* (2021.03.18) Fixed an issue where the check box after `Foldout` in `Inspector` could not be checked
* (2021.03.18) Fixed an issue with `BarChart` displaying an exception in the `0` value
* (2021.03.14) Fixed `Tooltip` indicator was not indicating the correct location in some cases
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1055b00c..095c5502 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,6 +32,7 @@
## Latest
+* (2021.03.22) 增加`Theme`的`Unbind`按钮用于解绑复制图表时的主题 #118
* (2021.03.18) 修复`Inspector`下`Foldout`后的勾选框无法选中的问题
* (2021.03.18) 修复`BarChart`在`0`数值时显示异常的问题
* (2021.03.14) 修复`Tooltip`的指示器在某些情况下指示位置不准的问题
diff --git a/Editor/PropertyDrawers/ThemeDrawer.cs b/Editor/PropertyDrawers/ThemeDrawer.cs
index 0c749c1e..ef6b3e46 100644
--- a/Editor/PropertyDrawers/ThemeDrawer.cs
+++ b/Editor/PropertyDrawers/ThemeDrawer.cs
@@ -29,12 +29,12 @@ namespace XCharts
base.OnGUI(pos, prop, label);
var defaultWidth = pos.width;
var defaultX = pos.x;
- var btnWidth = 45;
+ var btnWidth = 50;
ChartEditorHelper.MakeFoldout(ref m_DrawRect, ref m_ThemeModuleToggle, "Theme");
m_Heights[m_KeyName] += EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing;
if (m_ThemeModuleToggle)
{
- m_DrawRect.x = defaultX + defaultWidth - 2 * btnWidth - 2;
+ m_DrawRect.x = defaultX + defaultWidth - 3 * btnWidth - 2;
m_DrawRect.width = btnWidth;
var chart = prop.serializedObject.targetObject as BaseChart;
var lastFont = chart.theme.font;
@@ -46,6 +46,12 @@ namespace XCharts
chart.theme.ResetTheme();
chart.RefreshAllComponent();
}
+ m_DrawRect.x = defaultX + defaultWidth - 2 * btnWidth - 2;
+ m_DrawRect.width = btnWidth;
+ if (GUI.Button(m_DrawRect, new GUIContent("Unbind", "Unbind the Theme from another chart")))
+ {
+ chart.UnbindTheme();
+ }
m_DrawRect.x = defaultX + defaultWidth - btnWidth;
m_DrawRect.width = btnWidth;
if (GUI.Button(m_DrawRect, new GUIContent("Export", "Export theme to asset for a new theme")))
diff --git a/Runtime/API/BaseChart_API.cs b/Runtime/API/BaseChart_API.cs
index 924cb98d..c7179e7e 100644
--- a/Runtime/API/BaseChart_API.cs
+++ b/Runtime/API/BaseChart_API.cs
@@ -319,7 +319,7 @@ namespace XCharts
}
public virtual SerieData AddData(int serieIndex, float open, float close, float lowest, float heighest, string dataName = null)
{
- var serieData = m_Series.AddData(serieIndex, open, close, lowest,heighest, dataName);
+ var serieData = m_Series.AddData(serieIndex, open, close, lowest, heighest, dataName);
if (serieData != null)
{
var serie = m_Series.GetSerie(serieIndex);
@@ -708,5 +708,12 @@ namespace XCharts
{
return SeriesHelper.ContainsSerie(m_Series, serieType);
}
+
+ public void UnbindTheme()
+ {
+ var theme = m_Theme.CloneTheme();
+ m_Theme = theme;
+ RefreshChart();
+ }
}
}
diff --git a/Runtime/Component/Theme/ChartTheme.cs b/Runtime/Component/Theme/ChartTheme.cs
index 9da6e38c..93524c5c 100644
--- a/Runtime/Component/Theme/ChartTheme.cs
+++ b/Runtime/Component/Theme/ChartTheme.cs
@@ -304,6 +304,17 @@ namespace XCharts
}
}
+ ///
+ /// 克隆主题。
+ ///
+ ///
+ public ChartTheme CloneTheme()
+ {
+ var theme = ScriptableObject.CreateInstance();
+ InitChartComponentTheme(theme);
+ theme.CopyTheme(this);
+ return theme;
+ }
///