소스 검색

Merge pull request #32202 from Relintai/fix-crash-in-rich-text-label

Fix crash on some platforms in RichTextLabel.
Rémi Verschelde 6 년 전
부모
커밋
329c54453e
1개의 변경된 파일71개의 추가작업 그리고 22개의 파일을 삭제
  1. 71 22
      scene/gui/rich_text_label.h

+ 71 - 22
scene/gui/rich_text_label.h

@@ -81,7 +81,7 @@ protected:
 	static void _bind_methods();
 	static void _bind_methods();
 
 
 private:
 private:
-	struct Item;
+	class Item;
 
 
 	struct Line {
 	struct Line {
 
 
@@ -103,8 +103,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct Item : public Object {
+	class Item : public Object {
+		GDCLASS(Item, Object);
 
 
+	public:
 		int index;
 		int index;
 		Item *parent;
 		Item *parent;
 		ItemType type;
 		ItemType type;
@@ -127,8 +129,10 @@ private:
 		virtual ~Item() { _clear_children(); }
 		virtual ~Item() { _clear_children(); }
 	};
 	};
 
 
-	struct ItemFrame : public Item {
+	class ItemFrame : public Item {
+		GDCLASS(ItemFrame, Item);
 
 
+	public:
 		int parent_line;
 		int parent_line;
 		bool cell;
 		bool cell;
 		Vector<Line> lines;
 		Vector<Line> lines;
@@ -143,71 +147,95 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemText : public Item {
+	class ItemText : public Item {
+		GDCLASS(ItemText, Item);
 
 
+	public:
 		String text;
 		String text;
 		ItemText() { type = ITEM_TEXT; }
 		ItemText() { type = ITEM_TEXT; }
 	};
 	};
 
 
-	struct ItemImage : public Item {
+	class ItemImage : public Item {
+		GDCLASS(ItemImage, Item);
 
 
+	public:
 		Ref<Texture> image;
 		Ref<Texture> image;
 		ItemImage() { type = ITEM_IMAGE; }
 		ItemImage() { type = ITEM_IMAGE; }
 	};
 	};
 
 
-	struct ItemFont : public Item {
+	class ItemFont : public Item {
+		GDCLASS(ItemFont, Item);
 
 
+	public:
 		Ref<Font> font;
 		Ref<Font> font;
 		ItemFont() { type = ITEM_FONT; }
 		ItemFont() { type = ITEM_FONT; }
 	};
 	};
 
 
-	struct ItemColor : public Item {
+	class ItemColor : public Item {
+		GDCLASS(ItemColor, Item);
 
 
+	public:
 		Color color;
 		Color color;
 		ItemColor() { type = ITEM_COLOR; }
 		ItemColor() { type = ITEM_COLOR; }
 	};
 	};
 
 
-	struct ItemUnderline : public Item {
+	class ItemUnderline : public Item {
+		GDCLASS(ItemUnderline, Item);
 
 
+	public:
 		ItemUnderline() { type = ITEM_UNDERLINE; }
 		ItemUnderline() { type = ITEM_UNDERLINE; }
 	};
 	};
 
 
-	struct ItemStrikethrough : public Item {
+	class ItemStrikethrough : public Item {
+		GDCLASS(ItemStrikethrough, Item);
 
 
+	public:
 		ItemStrikethrough() { type = ITEM_STRIKETHROUGH; }
 		ItemStrikethrough() { type = ITEM_STRIKETHROUGH; }
 	};
 	};
 
 
-	struct ItemMeta : public Item {
+	class ItemMeta : public Item {
+		GDCLASS(ItemMeta, Item);
 
 
+	public:
 		Variant meta;
 		Variant meta;
 		ItemMeta() { type = ITEM_META; }
 		ItemMeta() { type = ITEM_META; }
 	};
 	};
 
 
-	struct ItemAlign : public Item {
+	class ItemAlign : public Item {
+		GDCLASS(ItemAlign, Item);
 
 
+	public:
 		Align align;
 		Align align;
 		ItemAlign() { type = ITEM_ALIGN; }
 		ItemAlign() { type = ITEM_ALIGN; }
 	};
 	};
 
 
-	struct ItemIndent : public Item {
+	class ItemIndent : public Item {
+		GDCLASS(ItemIndent, Item);
 
 
+	public:
 		int level;
 		int level;
 		ItemIndent() { type = ITEM_INDENT; }
 		ItemIndent() { type = ITEM_INDENT; }
 	};
 	};
 
 
-	struct ItemList : public Item {
+	class ItemList : public Item {
+		GDCLASS(ItemList, Item);
 
 
+	public:
 		ListType list_type;
 		ListType list_type;
 		ItemList() { type = ITEM_LIST; }
 		ItemList() { type = ITEM_LIST; }
 	};
 	};
 
 
-	struct ItemNewline : public Item {
+	class ItemNewline : public Item {
+		GDCLASS(ItemNewline, Item);
 
 
+	public:
 		ItemNewline() { type = ITEM_NEWLINE; }
 		ItemNewline() { type = ITEM_NEWLINE; }
 	};
 	};
 
 
-	struct ItemTable : public Item {
+	class ItemTable : public Item {
+		GDCLASS(ItemTable, Item);
 
 
+	public:
 		struct Column {
 		struct Column {
 			bool expand;
 			bool expand;
 			int expand_ratio;
 			int expand_ratio;
@@ -221,14 +249,20 @@ private:
 		ItemTable() { type = ITEM_TABLE; }
 		ItemTable() { type = ITEM_TABLE; }
 	};
 	};
 
 
-	struct ItemFade : public Item {
+	class ItemFade : public Item {
+		GDCLASS(ItemFade, Item);
+
+	public:
 		int starting_index;
 		int starting_index;
 		int length;
 		int length;
 
 
 		ItemFade() { type = ITEM_FADE; }
 		ItemFade() { type = ITEM_FADE; }
 	};
 	};
 
 
-	struct ItemFX : public Item {
+	class ItemFX : public Item {
+		GDCLASS(ItemFX, Item);
+
+	public:
 		float elapsed_time;
 		float elapsed_time;
 
 
 		ItemFX() {
 		ItemFX() {
@@ -236,7 +270,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemShake : public ItemFX {
+	class ItemShake : public ItemFX {
+		GDCLASS(ItemShake, ItemFX);
+
+	public:
 		int strength;
 		int strength;
 		float rate;
 		float rate;
 		uint64_t _current_rng;
 		uint64_t _current_rng;
@@ -265,7 +302,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemWave : public ItemFX {
+	class ItemWave : public ItemFX {
+		GDCLASS(ItemWave, ItemFX);
+
+	public:
 		float frequency;
 		float frequency;
 		float amplitude;
 		float amplitude;
 
 
@@ -276,7 +316,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemTornado : public ItemFX {
+	class ItemTornado : public ItemFX {
+		GDCLASS(ItemTornado, ItemFX);
+
+	public:
 		float radius;
 		float radius;
 		float frequency;
 		float frequency;
 
 
@@ -287,7 +330,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemRainbow : public ItemFX {
+	class ItemRainbow : public ItemFX {
+		GDCLASS(ItemRainbow, ItemFX);
+
+	public:
 		float saturation;
 		float saturation;
 		float value;
 		float value;
 		float frequency;
 		float frequency;
@@ -300,7 +346,10 @@ private:
 		}
 		}
 	};
 	};
 
 
-	struct ItemCustomFX : public ItemFX {
+	class ItemCustomFX : public ItemFX {
+		GDCLASS(ItemCustomFX, ItemFX);
+
+	public:
 		String identifier;
 		String identifier;
 		Dictionary environment;
 		Dictionary environment;