Browse Source

Fix incorrect keyword completion after period in shader editor

Yuri Rubinsky 3 years ago
parent
commit
29ff04acf2
2 changed files with 11 additions and 2 deletions
  1. 9 0
      servers/rendering/shader_language.cpp
  2. 2 2
      servers/rendering/shader_language.h

+ 9 - 0
servers/rendering/shader_language.cpp

@@ -5379,6 +5379,11 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
 			if (tk.type == TK_CURSOR) {
 			if (tk.type == TK_CURSOR) {
 				//do nothing
 				//do nothing
 			} else if (tk.type == TK_PERIOD) {
 			} else if (tk.type == TK_PERIOD) {
+#ifdef DEBUG_ENABLED
+				uint32_t prev_keyword_completion_context = keyword_completion_context;
+				keyword_completion_context = CF_UNSPECIFIED;
+#endif
+
 				DataType dt = expr->get_datatype();
 				DataType dt = expr->get_datatype();
 				String st = expr->get_datatype_name();
 				String st = expr->get_datatype_name();
 
 
@@ -5734,6 +5739,10 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
 				}
 				}
 				expr = mn;
 				expr = mn;
 
 
+#ifdef DEBUG_ENABLED
+				keyword_completion_context = prev_keyword_completion_context;
+#endif
+
 				//todo
 				//todo
 				//member (period) has priority over any operator
 				//member (period) has priority over any operator
 				//creates a subindexing expression in place
 				//creates a subindexing expression in place

+ 2 - 2
servers/rendering/shader_language.h

@@ -503,7 +503,7 @@ public:
 		BlockNode *parent_block = nullptr;
 		BlockNode *parent_block = nullptr;
 
 
 		enum BlockType {
 		enum BlockType {
-			BLOCK_TYPE_STANDART,
+			BLOCK_TYPE_STANDARD,
 			BLOCK_TYPE_FOR_INIT,
 			BLOCK_TYPE_FOR_INIT,
 			BLOCK_TYPE_FOR_CONDITION,
 			BLOCK_TYPE_FOR_CONDITION,
 			BLOCK_TYPE_FOR_EXPRESSION,
 			BLOCK_TYPE_FOR_EXPRESSION,
@@ -512,7 +512,7 @@ public:
 			BLOCK_TYPE_DEFAULT,
 			BLOCK_TYPE_DEFAULT,
 		};
 		};
 
 
-		int block_type = BLOCK_TYPE_STANDART;
+		int block_type = BLOCK_TYPE_STANDARD;
 		SubClassTag block_tag = SubClassTag::TAG_GLOBAL;
 		SubClassTag block_tag = SubClassTag::TAG_GLOBAL;
 
 
 		struct Variable {
 		struct Variable {