diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 74fa99210d..8cf014b909 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -1241,6 +1241,9 @@
The editor theme style to use.
+
+ If [code]true[/code], use the monospace font for some labels in the editor that display code symbols, such as signals, properties, and methods.
+
If [code]true[/code], set accent color based on system settings.
[b]Note:[/b] This setting is only effective on Windows, MacOS, and Android.
diff --git a/editor/animation/animation_track_editor.cpp b/editor/animation/animation_track_editor.cpp
index f984c0e456..7ca1eba875 100644
--- a/editor/animation/animation_track_editor.cpp
+++ b/editor/animation/animation_track_editor.cpp
@@ -2181,7 +2181,9 @@ void AnimationTrackEdit::_notification(int p_what) {
}
const Ref font = get_theme_font(SceneStringName(font), SNAME("Label"));
+ const Ref source_font = get_theme_font(SNAME("source"), EditorStringName(EditorFonts));
const int font_size = get_theme_font_size(SceneStringName(font_size), SNAME("Label"));
+ const int source_font_size = get_theme_font_size(SNAME("source_size"), EditorStringName(EditorFonts));
const Color color = get_theme_color(SceneStringName(font_color), SNAME("Label"));
const Color dc = get_theme_color(SNAME("font_disabled_color"), EditorStringName(Editor));
@@ -2189,6 +2191,9 @@ void AnimationTrackEdit::_notification(int p_what) {
// Names and icons.
{
+ Ref font_to_use = font;
+ int font_size_to_use = font_size;
+
Ref check = animation->track_is_enabled(track) ? get_theme_icon(SNAME("checked"), SNAME("CheckBox")) : get_theme_icon(SNAME("unchecked"), SNAME("CheckBox"));
int ofs = in_group ? outer_margin : 0;
@@ -2223,6 +2228,13 @@ void AnimationTrackEdit::_notification(int p_what) {
} else {
text += anim_path.get_concatenated_subnames();
}
+
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+ if (animation->track_get_type(track) == Animation::TYPE_VALUE && use_monospace_font) {
+ font_to_use = source_font;
+ font_size_to_use = source_font_size;
+ }
+
text_color.a *= 0.7;
} else if (node) {
Ref icon = EditorNode::get_singleton()->get_object_icon(node);
@@ -2246,9 +2258,9 @@ void AnimationTrackEdit::_notification(int p_what) {
path_rect = Rect2(ofs, 0, limit - ofs - h_separation, get_size().height);
- Vector2 string_pos = Point2(ofs, (get_size().height - font->get_height(font_size)) / 2 + font->get_ascent(font_size));
+ Vector2 string_pos = Point2(ofs, (get_size().height - font_to_use->get_height(font_size_to_use)) / 2 + font_to_use->get_ascent(font_size_to_use));
string_pos = string_pos.floor();
- draw_string(font, string_pos, text, HORIZONTAL_ALIGNMENT_LEFT, limit - ofs - h_separation, font_size, text_color);
+ draw_string(font_to_use, string_pos, text, HORIZONTAL_ALIGNMENT_LEFT, limit - ofs - h_separation, font_size_to_use, text_color);
draw_line(Point2(limit, 0), Point2(limit, get_size().height), h_line_color, Math::round(EDSCALE));
}
@@ -2625,8 +2637,15 @@ void AnimationTrackEdit::draw_key(int p_index, float p_pixels_sec, int p_x, bool
Vector2 ofs(p_x - icon_to_draw->get_width() / 2, (get_size().height - icon_to_draw->get_height()) / 2);
if (animation->track_get_type(track) == Animation::TYPE_METHOD) {
- const Ref font = get_theme_font(SceneStringName(font), SNAME("Label"));
- const int font_size = get_theme_font_size(SceneStringName(font_size), SNAME("Label"));
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+
+ Ref font = get_theme_font(SceneStringName(font), SNAME("Label"));
+ int font_size = get_theme_font_size(SceneStringName(font_size), SNAME("Label"));
+ if (use_monospace_font) {
+ font = get_theme_font(SNAME("source"), EditorStringName(EditorFonts));
+ font_size = get_theme_font_size(SNAME("source_size"), EditorStringName(EditorFonts));
+ }
+
Color color = get_theme_color(SceneStringName(font_color), SNAME("Label"));
color.a = 0.5;
diff --git a/editor/inspector/property_selector.cpp b/editor/inspector/property_selector.cpp
index 88a49aca91..334dfd04bb 100644
--- a/editor/inspector/property_selector.cpp
+++ b/editor/inspector/property_selector.cpp
@@ -32,7 +32,9 @@
#include "editor/doc/editor_help.h"
#include "editor/editor_node.h"
+#include "editor/editor_string_names.h"
#include "editor/gui/filter_line_edit.h"
+#include "editor/settings/editor_settings.h"
#include "editor/themes/editor_scale.h"
#include "scene/gui/margin_container.h"
#include "scene/gui/tree.h"
@@ -58,6 +60,10 @@ void PropertySelector::_update_search() {
// Allow using spaces in place of underscores in the search string (makes the search more fault-tolerant).
const String search_text = search_box->get_text().replace_char(' ', '_');
+ // Set up font.
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+ Ref monospace_font = get_theme_font(SNAME("source"), EditorStringName(EditorFonts));
+
if (properties) {
List props;
@@ -120,6 +126,9 @@ void PropertySelector::_update_search() {
TreeItem *item = search_options->create_item(category ? category : root);
item->set_text(0, E.name);
+ if (use_monospace_font) {
+ item->set_custom_font(0, monospace_font);
+ }
item->set_metadata(0, E.name);
item->set_icon(0, search_options->get_editor_theme_icon(Variant::get_type_name(E.type)));
@@ -281,6 +290,9 @@ void PropertySelector::_update_search() {
}
item->set_text(0, desc);
+ if (use_monospace_font) {
+ item->set_custom_font(0, monospace_font);
+ }
item->set_metadata(0, name);
item->set_selectable(0, true);
@@ -479,6 +491,11 @@ void PropertySelector::_create_subproperty(TreeItem *p_parent_item, const String
TreeItem *item = search_options->create_item(p_parent_item);
item->set_text(0, p_name);
+
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+ if (use_monospace_font) {
+ item->set_custom_font(0, get_theme_font(SNAME("source"), EditorStringName(EditorFonts)));
+ }
item->set_metadata(0, String(p_parent_item->get_metadata(0)) + ":" + p_name);
item->set_icon(0, search_options->get_editor_theme_icon(Variant::get_type_name(p_type)));
diff --git a/editor/scene/connections_dialog.cpp b/editor/scene/connections_dialog.cpp
index d0083bbe11..63747304ec 100644
--- a/editor/scene/connections_dialog.cpp
+++ b/editor/scene/connections_dialog.cpp
@@ -296,9 +296,14 @@ StringName ConnectDialog::generate_method_callback_name(Object *p_source, const
}
void ConnectDialog::_create_method_tree_items(const List &p_methods, TreeItem *p_parent_item) {
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+ Ref monospace_font = get_theme_font(SNAME("source"), EditorStringName(EditorFonts));
for (const MethodInfo &mi : p_methods) {
TreeItem *method_item = method_tree->create_item(p_parent_item);
method_item->set_text(0, get_signature(mi));
+ if (use_monospace_font) {
+ method_item->set_custom_font(0, monospace_font);
+ }
method_item->set_metadata(0, mi.name);
}
}
@@ -518,6 +523,18 @@ void ConnectDialog::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: {
method_search->set_right_icon(get_editor_theme_icon("Search"));
open_method_tree->set_button_icon(get_editor_theme_icon("Edit"));
+
+ bool use_monospace_font = EDITOR_GET("interface/theme/use_monospace_font_for_editor_symbols");
+ Ref monospace_font = get_theme_font(SNAME("source"), EditorStringName(EditorFonts));
+
+ if (use_monospace_font) {
+ from_signal->add_theme_font_override(SceneStringName(font), monospace_font);
+ dst_method->add_theme_font_override(SceneStringName(font), monospace_font);
+ } else {
+ from_signal->remove_theme_font_override(SceneStringName(font));
+ dst_method->remove_theme_font_override(SceneStringName(font));
+ }
+
} break;
}
}
@@ -1534,6 +1551,9 @@ void ConnectionsDock::update_tree() {
StringName native_base = selected_object->get_class();
Ref