Pārlūkot izejas kodu

Fix LineEdit and TextEdit carets disappearing at theme scales below 1.0

This fixes carets disappearing in the editor when the Editor Scale
setting is set below 100%.
Hugo Locurcio 3 gadi atpakaļ
vecāks
revīzija
816d332e51
2 mainītis faili ar 4 papildinājumiem un 2 dzēšanām
  1. 2 1
      scene/gui/line_edit.cpp
  2. 2 1
      scene/gui/text_edit.cpp

+ 2 - 1
scene/gui/line_edit.cpp

@@ -847,7 +847,8 @@ void LineEdit::_notification(int p_what) {
 			// Draw carets.
 			ofs.x = x_ofs + scroll_offset;
 			if (draw_caret || drag_caret_force_displayed) {
-				const int caret_width = get_theme_constant(SNAME("caret_width")) * get_theme_default_base_scale();
+				// Prevent carets from disappearing at theme scales below 1.0 (if the caret width is 1).
+				const int caret_width = get_theme_constant(SNAME("caret_width")) * MAX(1, get_theme_default_base_scale());
 
 				if (ime_text.length() == 0) {
 					// Normal caret.

+ 2 - 1
scene/gui/text_edit.cpp

@@ -1283,7 +1283,8 @@ void TextEdit::_notification(int p_what) {
 					}
 
 					// Carets.
-					const int caret_width = get_theme_constant(SNAME("caret_width")) * get_theme_default_base_scale();
+					// Prevent carets from disappearing at theme scales below 1.0 (if the caret width is 1).
+					const int caret_width = get_theme_constant(SNAME("caret_width")) * MAX(1, get_theme_default_base_scale());
 
 					if (!clipped && caret.line == line && line_wrap_index == caret_wrap_index) {
 						caret.draw_pos.y = ofs_y + ldata->get_line_descent(line_wrap_index);