From c817b639274b21cf75cdcb340601ff35f93bbce1 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Fri, 4 Nov 2022 10:53:29 -0500 Subject: [PATCH 1/5] made it easier to scroll and resize the material source window. and added the ability to change if the text can be scrolled in the text box --- Source/Editor/Utilities/Utils.cs | 29 ++++++++++++++++------ Source/Engine/UI/GUI/Common/TextBoxBase.cs | 7 +++++- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 5fdaae91a..0cf8238b1 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -738,9 +738,10 @@ namespace FlaxEditor.Utilities var settings = CreateWindowSettings.Default; settings.ActivateWhenFirstShown = true; - settings.AllowMaximize = false; + settings.AllowMaximize = true; settings.AllowMinimize = false; - settings.HasSizingFrame = false; + settings.HasSizingFrame = true; + settings.HasBorder = true; settings.StartPosition = WindowStartPosition.CenterParent; settings.Size = new Float2(500, 600) * (parentWindow?.DpiScale ?? Platform.DpiScale); settings.Parent = parentWindow; @@ -753,12 +754,26 @@ namespace FlaxEditor.Utilities Parent = dialog.GUI, }; copyButton.Clicked += () => Clipboard.Text = source; - - var sourceTextBox = new TextBox(true, 2, copyButton.Bottom + 4, settings.Size.X - 4); - sourceTextBox.Height = settings.Size.Y - sourceTextBox.Top - 2; + + var backPanel = new Panel + { + AnchorPreset = AnchorPresets.StretchAll, + Offsets = new Margin(0, 0, copyButton.Bottom + 4, 0), + ScrollBars = ScrollBars.Both, + IsScrollable = true, + Parent = dialog.GUI, + }; + + var sourceTextBox = new TextBox(true, 0, 0, 0); + sourceTextBox.Parent = backPanel; + sourceTextBox.AnchorPreset = AnchorPresets.HorizontalStretchTop; sourceTextBox.Text = source; - sourceTextBox.Parent = dialog.GUI; - + sourceTextBox.Height = sourceTextBox.TextSize.Y; + sourceTextBox.Width = sourceTextBox.TextSize.X; + sourceTextBox.TextChanged += () => sourceTextBox.Height = sourceTextBox.TextSize.Y; + sourceTextBox.CanScrollMultilineText = false; + sourceTextBox.IsScrollable = true; + dialog.Show(); dialog.Focus(); } diff --git a/Source/Engine/UI/GUI/Common/TextBoxBase.cs b/Source/Engine/UI/GUI/Common/TextBoxBase.cs index d78bd3d6b..50b5b0945 100644 --- a/Source/Engine/UI/GUI/Common/TextBoxBase.cs +++ b/Source/Engine/UI/GUI/Common/TextBoxBase.cs @@ -229,6 +229,11 @@ namespace FlaxEngine.GUI [EditorOrder(529)] public bool ClipText { get; set; } = true; + /// + /// Gets or sets a value indicating whether you can scroll the text in the text box + /// + public bool CanScrollMultilineText { get; set; } = true; + /// /// Gets or sets textbox background color when the control is selected (has focus). /// @@ -1157,7 +1162,7 @@ namespace FlaxEngine.GUI return true; // Multiline scroll - if (IsMultiline && _text.Length != 0) + if (IsMultiline && _text.Length != 0 && CanScrollMultilineText) { TargetViewOffset = Float2.Clamp(_targetViewOffset - new Float2(0, delta * 10.0f), Float2.Zero, new Float2(_targetViewOffset.X, _textSize.Y)); return true; From 6ace0961b3ccdddd2f0806ba31310e7b1184879c Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Fri, 4 Nov 2022 10:57:47 -0500 Subject: [PATCH 2/5] added to resize the x and y on text changed --- Source/Editor/Utilities/Utils.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 0cf8238b1..1b9ebb752 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -770,7 +770,11 @@ namespace FlaxEditor.Utilities sourceTextBox.Text = source; sourceTextBox.Height = sourceTextBox.TextSize.Y; sourceTextBox.Width = sourceTextBox.TextSize.X; - sourceTextBox.TextChanged += () => sourceTextBox.Height = sourceTextBox.TextSize.Y; + sourceTextBox.TextChanged += () => + { + sourceTextBox.Height = sourceTextBox.TextSize.Y; + sourceTextBox.Width = sourceTextBox.TextSize.X; + }; sourceTextBox.CanScrollMultilineText = false; sourceTextBox.IsScrollable = true; From 3ac77121f561e858e99fd0826cbd2c57836d2c65 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Sun, 6 Nov 2022 13:45:06 -0600 Subject: [PATCH 3/5] made readonly text and fixed sizing --- Source/Editor/Utilities/Utils.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 1b9ebb752..269ce07d0 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -769,14 +769,11 @@ namespace FlaxEditor.Utilities sourceTextBox.AnchorPreset = AnchorPresets.HorizontalStretchTop; sourceTextBox.Text = source; sourceTextBox.Height = sourceTextBox.TextSize.Y; - sourceTextBox.Width = sourceTextBox.TextSize.X; - sourceTextBox.TextChanged += () => - { - sourceTextBox.Height = sourceTextBox.TextSize.Y; - sourceTextBox.Width = sourceTextBox.TextSize.X; - }; + sourceTextBox.IsReadOnly = true; sourceTextBox.CanScrollMultilineText = false; sourceTextBox.IsScrollable = true; + + backPanel.SizeChanged += control => { sourceTextBox.Width = (control.Size.X >= sourceTextBox.TextSize.X) ? control.Width : sourceTextBox.TextSize.X + 30; }; dialog.Show(); dialog.Focus(); From c5d1897acf8d9847b04af6dba84cc917691ef144 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 21 Nov 2022 16:10:53 +0100 Subject: [PATCH 4/5] Rename `CanScrollMultilineText` to `IsMultilineScrollable` to match the other properties naming #818 --- Source/Engine/UI/GUI/Common/TextBoxBase.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/Engine/UI/GUI/Common/TextBoxBase.cs b/Source/Engine/UI/GUI/Common/TextBoxBase.cs index 50b5b0945..340459c8f 100644 --- a/Source/Engine/UI/GUI/Common/TextBoxBase.cs +++ b/Source/Engine/UI/GUI/Common/TextBoxBase.cs @@ -230,9 +230,9 @@ namespace FlaxEngine.GUI public bool ClipText { get; set; } = true; /// - /// Gets or sets a value indicating whether you can scroll the text in the text box + /// Gets or sets a value indicating whether you can scroll the text in the text box (eg. with a mouse wheel). /// - public bool CanScrollMultilineText { get; set; } = true; + public bool IsMultilineScrollable { get; set; } = true; /// /// Gets or sets textbox background color when the control is selected (has focus). @@ -1162,7 +1162,7 @@ namespace FlaxEngine.GUI return true; // Multiline scroll - if (IsMultiline && _text.Length != 0 && CanScrollMultilineText) + if (IsMultiline && _text.Length != 0 && IsMultilineScrollable) { TargetViewOffset = Float2.Clamp(_targetViewOffset - new Float2(0, delta * 10.0f), Float2.Zero, new Float2(_targetViewOffset.X, _textSize.Y)); return true; From c514aad9a3b6ff13527e55fec7571a5374b93cf2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Mon, 21 Nov 2022 16:11:35 +0100 Subject: [PATCH 5/5] Code style fix #818 --- Source/Editor/Utilities/Utils.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 269ce07d0..74ffb721b 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -754,7 +754,7 @@ namespace FlaxEditor.Utilities Parent = dialog.GUI, }; copyButton.Clicked += () => Clipboard.Text = source; - + var backPanel = new Panel { AnchorPreset = AnchorPresets.StretchAll, @@ -763,18 +763,18 @@ namespace FlaxEditor.Utilities IsScrollable = true, Parent = dialog.GUI, }; - + var sourceTextBox = new TextBox(true, 0, 0, 0); sourceTextBox.Parent = backPanel; sourceTextBox.AnchorPreset = AnchorPresets.HorizontalStretchTop; sourceTextBox.Text = source; sourceTextBox.Height = sourceTextBox.TextSize.Y; sourceTextBox.IsReadOnly = true; - sourceTextBox.CanScrollMultilineText = false; + sourceTextBox.IsMultilineScrollable = false; sourceTextBox.IsScrollable = true; backPanel.SizeChanged += control => { sourceTextBox.Width = (control.Size.X >= sourceTextBox.TextSize.X) ? control.Width : sourceTextBox.TextSize.X + 30; }; - + dialog.Show(); dialog.Focus(); }