diff --git a/src/SharpIDE.Godot/Features/Settings/SettingsButton.tscn b/src/SharpIDE.Godot/Features/Settings/SettingsButton.tscn index 9b2eafe..8d8bd92 100644 --- a/src/SharpIDE.Godot/Features/Settings/SettingsButton.tscn +++ b/src/SharpIDE.Godot/Features/Settings/SettingsButton.tscn @@ -12,3 +12,4 @@ script = ExtResource("2_e87mh") [node name="SettingsWindow" parent="." instance=ExtResource("3_x07a0")] unique_name_in_owner = true +visible = false diff --git a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs index f85b8b1..b0db5f8 100644 --- a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs +++ b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.cs @@ -9,8 +9,13 @@ public partial class SettingsWindow : Window { CloseRequested += Hide; _uiScaleSpinBox = GetNode("%UiScaleSpinBox"); - //_uiScaleSlider.Value = Singletons.AppState.IdeSettings.UiScale; _uiScaleSpinBox.ValueChanged += OnUiScaleSpinBoxValueChanged; + AboutToPopup += OnAboutToPopup; + } + + private void OnAboutToPopup() + { + _uiScaleSpinBox.Value = Singletons.AppState.IdeSettings.UiScale; } private void OnUiScaleSpinBoxValueChanged(double value) @@ -19,5 +24,6 @@ public partial class SettingsWindow : Window Singletons.AppState.IdeSettings.UiScale = valueFloat; GetTree().GetRoot().ContentScaleFactor = valueFloat; + PopupCenteredRatio(0.5f); // Re-size the window after scaling } } \ No newline at end of file diff --git a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.tscn b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.tscn index dfaf61f..32f30ab 100644 --- a/src/SharpIDE.Godot/Features/Settings/SettingsWindow.tscn +++ b/src/SharpIDE.Godot/Features/Settings/SettingsWindow.tscn @@ -1,34 +1,58 @@ -[gd_scene load_steps=2 format=3 uid="uid://dnh73b3speojs"] +[gd_scene load_steps=3 format=3 uid="uid://dnh73b3speojs"] [ext_resource type="Script" uid="uid://b7umbl07avv6d" path="res://Features/Settings/SettingsWindow.cs" id="1_xkmyt"] +[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_xkmyt"] + [node name="SettingsWindow" type="Window"] oversampling_override = 1.0 title = "Settings" initial_position = 2 size = Vector2i(845, 400) transient = true -transient_to_focused = true exclusive = true popup_window = true popup_wm_hint = true script = ExtResource("1_xkmyt") -[node name="VBoxContainer" type="VBoxContainer" parent="."] +[node name="HSplitContainer" type="HSplitContainer" parent="."] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/separation = 4 +theme_override_constants/minimum_grab_thickness = 10 +theme_override_icons/grabber = SubResource("PlaceholderTexture2D_xkmyt") +split_offset = 200 -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +[node name="PanelContainer2" type="PanelContainer" parent="HSplitContainer"] layout_mode = 2 -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="HSplitContainer/PanelContainer2"] +layout_mode = 2 + +[node name="PanelContainer" type="PanelContainer" parent="HSplitContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="HSplitContainer/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 10 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 10 +theme_override_constants/margin_bottom = 5 + +[node name="VBoxContainer2" type="VBoxContainer" parent="HSplitContainer/PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="HSplitContainer/PanelContainer/MarginContainer/VBoxContainer2"] +layout_mode = 2 + +[node name="Label" type="Label" parent="HSplitContainer/PanelContainer/MarginContainer/VBoxContainer2/HBoxContainer"] layout_mode = 2 text = "UI Scale" -[node name="UiScaleSpinBox" type="SpinBox" parent="VBoxContainer/HBoxContainer"] +[node name="UiScaleSpinBox" type="SpinBox" parent="HSplitContainer/PanelContainer/MarginContainer/VBoxContainer2/HBoxContainer"] unique_name_in_owner = true layout_mode = 2 min_value = 0.5 diff --git a/src/SharpIDE.Godot/IdeWindow.cs b/src/SharpIDE.Godot/IdeWindow.cs index eae38fb..718bd71 100644 --- a/src/SharpIDE.Godot/IdeWindow.cs +++ b/src/SharpIDE.Godot/IdeWindow.cs @@ -27,6 +27,7 @@ public partial class IdeWindow : Control SharpIdeMsbuildLocator.Register(); GodotOtelExtensions.AddServiceDefaults(); Singletons.AppState = AppStateLoader.LoadAppStateFromConfigFile(); + GetTree().GetRoot().ContentScaleFactor = Singletons.AppState.IdeSettings.UiScale; //GetWindow().SetMinSize(new Vector2I(1152, 648)); Callable.From(() => PickSolution(true)).CallDeferred(); } diff --git a/src/SharpIDE.Godot/project.godot b/src/SharpIDE.Godot/project.godot index 8f0e1ed..13a7dc0 100644 --- a/src/SharpIDE.Godot/project.godot +++ b/src/SharpIDE.Godot/project.godot @@ -34,11 +34,6 @@ project/assembly_name="SharpIDE.Godot" enabled=PackedStringArray("res://addons/R3.Godot/plugin.cfg", "res://addons/csharp_gdextension_bindgen/plugin.cfg") -[gui] - -theme/default_font_multichannel_signed_distance_field=true -theme/default_font_generate_mipmaps=true - [input] CodeFixes={