From d9b59e20bd8e759d3ab3666b4e983e0e6be4ec0e Mon Sep 17 00:00:00 2001 From: Kimura Youichi Date: Fri, 15 Dec 2023 03:35:50 +0900 Subject: [PATCH] =?UTF-8?q?=E3=80=8CURL=E3=81=8B=E3=82=89=E3=81=AE?= =?UTF-8?q?=E5=85=A8=E8=A7=92=E6=96=87=E5=AD=97=E5=88=97=E3=81=AE=E5=88=87?= =?UTF-8?q?=E3=82=8A=E9=9B=A2=E3=81=97=E3=80=8D=E3=81=AE=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=B1=E3=83=BC=E3=82=B9=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenTween.Tests/TweenMainTest.cs | 20 ++++++++++++++++++++ OpenTween/Tween.cs | 20 +++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/OpenTween.Tests/TweenMainTest.cs b/OpenTween.Tests/TweenMainTest.cs index 3d857c2a4..c767ba5c4 100644 --- a/OpenTween.Tests/TweenMainTest.cs +++ b/OpenTween.Tests/TweenMainTest.cs @@ -81,6 +81,26 @@ public void FormatStatusText_NewLineInDMTest() }); } + [WinFormsFact] + public void FormatStatusText_SeparateUrlAndFullwidthCharacter_EnabledTest() + { + this.UsingTweenMain((tweenMain, context) => + { + tweenMain.UpdateSeparateUrlAndFullwidthCharacter(true); + Assert.Equal("https://example.com/ あああ", tweenMain.FormatStatusText("https://example.com/あああ")); + }); + } + + [WinFormsFact] + public void FormatStatusText_SeparateUrlAndFullwidthCharacter_DisabledTest() + { + this.UsingTweenMain((tweenMain, context) => + { + tweenMain.UpdateSeparateUrlAndFullwidthCharacter(false); + Assert.Equal("https://example.com/あああ", tweenMain.FormatStatusText("https://example.com/あああ")); + }); + } + [WinFormsFact] public void FormatStatusText_ReplaceFullwidthSpace_EnabledTest() { diff --git a/OpenTween/Tween.cs b/OpenTween/Tween.cs index 080f49162..420091b07 100644 --- a/OpenTween/Tween.cs +++ b/OpenTween/Tween.cs @@ -208,7 +208,7 @@ public partial class TweenMain : OTBaseForm private readonly DebounceTimer saveConfigDebouncer; private readonly string recommendedStatusFooter; - private bool urlMultibyteSplit = false; + private bool separateUrlAndFullwidthCharacter = false; private bool preventSmsCommand = true; // URL短縮のUndo用 @@ -3538,7 +3538,7 @@ internal string FormatStatusText(string statusText, Keys modifierKeys) { statusText = statusText.Replace("\r\n", "\n"); - if (this.urlMultibyteSplit) + if (this.separateUrlAndFullwidthCharacter) { // URLと全角文字の切り離し statusText = Regex.Replace(statusText, @"https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#^]+", "$& "); @@ -8196,7 +8196,17 @@ private void MenuItemHelp_DropDownOpening(object sender, EventArgs e) } private void UrlMultibyteSplitMenuItem_CheckedChanged(object sender, EventArgs e) - => this.urlMultibyteSplit = ((ToolStripMenuItem)sender).Checked; + => this.UpdateSeparateUrlAndFullwidthCharacter(((ToolStripMenuItem)sender).Checked); + + internal void UpdateSeparateUrlAndFullwidthCharacter(bool value) + { + if (this.separateUrlAndFullwidthCharacter == value) + return; + + this.separateUrlAndFullwidthCharacter = value; + this.UrlMultibyteSplitMenuItem.Checked = value; + this.UrlMultibyteSplitPullDownMenuItem.Checked = value; + } private void PreventSmsCommandMenuItem_CheckedChanged(object sender, EventArgs e) => this.preventSmsCommand = ((ToolStripMenuItem)sender).Checked; @@ -8218,7 +8228,7 @@ private void FocusLockMenuItem_CheckedChanged(object sender, EventArgs e) private void PostModeMenuItem_DropDownOpening(object sender, EventArgs e) { - this.UrlMultibyteSplitMenuItem.Checked = this.urlMultibyteSplit; + this.UrlMultibyteSplitMenuItem.Checked = this.separateUrlAndFullwidthCharacter; this.PreventSmsCommandMenuItem.Checked = this.preventSmsCommand; this.UrlAutoShortenMenuItem.Checked = this.settings.Common.UrlConvertAuto; this.IdeographicSpaceToSpaceMenuItem.Checked = this.settings.Common.WideSpaceConvert; @@ -8228,7 +8238,7 @@ private void PostModeMenuItem_DropDownOpening(object sender, EventArgs e) private void ContextMenuPostMode_Opening(object sender, CancelEventArgs e) { - this.UrlMultibyteSplitPullDownMenuItem.Checked = this.urlMultibyteSplit; + this.UrlMultibyteSplitPullDownMenuItem.Checked = this.separateUrlAndFullwidthCharacter; this.PreventSmsCommandPullDownMenuItem.Checked = this.preventSmsCommand; this.UrlAutoShortenPullDownMenuItem.Checked = this.settings.Common.UrlConvertAuto; this.IdeographicSpaceToSpacePullDownMenuItem.Checked = this.settings.Common.WideSpaceConvert;