@@ -1511,6 +1511,26 @@ bool CodeEdit::is_line_numbers_zero_padded() const {
15111511 return line_number_padding == " 0" ;
15121512}
15131513
1514+ void CodeEdit::set_line_numbers_min_digits (int p_count) {
1515+ if (line_numbers_min_digits == p_count) {
1516+ return ;
1517+ }
1518+ line_numbers_min_digits = p_count;
1519+
1520+ int digits = MAX (line_numbers_min_digits, std::log10 (get_line_count ()) + 1 );
1521+ if (digits == line_number_digits) {
1522+ return ;
1523+ }
1524+ line_number_digits = digits;
1525+ _clear_line_number_text_cache ();
1526+ _update_line_number_gutter_width ();
1527+ queue_redraw ();
1528+ }
1529+
1530+ int CodeEdit::get_line_numbers_min_digits () const {
1531+ return line_numbers_min_digits;
1532+ }
1533+
15141534void CodeEdit::_line_number_draw_callback (int p_line, int p_gutter, const Rect2 &p_region) {
15151535 if (!Rect2 (Vector2 (0 , 0 ), get_size ()).intersects (p_region)) {
15161536 return ;
@@ -2800,6 +2820,8 @@ void CodeEdit::_bind_methods() {
28002820 ClassDB::bind_method (D_METHOD (" is_draw_line_numbers_enabled" ), &CodeEdit::is_draw_line_numbers_enabled);
28012821 ClassDB::bind_method (D_METHOD (" set_line_numbers_zero_padded" , " enable" ), &CodeEdit::set_line_numbers_zero_padded);
28022822 ClassDB::bind_method (D_METHOD (" is_line_numbers_zero_padded" ), &CodeEdit::is_line_numbers_zero_padded);
2823+ ClassDB::bind_method (D_METHOD (" set_line_numbers_min_digits" , " count" ), &CodeEdit::set_line_numbers_min_digits);
2824+ ClassDB::bind_method (D_METHOD (" get_line_numbers_min_digits" ), &CodeEdit::get_line_numbers_min_digits);
28032825
28042826 /* Fold Gutter */
28052827 ClassDB::bind_method (D_METHOD (" set_draw_fold_gutter" , " enable" ), &CodeEdit::set_draw_fold_gutter);
@@ -2944,6 +2966,7 @@ void CodeEdit::_bind_methods() {
29442966
29452967 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " gutters_draw_line_numbers" ), " set_draw_line_numbers" , " is_draw_line_numbers_enabled" );
29462968 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " gutters_zero_pad_line_numbers" ), " set_line_numbers_zero_padded" , " is_line_numbers_zero_padded" );
2969+ ADD_PROPERTY (PropertyInfo (Variant::INT, " gutters_line_numbers_min_digits" , PROPERTY_HINT_RANGE, " 1,5,1" ), " set_line_numbers_min_digits" , " get_line_numbers_min_digits" );
29472970
29482971 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " gutters_draw_fold_gutter" ), " set_draw_fold_gutter" , " is_drawing_fold_gutter" );
29492972
@@ -3823,7 +3846,7 @@ void CodeEdit::_text_changed() {
38233846 }
38243847
38253848 int lc = get_line_count ();
3826- int new_line_number_digits = std::log10 (lc) + 1 ;
3849+ int new_line_number_digits = MAX (line_numbers_min_digits, std::log10 (lc) + 1 ) ;
38273850 if (line_number_digits != new_line_number_digits) {
38283851 _clear_line_number_text_cache ();
38293852 }
0 commit comments