Browse Source

Merge pull request #26140 from karliss/meta-item

Use correct meta item in rich text.
Rémi Verschelde 6 năm trước cách đây
mục cha
commit
994bdc9adc
2 tập tin đã thay đổi với 8 bổ sung5 xóa
  1. 7 4
      scene/gui/rich_text_label.cpp
  2. 1 1
      scene/gui/rich_text_label.h

+ 7 - 4
scene/gui/rich_text_label.cpp

@@ -1133,12 +1133,13 @@ void RichTextLabel::_gui_input(Ref<InputEvent> p_event) {
 		}
 
 		Variant meta;
-		if (item && !outside && _find_meta(item, &meta)) {
-			if (meta_hovering != item) {
+		ItemMeta *item_meta;
+		if (item && !outside && _find_meta(item, &meta, &item_meta)) {
+			if (meta_hovering != item_meta) {
 				if (meta_hovering) {
 					emit_signal("meta_hover_ended", current_meta);
 				}
-				meta_hovering = static_cast<ItemMeta *>(item);
+				meta_hovering = item_meta;
 				current_meta = meta;
 				emit_signal("meta_hover_started", meta);
 			}
@@ -1269,7 +1270,7 @@ bool RichTextLabel::_find_strikethrough(Item *p_item) {
 	return false;
 }
 
-bool RichTextLabel::_find_meta(Item *p_item, Variant *r_meta) {
+bool RichTextLabel::_find_meta(Item *p_item, Variant *r_meta, ItemMeta **r_item) {
 
 	Item *item = p_item;
 
@@ -1280,6 +1281,8 @@ bool RichTextLabel::_find_meta(Item *p_item, Variant *r_meta) {
 			ItemMeta *meta = static_cast<ItemMeta *>(item);
 			if (r_meta)
 				*r_meta = meta->meta;
+			if (r_item)
+				*r_item = meta;
 			return true;
 		}
 

+ 1 - 1
scene/gui/rich_text_label.h

@@ -285,7 +285,7 @@ private:
 	Color _find_color(Item *p_item, const Color &p_default_color);
 	bool _find_underline(Item *p_item);
 	bool _find_strikethrough(Item *p_item);
-	bool _find_meta(Item *p_item, Variant *r_meta);
+	bool _find_meta(Item *p_item, Variant *r_meta, ItemMeta **r_item = NULL);
 
 	void _update_scroll();
 	void _scroll_changed(double);