@@ -19,17 +19,17 @@ public partial class CodeExecutorWindow
19
19
private VisualElement m_CodeEditor = null ;
20
20
21
21
/// <summary>
22
- /// 代码编辑器滚动视图
22
+ /// 代码滚动视图
23
23
/// </summary>
24
24
private ScrollView m_CodeScrollView = null ;
25
25
26
26
/// <summary>
27
- /// 代码编辑器输入框
27
+ /// 代码文本框
28
28
/// </summary>
29
29
private TextField m_CodeTextField = null ;
30
30
31
31
/// <summary>
32
- /// 代码编辑器输入框
32
+ /// 代码文本框
33
33
/// </summary>
34
34
private VisualElement m_CodeTextFieldTextInput = null ;
35
35
@@ -81,8 +81,10 @@ private void InitCodeEditor()
81
81
}
82
82
} ;
83
83
m_CodeEditor . Add ( m_CodeScrollView ) ;
84
+ // 代码滚动视图形变回调
85
+ m_CodeScrollView . RegisterCallback < GeometryChangedEvent > ( OnCodeScrollViewGeometryChangedEvent ) ;
84
86
85
- // 代码输入框
87
+ // 代码文本框
86
88
m_CodeTextField = new TextField ( )
87
89
{
88
90
name = "TextField" ,
@@ -101,7 +103,7 @@ private void InitCodeEditor()
101
103
}
102
104
} ;
103
105
m_CodeScrollView . Add ( m_CodeTextField ) ;
104
-
106
+ // 样式Hack
105
107
{
106
108
// 输入框文本设为左上对齐
107
109
VisualElement textInput = m_CodeTextFieldTextInput = m_CodeTextField . Q < VisualElement > ( "unity-text-input" ) ;
@@ -117,15 +119,11 @@ private void InitCodeEditor()
117
119
textInput . style . borderBottomLeftRadius = 0 ;
118
120
textInput . style . borderBottomRightRadius = 0 ;
119
121
}
120
-
121
- // 滚动视图变化回调
122
- m_CodeScrollView . RegisterCallback < GeometryChangedEvent > ( OnCodeScrollViewGeometryChangedEventChanged ) ;
123
-
124
- // 输入框内容变化回调
122
+ // 内容变化回调
125
123
m_CodeTextField . RegisterValueChangedCallback ( OnCodeTextFieldValueChanged ) ;
126
- // 输入框键盘按下回调
124
+ // 键盘按下回调
127
125
m_CodeTextField . RegisterCallback < KeyDownEvent > ( OnCodeTextFieldKeyDown ) ;
128
- // 输入框鼠标滚轮回调
126
+ // 鼠标滚轮回调
129
127
m_CodeTextField . RegisterCallback < WheelEvent > ( OnCodeTextFieldMouseWheel ) ;
130
128
131
129
// 复制到剪切板按钮
@@ -162,19 +160,22 @@ private void InitCodeEditor()
162
160
}
163
161
164
162
/// <summary>
165
- /// 滚动视图变化回调
163
+ /// 代码滚动视图形变回调
166
164
/// </summary>
167
165
/// <param name="evt"></param>
168
- private void OnCodeScrollViewGeometryChangedEventChanged ( GeometryChangedEvent evt )
166
+ private void OnCodeScrollViewGeometryChangedEvent ( GeometryChangedEvent evt )
169
167
{
170
168
EditorApplication . delayCall += UpdateCodeTextFieldHeight ;
169
+ }
171
170
172
- void UpdateCodeTextFieldHeight ( )
173
- {
174
- if ( m_CodeScrollView == null ) return ;
175
- float height = m_CodeScrollView . contentViewport . localBound . height ;
176
- m_CodeTextField . style . minHeight = height ;
177
- }
171
+ /// <summary>
172
+ /// 更新代码文本元素高度
173
+ /// </summary>
174
+ private void UpdateCodeTextFieldHeight ( )
175
+ {
176
+ if ( m_CodeScrollView == null ) return ;
177
+ float height = m_CodeScrollView . contentViewport . localBound . height ;
178
+ m_CodeTextField . style . minHeight = height ;
178
179
}
179
180
180
181
/// <summary>
@@ -183,7 +184,6 @@ void UpdateCodeTextFieldHeight()
183
184
/// <param name="evt"></param>
184
185
private void OnCodeTextFieldValueChanged ( ChangeEvent < string > evt )
185
186
{
186
- if ( m_CodeTextField . isReadOnly ) return ;
187
187
if ( m_CurrSnippetInfo == null ) return ;
188
188
// 更新数据
189
189
string code = m_CodeTextField . value ;
@@ -322,10 +322,13 @@ private int SetCodeEditorFontSize(int size)
322
322
323
323
private void SetCodeEditorEditable ( bool isEditable , bool focus = false )
324
324
{
325
- // 输入框只读
325
+ // 文本框只读
326
326
m_CodeTextField . isReadOnly = ! isEditable ;
327
- // 输入框背景颜色
328
- m_CodeTextFieldTextInput . style . backgroundColor = ( isEditable ? textFieldNormalBgColor : textFieldReadOnlyBgColor ) ;
327
+
328
+ // 背景颜色
329
+ Color bgColor = ( isEditable ? textFieldNormalBgColor : textFieldReadOnlyBgColor ) ;
330
+ m_CodeScrollView . style . backgroundColor = bgColor ;
331
+ m_CodeTextFieldTextInput . style . backgroundColor = bgColor ;
329
332
// 边框颜色
330
333
Color borderColor = ( isEditable ? textFieldNormalBorderColor : textFieldReadOnlyBorderColor ) ;
331
334
m_CodeScrollView . style . borderTopColor = borderColor ;
0 commit comments