Merge pull request #44747 from bruvzg/missing_outlines
[CTL] Add missing theme properties for outlines, fix underline scaling, and RTL cell padding.
This commit is contained in:
commit
cdfd3ffe15
35 changed files with 321 additions and 31 deletions
|
@ -128,7 +128,7 @@
|
|||
Text [Color] used when the [Button] is being hovered and pressed.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text outline [Color] of the [Button].
|
||||
The tint of text outline of the [Button].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the [Button] is being pressed.
|
||||
|
@ -161,7 +161,7 @@
|
|||
Default [StyleBox] for the [Button].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
Size of the [Button]'s text outline.
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
[StyleBox] used when the [Button] is being pressed.
|
||||
|
|
|
@ -45,6 +45,9 @@
|
|||
<theme_item name="font_hover_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The [CheckBox] text's font color when it's hovered and pressed.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [CheckBox].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The [CheckBox] text's font color when it's pressed.
|
||||
</theme_item>
|
||||
|
@ -63,6 +66,9 @@
|
|||
<theme_item name="normal" type="StyleBox">
|
||||
The [StyleBox] to display as a background.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
The [StyleBox] to display as a background when the [CheckBox] is pressed.
|
||||
</theme_item>
|
||||
|
|
|
@ -42,6 +42,9 @@
|
|||
<theme_item name="font_hover_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The [CheckButton] text's font color when it's hovered and pressed.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [CheckButton].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The [CheckButton] text's font color when it's pressed.
|
||||
</theme_item>
|
||||
|
@ -84,6 +87,9 @@
|
|||
<theme_item name="on_mirrored" type="Texture2D">
|
||||
The icon to display when the [CheckButton] is checked (for right-to-left layouts).
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
The [StyleBox] to display as a background when the [CheckButton] is pressed.
|
||||
</theme_item>
|
||||
|
|
|
@ -179,6 +179,9 @@
|
|||
</theme_item>
|
||||
<theme_item name="font_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [CodeEdit].
|
||||
</theme_item>
|
||||
<theme_item name="font_readonly_color" type="Color" default="Color( 0.88, 0.88, 0.88, 0.5 )">
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0, 0, 0, 1 )">
|
||||
|
@ -194,6 +197,9 @@
|
|||
</theme_item>
|
||||
<theme_item name="normal" type="StyleBox">
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="read_only" type="StyleBox">
|
||||
</theme_item>
|
||||
<theme_item name="safe_line_number_color" type="Color" default="Color( 0.67, 0.78, 0.67, 0.6 )">
|
||||
|
|
|
@ -79,6 +79,9 @@
|
|||
<theme_item name="font_hover_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the [ColorPickerButton] is being hovered.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [ColorPickerButton].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 0.8, 0.8, 0.8, 1 )">
|
||||
Text [Color] used when the [ColorPickerButton] is being pressed.
|
||||
</theme_item>
|
||||
|
@ -94,6 +97,9 @@
|
|||
<theme_item name="normal" type="StyleBox">
|
||||
Default [StyleBox] for the [ColorPickerButton].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
[StyleBox] used when the [ColorPickerButton] is being pressed.
|
||||
</theme_item>
|
||||
|
|
|
@ -615,6 +615,9 @@
|
|||
<theme_item name="font_color" type="Color" default="Color( 0.63, 0.63, 0.63, 1 )">
|
||||
Default text [Color] of the item.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the item.
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the item is selected.
|
||||
</theme_item>
|
||||
|
@ -633,6 +636,9 @@
|
|||
<theme_item name="line_separation" type="int" default="2">
|
||||
The vertical spacing between each line of text.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the item text outline.
|
||||
</theme_item>
|
||||
<theme_item name="selected" type="StyleBox">
|
||||
[StyleBox] for the selected items, used when the [ItemList] is not being focused.
|
||||
</theme_item>
|
||||
|
|
|
@ -380,6 +380,9 @@
|
|||
<theme_item name="font_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
|
||||
Default font color.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [LineEdit].
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0, 0, 0, 1 )">
|
||||
Font color for selected text (inside the selection rectangle).
|
||||
</theme_item>
|
||||
|
@ -395,6 +398,9 @@
|
|||
<theme_item name="normal" type="StyleBox">
|
||||
Default background for the [LineEdit].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="read_only" type="StyleBox">
|
||||
Background used when [LineEdit] is in read-only mode ([member editable] is set to [code]false[/code]).
|
||||
</theme_item>
|
||||
|
|
|
@ -84,12 +84,18 @@
|
|||
<theme_item name="font_hover_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
Text [Color] used when the [LinkButton] is being hovered.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [LinkButton].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the [LinkButton] is being pressed.
|
||||
</theme_item>
|
||||
<theme_item name="font_size" type="int">
|
||||
Font size of the [LinkButton]'s text.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="underline_spacing" type="int" default="2">
|
||||
The vertical space between the baseline of text and the underline.
|
||||
</theme_item>
|
||||
|
|
|
@ -65,6 +65,9 @@
|
|||
<theme_item name="font_hover_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
Text [Color] used when the [MenuButton] is being hovered.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [MenuButton].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the [MenuButton] is being pressed.
|
||||
</theme_item>
|
||||
|
@ -80,6 +83,9 @@
|
|||
<theme_item name="normal" type="StyleBox">
|
||||
Default [StyleBox] for the [MenuButton].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
[StyleBox] used when the [MenuButton] is being pressed.
|
||||
</theme_item>
|
||||
|
|
|
@ -259,6 +259,9 @@
|
|||
<theme_item name="font_hover_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
Text [Color] used when the [OptionButton] is being hovered.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [OptionButton].
|
||||
</theme_item>
|
||||
<theme_item name="font_pressed_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the [OptionButton] is being pressed.
|
||||
</theme_item>
|
||||
|
@ -280,6 +283,9 @@
|
|||
<theme_item name="normal_mirrored" type="StyleBox">
|
||||
Default [StyleBox] for the [OptionButton] (for right-to-left layouts).
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="pressed" type="StyleBox">
|
||||
[StyleBox] used when the [OptionButton] is being pressed (for left-to-right layouts).
|
||||
</theme_item>
|
||||
|
|
|
@ -729,6 +729,9 @@
|
|||
<theme_item name="font_hover_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
|
||||
[Color] used for the hovered text.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the menu item.
|
||||
</theme_item>
|
||||
<theme_item name="font_separator_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
|
||||
[Color] used for labeled separators' text. See [method add_separator].
|
||||
</theme_item>
|
||||
|
@ -747,6 +750,9 @@
|
|||
<theme_item name="labeled_separator_right" type="StyleBox">
|
||||
[StyleBox] for the right side of labeled separator. See [method add_separator].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the item text outline.
|
||||
</theme_item>
|
||||
<theme_item name="panel" type="StyleBox">
|
||||
Default [StyleBox] of the [PopupMenu] items.
|
||||
</theme_item>
|
||||
|
|
|
@ -32,11 +32,17 @@
|
|||
<theme_item name="font_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
The color of the text.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [ProgressBar].
|
||||
</theme_item>
|
||||
<theme_item name="font_shadow_color" type="Color" default="Color( 0, 0, 0, 1 )">
|
||||
The color of the text's shadow.
|
||||
</theme_item>
|
||||
<theme_item name="font_size" type="int">
|
||||
Font size used to draw the fill percentage if [member percent_visible] is [code]true[/code].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
</theme_items>
|
||||
</class>
|
||||
|
|
|
@ -597,6 +597,9 @@
|
|||
<theme_item name="focus" type="StyleBox">
|
||||
The background The background used when the [RichTextLabel] is focused.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The default tint of text outline.
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0, 0, 0, 1 )">
|
||||
The color of selected text, used when [member selection_enabled] is [code]true[/code].
|
||||
</theme_item>
|
||||
|
@ -627,6 +630,9 @@
|
|||
<theme_item name="normal_font_size" type="int">
|
||||
The default text font size.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="selection_color" type="Color" default="Color( 0.1, 0.1, 1, 0.8 )">
|
||||
The color of the selection box.
|
||||
</theme_item>
|
||||
|
|
|
@ -201,6 +201,9 @@
|
|||
<theme_item name="font_disabled_color" type="Color" default="Color( 0.9, 0.9, 0.9, 0.2 )">
|
||||
Font color of disabled tabs.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the tab name.
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
Font color of the currently selected tab.
|
||||
</theme_item>
|
||||
|
@ -225,6 +228,9 @@
|
|||
<theme_item name="menu_highlight" type="Texture2D">
|
||||
The icon for the menu button (see [method set_popup]) when it's being hovered with the cursor.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the tab text outline.
|
||||
</theme_item>
|
||||
<theme_item name="panel" type="StyleBox">
|
||||
The style for the background fill.
|
||||
</theme_item>
|
||||
|
|
|
@ -362,6 +362,9 @@
|
|||
<theme_item name="font_disabled_color" type="Color" default="Color( 0.9, 0.9, 0.9, 0.2 )">
|
||||
Font color of disabled tabs.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the tab name.
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0.94, 0.94, 0.94, 1 )">
|
||||
Font color of the currently selected tab.
|
||||
</theme_item>
|
||||
|
@ -380,6 +383,9 @@
|
|||
<theme_item name="increment_highlight" type="Texture2D">
|
||||
Icon for the right arrow button that appears when there are too many tabs to fit in the container width. Used when the button is being hovered with the cursor.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the tab text outline.
|
||||
</theme_item>
|
||||
<theme_item name="panel" type="StyleBox">
|
||||
</theme_item>
|
||||
<theme_item name="tab_disabled" type="StyleBox">
|
||||
|
|
|
@ -954,6 +954,9 @@
|
|||
<theme_item name="font_color" type="Color" default="Color( 0.88, 0.88, 0.88, 1 )">
|
||||
Sets the font [Color].
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the [TextEdit].
|
||||
</theme_item>
|
||||
<theme_item name="font_readonly_color" type="Color" default="Color( 0.88, 0.88, 0.88, 0.5 )">
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 0, 0, 0, 1 )">
|
||||
|
@ -971,6 +974,9 @@
|
|||
<theme_item name="normal" type="StyleBox">
|
||||
Sets the [StyleBox] of this [TextEdit].
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="read_only" type="StyleBox">
|
||||
Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled.
|
||||
</theme_item>
|
||||
|
|
|
@ -524,6 +524,9 @@
|
|||
<theme_item name="font_color" type="Color" default="Color( 0.69, 0.69, 0.69, 1 )">
|
||||
Default text [Color] of the item.
|
||||
</theme_item>
|
||||
<theme_item name="font_outline_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The tint of text outline of the item.
|
||||
</theme_item>
|
||||
<theme_item name="font_selected_color" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
Text [Color] used when the item is selected.
|
||||
</theme_item>
|
||||
|
@ -539,6 +542,9 @@
|
|||
<theme_item name="item_margin" type="int" default="12">
|
||||
The horizontal margin at the start of an item. This is used when folding is enabled for the item.
|
||||
</theme_item>
|
||||
<theme_item name="outline_size" type="int" default="0">
|
||||
The size of the text outline.
|
||||
</theme_item>
|
||||
<theme_item name="relationship_line_color" type="Color" default="Color( 0.27, 0.27, 0.27, 1 )">
|
||||
[Color] of the relationship lines.
|
||||
</theme_item>
|
||||
|
|
|
@ -474,8 +474,17 @@
|
|||
</theme_item>
|
||||
<theme_item name="title_font" type="Font">
|
||||
</theme_item>
|
||||
<theme_item name="title_font_size" type="int">
|
||||
The size of the title font.
|
||||
</theme_item>
|
||||
<theme_item name="title_height" type="int" default="20">
|
||||
</theme_item>
|
||||
<theme_item name="title_outline_modulate" type="Color" default="Color( 1, 1, 1, 1 )">
|
||||
The color of the title outline.
|
||||
</theme_item>
|
||||
<theme_item name="title_outline_size" type="int" default="0">
|
||||
The size of the title outline.
|
||||
</theme_item>
|
||||
<theme_item name="window_panel" type="StyleBox">
|
||||
</theme_item>
|
||||
</theme_items>
|
||||
|
|
|
@ -124,8 +124,8 @@ DynamicFontDataAdvanced::DataAtSize *DynamicFontDataAdvanced::get_data_for_size(
|
|||
fds->size = p_size;
|
||||
fds->ascent = (fds->face->size->metrics.ascender / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->descent = (-fds->face->size->metrics.descender / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->underline_position = -fds->face->underline_position / 64.0 / oversampling * fds->scale_color_font;
|
||||
fds->underline_thickness = fds->face->underline_thickness / 64.0 / oversampling * fds->scale_color_font;
|
||||
fds->underline_position = (-FT_MulFix(fds->face->underline_position, fds->face->size->metrics.y_scale) / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->underline_thickness = (FT_MulFix(fds->face->underline_thickness, fds->face->size->metrics.y_scale) / 64.0) / oversampling * fds->scale_color_font;
|
||||
|
||||
//Load os2 TTF pable
|
||||
fds->os2 = (TT_OS2 *)FT_Get_Sfnt_Table(fds->face, FT_SFNT_OS2);
|
||||
|
|
|
@ -124,8 +124,9 @@ DynamicFontDataFallback::DataAtSize *DynamicFontDataFallback::get_data_for_size(
|
|||
fds->size = p_size;
|
||||
fds->ascent = (fds->face->size->metrics.ascender / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->descent = (-fds->face->size->metrics.descender / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->underline_position = -fds->face->underline_position / 64.0 / oversampling * fds->scale_color_font;
|
||||
fds->underline_thickness = fds->face->underline_thickness / 64.0 / oversampling * fds->scale_color_font;
|
||||
fds->underline_position = (-FT_MulFix(fds->face->underline_position, fds->face->size->metrics.y_scale) / 64.0) / oversampling * fds->scale_color_font;
|
||||
fds->underline_thickness = (FT_MulFix(fds->face->underline_thickness, fds->face->size->metrics.y_scale) / 64.0) / oversampling * fds->scale_color_font;
|
||||
|
||||
if (p_outline_size != 0) {
|
||||
size_cache_outline[id] = fds;
|
||||
} else {
|
||||
|
|
|
@ -883,6 +883,8 @@ void ItemList::_notification(int p_what) {
|
|||
int vseparation = get_theme_constant("vseparation");
|
||||
int icon_margin = get_theme_constant("icon_margin");
|
||||
int line_separation = get_theme_constant("line_separation");
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
|
||||
Ref<StyleBox> sbsel = has_focus() ? get_theme_stylebox("selected_focus") : get_theme_stylebox("selected");
|
||||
Ref<StyleBox> cursor = has_focus() ? get_theme_stylebox("cursor") : get_theme_stylebox("cursor_unfocused");
|
||||
|
@ -1204,6 +1206,10 @@ void ItemList::_notification(int p_what) {
|
|||
items.write[i].text_buf->set_width(max_len);
|
||||
items.write[i].text_buf->set_align(HALIGN_CENTER);
|
||||
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].text_buf->draw_outline(get_canvas_item(), text_ofs, outline_size, font_outline_color);
|
||||
}
|
||||
|
||||
items[i].text_buf->draw(get_canvas_item(), text_ofs, modulate);
|
||||
} else {
|
||||
if (fixed_column_width > 0) {
|
||||
|
@ -1230,6 +1236,11 @@ void ItemList::_notification(int p_what) {
|
|||
} else {
|
||||
items.write[i].text_buf->set_align(HALIGN_LEFT);
|
||||
}
|
||||
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].text_buf->draw_outline(get_canvas_item(), text_ofs, outline_size, font_outline_color);
|
||||
}
|
||||
|
||||
items[i].text_buf->draw(get_canvas_item(), text_ofs, modulate);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -835,6 +835,24 @@ void LineEdit::_notification(int p_what) {
|
|||
|
||||
// Draw text.
|
||||
ofs.y += TS->shaped_text_get_ascent(text_rid);
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
Vector2 oofs = ofs;
|
||||
for (int i = 0; i < gl_size; i++) {
|
||||
for (int j = 0; j < glyphs[i].repeat; j++) {
|
||||
if (ceil(oofs.x) >= x_ofs && (oofs.x + glyphs[i].advance) <= ofs_max) {
|
||||
if (glyphs[i].font_rid != RID()) {
|
||||
TS->font_draw_glyph_outline(glyphs[i].font_rid, ci, glyphs[i].font_size, outline_size, oofs + Vector2(glyphs[i].x_off, glyphs[i].y_off), glyphs[i].index, font_outline_color);
|
||||
}
|
||||
}
|
||||
oofs.x += glyphs[i].advance;
|
||||
}
|
||||
if (oofs.x >= ofs_max) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < gl_size; i++) {
|
||||
bool selected = selection.enabled && glyphs[i].start >= selection.begin && glyphs[i].end <= selection.end;
|
||||
for (int j = 0; j < glyphs[i].repeat; j++) {
|
||||
|
|
|
@ -191,9 +191,17 @@ void LinkButton::_notification(int p_what) {
|
|||
|
||||
int width = text_buf->get_line_width();
|
||||
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
if (is_layout_rtl()) {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
text_buf->draw_outline(get_canvas_item(), Vector2(size.width - width, 0), outline_size, font_outline_color);
|
||||
}
|
||||
text_buf->draw(get_canvas_item(), Vector2(size.width - width, 0), color);
|
||||
} else {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
text_buf->draw_outline(get_canvas_item(), Vector2(0, 0), outline_size, font_outline_color);
|
||||
}
|
||||
text_buf->draw(get_canvas_item(), Vector2(0, 0), color);
|
||||
}
|
||||
|
||||
|
|
|
@ -572,17 +572,31 @@ void PopupMenu::_draw_items() {
|
|||
}
|
||||
|
||||
// Text
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
if (items[i].separator) {
|
||||
if (text != String()) {
|
||||
int center = (display_width - items[i].text_buf->get_size().width) / 2;
|
||||
items[i].text_buf->draw(ci, Point2(center, item_ofs.y + Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), font_separator_color);
|
||||
Vector2 text_pos = Point2(center, item_ofs.y + Math::floor((h - items[i].text_buf->get_size().y) / 2.0));
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
items[i].text_buf->draw(ci, text_pos, font_separator_color);
|
||||
}
|
||||
} else {
|
||||
item_ofs.x += icon_ofs + check_ofs;
|
||||
if (rtl) {
|
||||
items[i].text_buf->draw(ci, Size2(control->get_size().width - items[i].text_buf->get_size().width - item_ofs.x, item_ofs.y) + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), items[i].disabled ? font_disabled_color : (i == mouse_over ? font_hover_color : font_color));
|
||||
Vector2 text_pos = Size2(control->get_size().width - items[i].text_buf->get_size().width - item_ofs.x, item_ofs.y) + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0));
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
items[i].text_buf->draw(ci, text_pos, items[i].disabled ? font_disabled_color : (i == mouse_over ? font_hover_color : font_color));
|
||||
} else {
|
||||
items[i].text_buf->draw(ci, item_ofs + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), items[i].disabled ? font_disabled_color : (i == mouse_over ? font_hover_color : font_color));
|
||||
Vector2 text_pos = item_ofs + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0));
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
items[i].text_buf->draw(ci, text_pos, items[i].disabled ? font_disabled_color : (i == mouse_over ? font_hover_color : font_color));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -593,7 +607,11 @@ void PopupMenu::_draw_items() {
|
|||
} else {
|
||||
item_ofs.x = display_width - style->get_margin(SIDE_RIGHT) - items[i].accel_text_buf->get_size().x;
|
||||
}
|
||||
items[i].accel_text_buf->draw(ci, item_ofs + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), i == mouse_over ? font_hover_color : font_accelerator_color);
|
||||
Vector2 text_pos = item_ofs + Point2(0, Math::floor((h - items[i].text_buf->get_size().y) / 2.0));
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
items[i].accel_text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
items[i].accel_text_buf->draw(ci, text_pos, i == mouse_over ? font_hover_color : font_accelerator_color);
|
||||
}
|
||||
|
||||
// Cache the item vertical offset from the first item and the height
|
||||
|
|
|
@ -74,7 +74,13 @@ void ProgressBar::_notification(int p_what) {
|
|||
if (percent_visible) {
|
||||
String txt = TS->format_number(itos(int(get_as_ratio() * 100))) + TS->percent_sign();
|
||||
TextLine tl = TextLine(txt, font, font_size);
|
||||
tl.draw(get_canvas_item(), (Point2(get_size().width - tl.get_size().x, get_size().height - tl.get_size().y) / 2).round(), font_color);
|
||||
Vector2 text_pos = (Point2(get_size().width - tl.get_size().x, get_size().height - tl.get_size().y) / 2).round();
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
tl.draw_outline(get_canvas_item(), text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
tl.draw(get_canvas_item(), text_pos, font_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -776,6 +776,7 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
|||
Color odd_row_bg = get_theme_color("table_odd_row_bg");
|
||||
Color even_row_bg = get_theme_color("table_even_row_bg");
|
||||
Color border = get_theme_color("table_border");
|
||||
int hseparation = get_theme_constant("table_hseparation");
|
||||
int col_count = table->columns.size();
|
||||
int row_count = table->rows.size();
|
||||
|
||||
|
@ -792,11 +793,11 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
|||
coff.x = rect.size.width - table->columns[col].width - coff.x;
|
||||
}
|
||||
if (row % 2 == 0) {
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width, table->rows[row])), (frame->odd_row_bg != Color(0, 0, 0, 0) ? frame->odd_row_bg : odd_row_bg), true);
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width + hseparation + frame->padding.position.x + frame->padding.size.x, table->rows[row])), (frame->odd_row_bg != Color(0, 0, 0, 0) ? frame->odd_row_bg : odd_row_bg), true);
|
||||
} else {
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width, table->rows[row])), (frame->even_row_bg != Color(0, 0, 0, 0) ? frame->even_row_bg : even_row_bg), true);
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width + hseparation + frame->padding.position.x + frame->padding.size.x, table->rows[row])), (frame->even_row_bg != Color(0, 0, 0, 0) ? frame->even_row_bg : even_row_bg), true);
|
||||
}
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width, table->rows[row])), (frame->border != Color(0, 0, 0, 0) ? frame->border : border), false);
|
||||
draw_rect(Rect2(p_ofs + rect.position + off + coff - frame->padding.position, Size2(table->columns[col].width + hseparation + frame->padding.position.x + frame->padding.size.x, table->rows[row])), (frame->border != Color(0, 0, 0, 0) ? frame->border : border), false);
|
||||
}
|
||||
|
||||
for (int j = 0; j < frame->lines.size(); j++) {
|
||||
|
@ -819,8 +820,8 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
|
|||
// Draw oulines and shadow.
|
||||
for (int i = 0; i < gl_size; i++) {
|
||||
Item *it = _get_item_at_pos(it_from, it_to, glyphs[i].start);
|
||||
int size = _find_outline_size(it);
|
||||
Color font_color = _find_outline_color(it, Color(0, 0, 0, 0));
|
||||
int size = _find_outline_size(it, p_outline_size);
|
||||
Color font_color = _find_outline_color(it, p_outline_color);
|
||||
if (size <= 0) {
|
||||
gloff.x += glyphs[i].advance;
|
||||
continue;
|
||||
|
@ -1398,7 +1399,7 @@ void RichTextLabel::_notification(int p_what) {
|
|||
}
|
||||
Ref<Font> base_font = get_theme_font("normal_font");
|
||||
Color base_color = get_theme_color("default_color");
|
||||
Color outline_color = get_theme_color("outline_color");
|
||||
Color outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
Color font_shadow_color = get_theme_color("font_shadow_color");
|
||||
bool use_outline = get_theme_constant("shadow_as_outline");
|
||||
|
@ -1753,7 +1754,7 @@ int RichTextLabel::_find_font_size(Item *p_item) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
int RichTextLabel::_find_outline_size(Item *p_item) {
|
||||
int RichTextLabel::_find_outline_size(Item *p_item, int p_default) {
|
||||
Item *sizeitem = p_item;
|
||||
|
||||
while (sizeitem) {
|
||||
|
@ -1765,7 +1766,7 @@ int RichTextLabel::_find_outline_size(Item *p_item) {
|
|||
sizeitem = sizeitem->parent;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return p_default;
|
||||
}
|
||||
|
||||
Dictionary RichTextLabel::_find_font_features(Item *p_item) {
|
||||
|
|
|
@ -405,7 +405,7 @@ private:
|
|||
Ref<Font> _find_font(Item *p_item);
|
||||
int _find_font_size(Item *p_item);
|
||||
Dictionary _find_font_features(Item *p_item);
|
||||
int _find_outline_size(Item *p_item);
|
||||
int _find_outline_size(Item *p_item, int p_default);
|
||||
ItemList *_find_list_item(Item *p_item);
|
||||
ItemDropcap *_find_dc_item(Item *p_item);
|
||||
int _find_list(Item *p_item, Vector<int> &r_index, Vector<ItemList *> &r_list);
|
||||
|
|
|
@ -535,6 +535,8 @@ void TabContainer::_draw_tab(Ref<StyleBox> &p_tab_style, Color &p_font_color, in
|
|||
Vector<Control *> tabs = _get_tabs();
|
||||
RID canvas = get_canvas_item();
|
||||
Ref<Font> font = get_theme_font("font");
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
int icon_text_distance = get_theme_constant("icon_separation");
|
||||
int tab_width = _get_tab_width(p_index);
|
||||
int header_height = _get_top_margin();
|
||||
|
@ -565,6 +567,9 @@ void TabContainer::_draw_tab(Ref<StyleBox> &p_tab_style, Color &p_font_color, in
|
|||
|
||||
// Draw the tab text.
|
||||
Point2i text_pos(x_content, y_center - text_buf[p_index]->get_size().y / 2);
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
text_buf[p_index]->draw_outline(canvas, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
text_buf[p_index]->draw(canvas, text_pos, p_font_color);
|
||||
}
|
||||
|
||||
|
|
|
@ -275,6 +275,9 @@ void Tabs::_notification(int p_what) {
|
|||
Color font_unselected_color = get_theme_color("font_unselected_color");
|
||||
Color font_disabled_color = get_theme_color("font_disabled_color");
|
||||
Ref<Texture2D> close = get_theme_icon("close");
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
|
||||
Vector2 size = get_size();
|
||||
bool rtl = is_layout_rtl();
|
||||
|
||||
|
@ -357,9 +360,17 @@ void Tabs::_notification(int p_what) {
|
|||
}
|
||||
|
||||
if (rtl) {
|
||||
tabs[i].text_buf->draw(ci, Point2i(size.width - w - tabs[i].text_buf->get_size().x, sb->get_margin(SIDE_TOP) + ((sb_rect.size.y - sb_ms.y) - tabs[i].text_buf->get_size().y) / 2), col);
|
||||
Vector2 text_pos = Point2i(size.width - w - tabs[i].text_buf->get_size().x, sb->get_margin(SIDE_TOP) + ((sb_rect.size.y - sb_ms.y) - tabs[i].text_buf->get_size().y) / 2);
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
tabs[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
tabs[i].text_buf->draw(ci, text_pos, col);
|
||||
} else {
|
||||
tabs[i].text_buf->draw(ci, Point2i(w, sb->get_margin(SIDE_TOP) + ((sb_rect.size.y - sb_ms.y) - tabs[i].text_buf->get_size().y) / 2), col);
|
||||
Vector2 text_pos = Point2i(w, sb->get_margin(SIDE_TOP) + ((sb_rect.size.y - sb_ms.y) - tabs[i].text_buf->get_size().y) / 2);
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
tabs[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
tabs[i].text_buf->draw(ci, text_pos, col);
|
||||
}
|
||||
|
||||
w += tabs[i].size_text;
|
||||
|
|
|
@ -1117,6 +1117,9 @@ void TextEdit::_notification(int p_what) {
|
|||
tl->add_string(text, cache.font, cache.font_size);
|
||||
|
||||
int yofs = ofs_y + (row_height - tl->get_size().y) / 2;
|
||||
if (cache.outline_size > 0 && cache.outline_color.a > 0) {
|
||||
tl->draw_outline(ci, Point2(gutter_offset + ofs_x, yofs), cache.outline_size, cache.outline_color);
|
||||
}
|
||||
tl->draw(ci, Point2(gutter_offset + ofs_x, yofs), get_line_gutter_item_color(line, g));
|
||||
} break;
|
||||
case GUTTER_TPYE_ICON: {
|
||||
|
@ -1273,6 +1276,22 @@ void TextEdit::_notification(int p_what) {
|
|||
|
||||
ofs_y += ldata->get_line_ascent(line_wrap_index);
|
||||
int char_ofs = 0;
|
||||
if (cache.outline_size > 0 && cache.outline_color.a > 0) {
|
||||
for (int j = 0; j < gl_size; j++) {
|
||||
for (int k = 0; k < glyphs[j].repeat; k++) {
|
||||
if ((char_ofs + char_margin) >= xmargin_beg && (char_ofs + glyphs[j].advance + char_margin) <= xmargin_end) {
|
||||
if (glyphs[j].font_rid != RID()) {
|
||||
TS->font_draw_glyph_outline(glyphs[j].font_rid, ci, glyphs[j].font_size, cache.outline_size, Vector2(char_margin + char_ofs + ofs_x + glyphs[j].x_off, ofs_y + glyphs[j].y_off), glyphs[j].index, cache.outline_color);
|
||||
}
|
||||
}
|
||||
char_ofs += glyphs[j].advance;
|
||||
}
|
||||
if ((char_ofs + char_margin) >= xmargin_end) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
char_ofs = 0;
|
||||
}
|
||||
for (int j = 0; j < gl_size; j++) {
|
||||
if (color_map.has(glyphs[j].start)) {
|
||||
current_color = color_map[glyphs[j].start].get("color");
|
||||
|
@ -1601,6 +1620,9 @@ void TextEdit::_notification(int p_what) {
|
|||
}
|
||||
tl->set_align(HALIGN_LEFT);
|
||||
}
|
||||
if (cache.outline_size > 0 && cache.outline_color.a > 0) {
|
||||
tl->draw_outline(ci, title_pos, cache.outline_size, cache.outline_color);
|
||||
}
|
||||
tl->draw(ci, title_pos, completion_options[l].font_color);
|
||||
}
|
||||
|
||||
|
@ -4944,6 +4966,8 @@ void TextEdit::_update_caches() {
|
|||
cache.completion_font_color = get_theme_color("completion_font_color");
|
||||
cache.font = get_theme_font("font");
|
||||
cache.font_size = get_theme_font_size("font_size");
|
||||
cache.outline_color = get_theme_color("font_outline_color");
|
||||
cache.outline_size = get_theme_constant("outline_size");
|
||||
cache.caret_color = get_theme_color("caret_color");
|
||||
cache.caret_background_color = get_theme_color("caret_background_color");
|
||||
cache.font_color = get_theme_color("font_color");
|
||||
|
|
|
@ -451,6 +451,8 @@ protected:
|
|||
Ref<StyleBox> style_readonly;
|
||||
Ref<Font> font;
|
||||
int font_size = 16;
|
||||
int outline_size = 0;
|
||||
Color outline_color;
|
||||
Color completion_background_color;
|
||||
Color completion_selected_color;
|
||||
Color completion_existing_color;
|
||||
|
|
|
@ -1118,7 +1118,7 @@ int Tree::get_item_height(TreeItem *p_item) const {
|
|||
return height;
|
||||
}
|
||||
|
||||
void Tree::draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color) {
|
||||
void Tree::draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color, int p_ol_size, const Color &p_ol_color) {
|
||||
ERR_FAIL_COND(cache.font.is_null());
|
||||
|
||||
Rect2i rect = p_rect;
|
||||
|
@ -1160,6 +1160,9 @@ void Tree::draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Co
|
|||
Point2 draw_pos = rect.position;
|
||||
draw_pos.y += Math::floor((rect.size.y - p_cell.text_buf->get_size().y) / 2.0);
|
||||
p_cell.text_buf->set_width(MAX(0, rect.size.width));
|
||||
if (p_ol_size > 0 && p_ol_color.a > 0) {
|
||||
p_cell.text_buf->draw_outline(ci, draw_pos, p_ol_size, p_ol_color);
|
||||
}
|
||||
p_cell.text_buf->draw(ci, draw_pos, p_color);
|
||||
rect.position.x += ts.width + cache.hseparation;
|
||||
rect.size.x -= ts.width + cache.hseparation;
|
||||
|
@ -1182,6 +1185,9 @@ void Tree::draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Co
|
|||
Point2 draw_pos = rect.position;
|
||||
draw_pos.y += Math::floor((rect.size.y - p_cell.text_buf->get_size().y) / 2.0);
|
||||
p_cell.text_buf->set_width(MAX(0, rect.size.width));
|
||||
if (p_ol_size > 0 && p_ol_color.a > 0) {
|
||||
p_cell.text_buf->draw_outline(ci, draw_pos, p_ol_size, p_ol_color);
|
||||
}
|
||||
p_cell.text_buf->draw(ci, draw_pos, p_color);
|
||||
}
|
||||
}
|
||||
|
@ -1434,6 +1440,8 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
}
|
||||
|
||||
Color col = p_item->cells[i].custom_color ? p_item->cells[i].color : get_theme_color(p_item->cells[i].selected ? "font_selected_color" : "font_color");
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
Color icon_col = p_item->cells[i].icon_color;
|
||||
|
||||
if (p_item->cells[i].dirty) {
|
||||
|
@ -1450,7 +1458,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
|
||||
switch (p_item->cells[i].mode) {
|
||||
case TreeItem::CELL_MODE_STRING: {
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col);
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col, outline_size, font_outline_color);
|
||||
} break;
|
||||
case TreeItem::CELL_MODE_CHECK: {
|
||||
Ref<Texture2D> checked = cache.checked;
|
||||
|
@ -1471,7 +1479,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
item_rect.size.x -= check_w;
|
||||
item_rect.position.x += check_w;
|
||||
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col);
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col, outline_size, font_outline_color);
|
||||
|
||||
} break;
|
||||
case TreeItem::CELL_MODE_RANGE: {
|
||||
|
@ -1485,8 +1493,14 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
|
||||
p_item->cells.write[i].text_buf->set_width(cell_width);
|
||||
if (rtl) {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
p_item->cells[i].text_buf->draw_outline(ci, text_pos + Vector2(cell_width - text_width, 0), outline_size, font_outline_color);
|
||||
}
|
||||
p_item->cells[i].text_buf->draw(ci, text_pos + Vector2(cell_width - text_width, 0), col);
|
||||
} else {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
p_item->cells[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
p_item->cells[i].text_buf->draw(ci, text_pos, col);
|
||||
}
|
||||
|
||||
|
@ -1501,8 +1515,14 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
int cell_width = item_rect.size.x - updown->get_width();
|
||||
|
||||
if (rtl) {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
p_item->cells[i].text_buf->draw_outline(ci, text_pos + Vector2(cell_width - text_width, 0), outline_size, font_outline_color);
|
||||
}
|
||||
p_item->cells[i].text_buf->draw(ci, text_pos + Vector2(cell_width - text_width, 0), col);
|
||||
} else {
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
p_item->cells[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
p_item->cells[i].text_buf->draw(ci, text_pos, col);
|
||||
}
|
||||
|
||||
|
@ -1543,7 +1563,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
}
|
||||
|
||||
if (!p_item->cells[i].editable) {
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col);
|
||||
draw_item_rect(p_item->cells.write[i], item_rect, col, icon_col, outline_size, font_outline_color);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1571,7 +1591,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
|
|||
ir.position += cache.custom_button->get_offset();
|
||||
}
|
||||
|
||||
draw_item_rect(p_item->cells.write[i], ir, col, icon_col);
|
||||
draw_item_rect(p_item->cells.write[i], ir, col, icon_col, outline_size, font_outline_color);
|
||||
|
||||
downarrow->draw(ci, arrow_pos);
|
||||
|
||||
|
@ -3143,6 +3163,8 @@ void Tree::_notification(int p_what) {
|
|||
|
||||
Ref<StyleBox> bg = cache.bg;
|
||||
Ref<StyleBox> bg_focus = get_theme_stylebox("bg_focus");
|
||||
Color font_outline_color = get_theme_color("font_outline_color");
|
||||
int outline_size = get_theme_constant("outline_size");
|
||||
|
||||
Point2 draw_ofs;
|
||||
draw_ofs += bg->get_offset();
|
||||
|
@ -3179,7 +3201,12 @@ void Tree::_notification(int p_what) {
|
|||
//text
|
||||
int clip_w = tbrect.size.width - sb->get_minimum_size().width;
|
||||
columns.write[i].text_buf->set_width(clip_w);
|
||||
columns[i].text_buf->draw(ci, tbrect.position + Point2i(sb->get_offset().x + (tbrect.size.width - columns[i].text_buf->get_size().x) / 2, (tbrect.size.height - columns[i].text_buf->get_size().y) / 2), cache.title_button_color);
|
||||
|
||||
Vector2 text_pos = tbrect.position + Point2i(sb->get_offset().x + (tbrect.size.width - columns[i].text_buf->get_size().x) / 2, (tbrect.size.height - columns[i].text_buf->get_size().y) / 2);
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
columns[i].text_buf->draw_outline(ci, text_pos, outline_size, font_outline_color);
|
||||
}
|
||||
columns[i].text_buf->draw(ci, text_pos, cache.title_button_color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -385,7 +385,7 @@ private:
|
|||
void update_item_cell(TreeItem *p_item, int p_col);
|
||||
void update_item_cache(TreeItem *p_item);
|
||||
//void draw_item_text(String p_text,const Ref<Texture2D>& p_icon,int p_icon_max_w,bool p_tool,Rect2i p_rect,const Color& p_color);
|
||||
void draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color);
|
||||
void draw_item_rect(TreeItem::Cell &p_cell, const Rect2i &p_rect, const Color &p_color, const Color &p_icon_color, int p_ol_size, const Color &p_ol_color);
|
||||
int draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2 &p_draw_size, TreeItem *p_item);
|
||||
void select_single_item(TreeItem *p_selected, TreeItem *p_current, int p_col, TreeItem *p_prev = nullptr, bool *r_in_range = nullptr, bool p_force_deselect = false);
|
||||
int propagate_mouse_event(const Point2i &p_pos, int x_ofs, int y_ofs, bool p_doubleclick, TreeItem *p_item, int p_button, const Ref<InputEventWithModifiers> &p_mod);
|
||||
|
|
|
@ -278,6 +278,11 @@ void Viewport::_sub_window_update(Window *p_window) {
|
|||
int x = (r.size.width - title_text.get_size().x) / 2;
|
||||
int y = (-title_height - title_text.get_size().y) / 2;
|
||||
|
||||
Color font_outline_color = p_window->get_theme_color("title_outline_modulate");
|
||||
int outline_size = p_window->get_theme_constant("title_outline_size");
|
||||
if (outline_size > 0 && font_outline_color.a > 0) {
|
||||
title_text.draw_outline(sw.canvas_item, r.position + Point2(x, y), outline_size, font_outline_color);
|
||||
}
|
||||
title_text.draw(sw.canvas_item, r.position + Point2(x, y), title_color);
|
||||
|
||||
bool hl = gui.subwindow_focused == sw.window && gui.subwindow_drag == SUB_WINDOW_DRAG_CLOSE && gui.subwindow_drag_close_inside;
|
||||
|
|
|
@ -210,7 +210,9 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_color", "LinkButton", control_font_color);
|
||||
theme->set_color("font_pressed_color", "LinkButton", control_font_pressed_color);
|
||||
theme->set_color("font_hover_color", "LinkButton", control_font_hover_color);
|
||||
theme->set_color("font_outline_color", "LinkButton", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("outline_size", "LinkButton", 0);
|
||||
theme->set_constant("underline_spacing", "LinkButton", 2 * scale);
|
||||
|
||||
// ColorPickerButton
|
||||
|
@ -228,8 +230,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_pressed_color", "ColorPickerButton", Color(0.8, 0.8, 0.8, 1));
|
||||
theme->set_color("font_hover_color", "ColorPickerButton", Color(1, 1, 1, 1));
|
||||
theme->set_color("font_disabled_color", "ColorPickerButton", Color(0.9, 0.9, 0.9, 0.3));
|
||||
theme->set_color("font_outline_color", "ColorPickerButton", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "ColorPickerButton", 2 * scale);
|
||||
theme->set_constant("outline_size", "ColorPickerButton", 0);
|
||||
|
||||
// OptionButton
|
||||
|
||||
|
@ -265,9 +269,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_pressed_color", "OptionButton", control_font_pressed_color);
|
||||
theme->set_color("font_hover_color", "OptionButton", control_font_hover_color);
|
||||
theme->set_color("font_disabled_color", "OptionButton", control_font_disabled_color);
|
||||
theme->set_color("font_outline_color", "OptionButton", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "OptionButton", 2 * scale);
|
||||
theme->set_constant("arrow_margin", "OptionButton", 2 * scale);
|
||||
theme->set_constant("outline_size", "OptionButton", 0);
|
||||
|
||||
// MenuButton
|
||||
|
||||
|
@ -284,8 +290,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_pressed_color", "MenuButton", control_font_pressed_color);
|
||||
theme->set_color("font_hover_color", "MenuButton", control_font_hover_color);
|
||||
theme->set_color("font_disabled_color", "MenuButton", Color(1, 1, 1, 0.3));
|
||||
theme->set_color("font_outline_color", "MenuButton", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "MenuButton", 3 * scale);
|
||||
theme->set_constant("outline_size", "MenuButton", 0);
|
||||
|
||||
// CheckBox
|
||||
|
||||
|
@ -320,9 +328,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_hover_color", "CheckBox", control_font_hover_color);
|
||||
theme->set_color("font_hover_pressed_color", "CheckBox", control_font_pressed_color);
|
||||
theme->set_color("font_disabled_color", "CheckBox", control_font_disabled_color);
|
||||
theme->set_color("font_outline_color", "CheckBox", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "CheckBox", 4 * scale);
|
||||
theme->set_constant("check_vadjust", "CheckBox", 0 * scale);
|
||||
theme->set_constant("outline_size", "CheckBox", 0);
|
||||
|
||||
// CheckButton
|
||||
|
||||
|
@ -357,9 +367,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_hover_color", "CheckButton", control_font_hover_color);
|
||||
theme->set_color("font_hover_pressed_color", "CheckButton", control_font_pressed_color);
|
||||
theme->set_color("font_disabled_color", "CheckButton", control_font_disabled_color);
|
||||
theme->set_color("font_outline_color", "CheckButton", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "CheckButton", 4 * scale);
|
||||
theme->set_constant("check_vadjust", "CheckButton", 0 * scale);
|
||||
theme->set_constant("outline_size", "CheckButton", 0);
|
||||
|
||||
// Label
|
||||
|
||||
|
@ -373,7 +385,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_constant("shadow_offset_x", "Label", 1 * scale);
|
||||
theme->set_constant("shadow_offset_y", "Label", 1 * scale);
|
||||
theme->set_constant("outline_size", "Label", 0 * scale);
|
||||
theme->set_constant("outline_size", "Label", 0);
|
||||
theme->set_constant("shadow_outline_size", "Label", 1 * scale);
|
||||
theme->set_constant("line_spacing", "Label", 3 * scale);
|
||||
|
||||
|
@ -389,12 +401,14 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_color", "LineEdit", control_font_color);
|
||||
theme->set_color("font_selected_color", "LineEdit", Color(0, 0, 0));
|
||||
theme->set_color("font_uneditable_color", "LineEdit", Color(control_font_color.r, control_font_color.g, control_font_color.b, 0.5f));
|
||||
theme->set_color("font_outline_color", "LineEdit", Color(1, 1, 1));
|
||||
theme->set_color("cursor_color", "LineEdit", control_font_hover_color);
|
||||
theme->set_color("selection_color", "LineEdit", control_selection_color);
|
||||
theme->set_color("clear_button_color", "LineEdit", control_font_color);
|
||||
theme->set_color("clear_button_color_pressed", "LineEdit", control_font_pressed_color);
|
||||
|
||||
theme->set_constant("minimum_character_width", "LineEdit", 4);
|
||||
theme->set_constant("outline_size", "LineEdit", 0);
|
||||
|
||||
theme->set_icon("clear", "LineEdit", make_icon(line_edit_clear_png));
|
||||
|
||||
|
@ -408,6 +422,9 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_color("font_color", "ProgressBar", control_font_hover_color);
|
||||
theme->set_color("font_shadow_color", "ProgressBar", Color(0, 0, 0));
|
||||
theme->set_color("font_outline_color", "ProgressBar", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("outline_size", "ProgressBar", 0);
|
||||
|
||||
// TextEdit
|
||||
|
||||
|
@ -431,6 +448,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_color", "TextEdit", control_font_color);
|
||||
theme->set_color("font_selected_color", "TextEdit", Color(0, 0, 0));
|
||||
theme->set_color("font_readonly_color", "TextEdit", Color(control_font_color.r, control_font_color.g, control_font_color.b, 0.5f));
|
||||
theme->set_color("font_outline_color", "TextEdit", Color(1, 1, 1));
|
||||
theme->set_color("selection_color", "TextEdit", control_selection_color);
|
||||
theme->set_color("mark_color", "TextEdit", Color(1.0, 0.4, 0.4, 0.4));
|
||||
theme->set_color("code_folding_color", "TextEdit", Color(0.8, 0.8, 0.8, 0.8));
|
||||
|
@ -444,8 +462,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("completion_max_width", "TextEdit", 50);
|
||||
theme->set_constant("completion_scroll_width", "TextEdit", 3);
|
||||
theme->set_constant("line_spacing", "TextEdit", 4 * scale);
|
||||
theme->set_constant("outline_size", "TextEdit", 0);
|
||||
|
||||
// CodeEdit
|
||||
|
||||
theme->set_stylebox("normal", "CodeEdit", make_stylebox(tree_bg_png, 3, 3, 3, 3, 0, 0, 0, 0));
|
||||
theme->set_stylebox("focus", "CodeEdit", focus);
|
||||
theme->set_stylebox("read_only", "CodeEdit", make_stylebox(tree_bg_disabled_png, 4, 4, 4, 4, 0, 0, 0, 0));
|
||||
|
@ -471,6 +491,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_color", "CodeEdit", control_font_color);
|
||||
theme->set_color("font_selected_color", "CodeEdit", Color(0, 0, 0));
|
||||
theme->set_color("font_readonly_color", "CodeEdit", Color(control_font_color.r, control_font_color.g, control_font_color.b, 0.5f));
|
||||
theme->set_color("font_outline_color", "CodeEdit", Color(1, 1, 1));
|
||||
theme->set_color("selection_color", "CodeEdit", control_selection_color);
|
||||
theme->set_color("mark_color", "CodeEdit", Color(1.0, 0.4, 0.4, 0.4));
|
||||
theme->set_color("bookmark_color", "CodeEdit", Color(0.5, 0.64, 1, 0.8));
|
||||
|
@ -489,6 +510,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("completion_max_width", "CodeEdit", 50);
|
||||
theme->set_constant("completion_scroll_width", "CodeEdit", 3);
|
||||
theme->set_constant("line_spacing", "CodeEdit", 4 * scale);
|
||||
theme->set_constant("outline_size", "CodeEdit", 0);
|
||||
|
||||
Ref<Texture2D> empty_icon = memnew(ImageTexture);
|
||||
|
||||
|
@ -544,7 +566,8 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_icon("updown", "SpinBox", make_icon(spinbox_updown_png));
|
||||
|
||||
//scroll container
|
||||
// ScrollContainer
|
||||
|
||||
Ref<StyleBoxEmpty> empty;
|
||||
empty.instance();
|
||||
theme->set_stylebox("bg", "ScrollContainer", empty);
|
||||
|
@ -556,7 +579,12 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("scaleborder_size", "Window", 4 * scale);
|
||||
|
||||
theme->set_font("title_font", "Window", large_font);
|
||||
theme->set_font_size("title_font_size", "Window", -1);
|
||||
|
||||
theme->set_color("title_color", "Window", Color(0, 0, 0));
|
||||
theme->set_color("title_outline_modulate", "Window", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("title_outline_size", "Window", 0);
|
||||
theme->set_constant("title_height", "Window", 20 * scale);
|
||||
theme->set_constant("resize_margin", "Window", 4 * scale);
|
||||
|
||||
|
@ -611,9 +639,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_disabled_color", "PopupMenu", Color(0.4, 0.4, 0.4, 0.8));
|
||||
theme->set_color("font_hover_color", "PopupMenu", control_font_color);
|
||||
theme->set_color("font_separator_color", "PopupMenu", control_font_color);
|
||||
theme->set_color("font_outline_color", "PopupMenu", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "PopupMenu", 4 * scale);
|
||||
theme->set_constant("vseparation", "PopupMenu", 4 * scale);
|
||||
theme->set_constant("outline_size", "PopupMenu", 0);
|
||||
|
||||
// GraphNode
|
||||
|
||||
|
@ -682,6 +712,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("title_button_color", "Tree", control_font_color);
|
||||
theme->set_color("font_color", "Tree", control_font_low_color);
|
||||
theme->set_color("font_selected_color", "Tree", control_font_pressed_color);
|
||||
theme->set_color("font_outline_color", "Tree", Color(1, 1, 1));
|
||||
theme->set_color("guide_color", "Tree", Color(0, 0, 0, 0.1));
|
||||
theme->set_color("drop_position_color", "Tree", Color(1, 0.3, 0.2));
|
||||
theme->set_color("relationship_line_color", "Tree", Color(0.27, 0.27, 0.27));
|
||||
|
@ -695,8 +726,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("draw_guides", "Tree", 1);
|
||||
theme->set_constant("scroll_border", "Tree", 4);
|
||||
theme->set_constant("scroll_speed", "Tree", 12);
|
||||
theme->set_constant("outline_size", "Tree", 0);
|
||||
|
||||
// ItemList
|
||||
|
||||
Ref<StyleBoxTexture> item_selected = make_stylebox(selection_png, 4, 4, 4, 4, 8, 2, 8, 2);
|
||||
Ref<StyleBoxTexture> item_selected_oof = make_stylebox(selection_oof_png, 4, 4, 4, 4, 8, 2, 8, 2);
|
||||
|
||||
|
@ -712,12 +745,15 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_color("font_color", "ItemList", control_font_lower_color);
|
||||
theme->set_color("font_selected_color", "ItemList", control_font_pressed_color);
|
||||
theme->set_color("font_outline_color", "ItemList", Color(1, 1, 1));
|
||||
theme->set_color("guide_color", "ItemList", Color(0, 0, 0, 0.1));
|
||||
theme->set_stylebox("selected", "ItemList", item_selected_oof);
|
||||
theme->set_stylebox("selected_focus", "ItemList", item_selected);
|
||||
theme->set_stylebox("cursor", "ItemList", focus);
|
||||
theme->set_stylebox("cursor_unfocused", "ItemList", focus);
|
||||
|
||||
theme->set_constant("outline_size", "ItemList", 0);
|
||||
|
||||
// TabContainer
|
||||
|
||||
Ref<StyleBoxTexture> tc_sb = sb_expand(make_stylebox(tab_container_bg_png, 4, 4, 4, 4, 4, 4, 4, 4), 3, 3, 3, 3);
|
||||
|
@ -743,9 +779,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_selected_color", "TabContainer", control_font_hover_color);
|
||||
theme->set_color("font_unselected_color", "TabContainer", control_font_low_color);
|
||||
theme->set_color("font_disabled_color", "TabContainer", control_font_disabled_color);
|
||||
theme->set_color("font_outline_color", "TabContainer", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("side_margin", "TabContainer", 8 * scale);
|
||||
theme->set_constant("icon_separation", "TabContainer", 4 * scale);
|
||||
theme->set_constant("outline_size", "TabContainer", 0);
|
||||
|
||||
// Tabs
|
||||
|
||||
|
@ -768,8 +806,10 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_color("font_selected_color", "Tabs", control_font_hover_color);
|
||||
theme->set_color("font_unselected_color", "Tabs", control_font_low_color);
|
||||
theme->set_color("font_disabled_color", "Tabs", control_font_disabled_color);
|
||||
theme->set_color("font_outline_color", "Tabs", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("hseparation", "Tabs", 4 * scale);
|
||||
theme->set_constant("outline_size", "Tabs", 0);
|
||||
|
||||
// Separators
|
||||
|
||||
|
@ -827,9 +867,11 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_color("font_color", "TooltipLabel", Color(0, 0, 0));
|
||||
theme->set_color("font_shadow_color", "TooltipLabel", Color(0, 0, 0, 0.1));
|
||||
theme->set_color("font_outline_color", "TooltipLabel", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("shadow_offset_x", "TooltipLabel", 1);
|
||||
theme->set_constant("shadow_offset_y", "TooltipLabel", 1);
|
||||
theme->set_constant("outline_size", "TooltipLabel", 0);
|
||||
|
||||
// RichTextLabel
|
||||
|
||||
|
@ -854,6 +896,8 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
|
||||
theme->set_color("font_shadow_color", "RichTextLabel", Color(0, 0, 0, 0));
|
||||
|
||||
theme->set_color("font_outline_color", "RichTextLabel", Color(1, 1, 1));
|
||||
|
||||
theme->set_constant("shadow_offset_x", "RichTextLabel", 1 * scale);
|
||||
theme->set_constant("shadow_offset_y", "RichTextLabel", 1 * scale);
|
||||
theme->set_constant("shadow_as_outline", "RichTextLabel", 0 * scale);
|
||||
|
@ -862,9 +906,12 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("table_hseparation", "RichTextLabel", 3 * scale);
|
||||
theme->set_constant("table_vseparation", "RichTextLabel", 3 * scale);
|
||||
|
||||
theme->set_constant("outline_size", "RichTextLabel", 0);
|
||||
|
||||
theme->set_color("table_odd_row_bg", "RichTextLabel", Color(0, 0, 0, 0));
|
||||
theme->set_color("table_even_row_bg", "RichTextLabel", Color(0, 0, 0, 0));
|
||||
theme->set_color("table_border", "RichTextLabel", Color(0, 0, 0, 0));
|
||||
|
||||
// Containers
|
||||
|
||||
theme->set_stylebox("bg", "VSplitContainer", make_stylebox(vsplit_bg_png, 1, 1, 1, 1));
|
||||
|
@ -904,6 +951,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
|
|||
theme->set_constant("bezier_len_neg", "GraphEdit", 160 * scale);
|
||||
|
||||
// Visual Node Ports
|
||||
|
||||
theme->set_constant("port_grab_distance_horizontal", "GraphEdit", 48 * scale);
|
||||
theme->set_constant("port_grab_distance_vertical", "GraphEdit", 6 * scale);
|
||||
|
||||
|
|
Loading…
Reference in a new issue