瀏覽代碼

Merge pull request #64917 from Tim-Fronsee/fix/add-gutter-total-width

Rémi Verschelde 3 年之前
父節點
當前提交
33b4153764
共有 3 個文件被更改,包括 19 次插入7 次删除
  1. 6 0
      scene/gui/text_edit.cpp
  2. 1 1
      tests/scene/test_code_edit.h
  3. 12 6
      tests/scene/test_text_edit.h

+ 6 - 0
scene/gui/text_edit.cpp

@@ -4786,6 +4786,9 @@ void TextEdit::add_gutter(int p_at) {
 	}
 	}
 
 
 	text.add_gutter(p_at);
 	text.add_gutter(p_at);
+
+	_update_gutter_width();
+
 	emit_signal(SNAME("gutter_added"));
 	emit_signal(SNAME("gutter_added"));
 	queue_redraw();
 	queue_redraw();
 }
 }
@@ -4796,6 +4799,9 @@ void TextEdit::remove_gutter(int p_gutter) {
 	gutters.remove_at(p_gutter);
 	gutters.remove_at(p_gutter);
 
 
 	text.remove_gutter(p_gutter);
 	text.remove_gutter(p_gutter);
+
+	_update_gutter_width();
+
 	emit_signal(SNAME("gutter_removed"));
 	emit_signal(SNAME("gutter_removed"));
 	queue_redraw();
 	queue_redraw();
 }
 }

+ 1 - 1
tests/scene/test_code_edit.h

@@ -3245,7 +3245,7 @@ TEST_CASE("[SceneTree][CodeEdit] symbol lookup") {
 		code_edit->set_text("this is some text");
 		code_edit->set_text("this is some text");
 
 
 		Point2 caret_pos = code_edit->get_caret_draw_pos();
 		Point2 caret_pos = code_edit->get_caret_draw_pos();
-		caret_pos.x += 58;
+		caret_pos.x += 60;
 		SEND_GUI_MOUSE_BUTTON_EVENT(code_edit, caret_pos, MouseButton::NONE, MouseButton::NONE, Key::NONE);
 		SEND_GUI_MOUSE_BUTTON_EVENT(code_edit, caret_pos, MouseButton::NONE, MouseButton::NONE, Key::NONE);
 		CHECK(code_edit->get_text_for_symbol_lookup() == "this is s" + String::chr(0xFFFF) + "ome text");
 		CHECK(code_edit->get_text_for_symbol_lookup() == "this is s" + String::chr(0xFFFF) + "ome text");
 
 

+ 12 - 6
tests/scene/test_text_edit.h

@@ -3388,6 +3388,8 @@ TEST_CASE("[SceneTree][TextEdit] gutters") {
 	SUBCASE("[TextEdit] gutter add and remove") {
 	SUBCASE("[TextEdit] gutter add and remove") {
 		text_edit->add_gutter();
 		text_edit->add_gutter();
 		CHECK(text_edit->get_gutter_count() == 1);
 		CHECK(text_edit->get_gutter_count() == 1);
+		CHECK(text_edit->get_gutter_width(0) == 24);
+		CHECK(text_edit->get_total_gutter_width() == 24 + 2);
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 
 
 		text_edit->set_gutter_name(0, "test_gutter");
 		text_edit->set_gutter_name(0, "test_gutter");
@@ -3395,39 +3397,43 @@ TEST_CASE("[SceneTree][TextEdit] gutters") {
 
 
 		text_edit->set_gutter_width(0, 10);
 		text_edit->set_gutter_width(0, 10);
 		CHECK(text_edit->get_gutter_width(0) == 10);
 		CHECK(text_edit->get_gutter_width(0) == 10);
-		CHECK(text_edit->get_total_gutter_width() > 10);
-		CHECK(text_edit->get_total_gutter_width() < 20);
+		CHECK(text_edit->get_total_gutter_width() == 10 + 2);
 
 
 		text_edit->add_gutter(-100);
 		text_edit->add_gutter(-100);
 		text_edit->set_gutter_width(1, 10);
 		text_edit->set_gutter_width(1, 10);
-		CHECK(text_edit->get_total_gutter_width() > 20);
-		CHECK(text_edit->get_total_gutter_width() < 30);
+		CHECK(text_edit->get_gutter_width(1) == 10);
+		CHECK(text_edit->get_total_gutter_width() == 20 + 2);
 		CHECK(text_edit->get_gutter_count() == 2);
 		CHECK(text_edit->get_gutter_count() == 2);
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 
 
 		text_edit->set_gutter_draw(1, false);
 		text_edit->set_gutter_draw(1, false);
-		CHECK(text_edit->get_total_gutter_width() > 10);
-		CHECK(text_edit->get_total_gutter_width() < 20);
+		CHECK(text_edit->get_total_gutter_width() == 10 + 2);
 
 
 		text_edit->add_gutter(100);
 		text_edit->add_gutter(100);
 		CHECK(text_edit->get_gutter_count() == 3);
 		CHECK(text_edit->get_gutter_count() == 3);
+		CHECK(text_edit->get_gutter_width(2) == 24);
+		CHECK(text_edit->get_total_gutter_width() == 34 + 2);
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 
 
 		text_edit->add_gutter(0);
 		text_edit->add_gutter(0);
 		CHECK(text_edit->get_gutter_count() == 4);
 		CHECK(text_edit->get_gutter_count() == 4);
+		CHECK(text_edit->get_gutter_width(0) == 24);
+		CHECK(text_edit->get_total_gutter_width() == 58 + 2);
 		CHECK(text_edit->get_gutter_name(1) == "test_gutter");
 		CHECK(text_edit->get_gutter_name(1) == "test_gutter");
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 		SIGNAL_CHECK("gutter_added", empty_signal_args);
 
 
 		text_edit->remove_gutter(2);
 		text_edit->remove_gutter(2);
 		CHECK(text_edit->get_gutter_name(1) == "test_gutter");
 		CHECK(text_edit->get_gutter_name(1) == "test_gutter");
 		CHECK(text_edit->get_gutter_count() == 3);
 		CHECK(text_edit->get_gutter_count() == 3);
+		CHECK(text_edit->get_total_gutter_width() == 58 + 2);
 		SIGNAL_CHECK("gutter_removed", empty_signal_args);
 		SIGNAL_CHECK("gutter_removed", empty_signal_args);
 
 
 		text_edit->remove_gutter(0);
 		text_edit->remove_gutter(0);
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		CHECK(text_edit->get_gutter_name(0) == "test_gutter");
 		CHECK(text_edit->get_gutter_count() == 2);
 		CHECK(text_edit->get_gutter_count() == 2);
+		CHECK(text_edit->get_total_gutter_width() == 34 + 2);
 		SIGNAL_CHECK("gutter_removed", empty_signal_args);
 		SIGNAL_CHECK("gutter_removed", empty_signal_args);
 
 
 		ERR_PRINT_OFF;
 		ERR_PRINT_OFF;