OSDN Git Service

削除したタブの取消時に同名のタブが存在した場合のエラーが適切に処理されない不具合を修正
authorKimura Youichi <kim.upsilon@bucyou.net>
Thu, 15 Jun 2023 12:52:17 +0000 (21:52 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Thu, 15 Jun 2023 13:11:48 +0000 (22:11 +0900)
関連発言タブの削除を取り消した時に同名のタブが存在すると ArgumentOutOfRangeException が発生する問題の修正。
この変更により、タブ削除の取消時に同名のタブがある場合はタブ名の変更を試みずにエラーメッセージを表示するように変更している。

Fixes: 4df2ef94 ("TweenMain.ListTab.TabPagesとTabInformations.Tabsの順序を同期させる")

OpenTween/Models/TabInformations.cs
OpenTween/Properties/Resources.Designer.cs
OpenTween/Properties/Resources.en.resx
OpenTween/Properties/Resources.resx
OpenTween/Resources/ChangeLog.txt
OpenTween/Tween.cs

index 1eac80f..9ef2b85 100644 (file)
@@ -176,16 +176,6 @@ namespace OpenTween.Models
             }
         }
 
-        public void ReplaceTab(TabModel tab)
-        {
-            if (!this.ContainsTab(tab.TabName))
-                throw new ArgumentOutOfRangeException(nameof(tab));
-
-            var index = this.tabs.IndexOf(tab);
-            this.tabs.RemoveAt(index);
-            this.tabs.Insert(index, tab);
-        }
-
         public void MoveTab(int newIndex, TabModel tab)
         {
             if (!this.ContainsTab(tab))
index fce6c37..5079438 100644 (file)
@@ -3033,6 +3033,15 @@ namespace OpenTween.Properties {
         }
         
         /// <summary>
+        ///   削除したタブの取消に失敗しました。「{0}」と同じ名前のタブが存在します に類似しているローカライズされた文字列を検索します。
+        /// </summary>
+        internal static string UndoRemovedTab_DuplicateError {
+            get {
+                return ResourceManager.GetString("UndoRemovedTab_DuplicateError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   **** エラー ログ: {0} **** に類似しているローカライズされた文字列を検索します。
         /// </summary>
         internal static string UnhandledExceptionText1 {
index 447f41c..824d295 100644 (file)
@@ -314,6 +314,7 @@ Do you retry to update status?</value></data>
        <data name="TweenAboutBox_LoadText2"><value>Version {0}</value></data>
        <data name="TweenMain_LoadText1"><value>Failed to add tab.</value></data>
        <data name="Unauthorized"><value>You are not authorized.</value></data>
+       <data name="UndoRemovedTab_DuplicateError"><value>Failed to undo the removed tab. A tab with the same name as "{0}" exists.</value></data>
        <data name="UnhandledExceptionText1"><value>**** Error Log: {0} ****</value></data>
        <data name="UnhandledExceptionText10"><value>Error</value></data>
        <data name="UnhandledExceptionText11"><value>Administrator  authority:</value></data>
index 5bc2119..7b43171 100644 (file)
        <data name="TweenAboutBox_LoadText2"><value>バージョン {0}</value></data>
        <data name="TweenMain_LoadText1"><value>タブ作成エラー</value></data>
        <data name="Unauthorized"><value>You are not authorized.</value></data>
+       <data name="UndoRemovedTab_DuplicateError"><value>削除したタブの取消に失敗しました。「{0}」と同じ名前のタブが存在します</value></data>
        <data name="UnhandledExceptionText1"><value>**** エラー ログ: {0} ****</value></data>
        <data name="UnhandledExceptionText10"><value>エラー発生</value></data>
        <data name="UnhandledExceptionText11"><value>Administrator権限:</value></data>
index af7514d..c794123 100644 (file)
@@ -3,6 +3,7 @@
 ==== Unreleased
  * CHG: アカウント追加時にOpenTweenのAPIキーによる認可を選択肢に追加
  * CHG: 非対応のOSを使用している場合に起動時に警告を表示する
+ * FIX: 削除したタブの取消時に同名のタブが存在した場合のエラーが適切に処理されない不具合を修正
 
 ==== Ver 3.4.0(2023/01/29)
  * NEW: 複数枚の画像を添付する際に画像の削除や順序の変更ができるようになりました
index e570611..9ce5774 100644 (file)
@@ -8699,56 +8699,20 @@ namespace OpenTween
             else
             {
                 var tb = this.statuses.RemovedTab.Pop();
-                if (tb.TabType == MyCommon.TabUsageType.Related)
+                if (this.statuses.ContainsTab(tb.TabName))
                 {
-                    var relatedTab = this.statuses.GetTabByType(MyCommon.TabUsageType.Related);
-                    if (relatedTab != null)
-                    {
-                        // 関連発言なら既存のタブを置き換える
-                        tb.TabName = relatedTab.TabName;
-                        this.ClearTab(tb.TabName, false);
-
-                        this.statuses.ReplaceTab(tb);
-
-                        var tabIndex = this.statuses.Tabs.IndexOf(tb);
-                        this.ListTab.SelectedIndex = tabIndex;
-                    }
-                    else
-                    {
-                        const string TabName = "Related Tweets";
-                        var renamed = TabName;
-                        for (var i = 2; i <= 100; i++)
-                        {
-                            if (!this.statuses.ContainsTab(renamed))
-                                break;
-                            renamed = TabName + i;
-                        }
-                        tb.TabName = renamed;
-
-                        this.statuses.AddTab(tb);
-                        this.AddNewTab(tb, startup: false);
-
-                        var tabIndex = this.statuses.Tabs.Count - 1;
-                        this.ListTab.SelectedIndex = tabIndex;
-                    }
+                    var message = string.Format(Properties.Resources.UndoRemovedTab_DuplicateError, tb.TabName);
+                    MessageBox.Show(this, message, ApplicationSettings.ApplicationName, MessageBoxButtons.OK, MessageBoxIcon.Error);
+                    this.statuses.RemovedTab.Push(tb);
+                    return;
                 }
-                else
-                {
-                    var renamed = tb.TabName;
-                    for (var i = 1; i < int.MaxValue; i++)
-                    {
-                        if (!this.statuses.ContainsTab(renamed))
-                            break;
-                        renamed = tb.TabName + "(" + i + ")";
-                    }
-                    tb.TabName = renamed;
 
-                    this.statuses.AddTab(tb);
-                    this.AddNewTab(tb, startup: false);
+                this.statuses.AddTab(tb);
+                this.AddNewTab(tb, startup: false);
+
+                var tabIndex = this.statuses.Tabs.Count - 1;
+                this.ListTab.SelectedIndex = tabIndex;
 
-                    var tabIndex = this.statuses.Tabs.Count - 1;
-                    this.ListTab.SelectedIndex = tabIndex;
-                }
                 this.SaveConfigsTabs();
             }
         }