OSDN Git Service

IMediaItem.AltTextのセットをValidatingイベント内で行う
authorKimura Youichi <kim.upsilon@bucyou.net>
Wed, 22 Jun 2016 13:40:15 +0000 (22:40 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Wed, 22 Jun 2016 16:31:07 +0000 (01:31 +0900)
Fixes: 72840e4e ("MediaSelectorに代替テキストの入力欄を追加")

OpenTween.Tests/MediaSelectorTest.cs
OpenTween/MediaSelector.Designer.cs
OpenTween/MediaSelector.cs

index f530d34..46c5c60 100644 (file)
@@ -291,14 +291,17 @@ namespace OpenTween
                 // 1 ページ目
                 mediaSelector.ImagePageCombo.SelectedIndex = 0;
                 mediaSelector.AlternativeTextBox.Text = "Page 1";
+                mediaSelector.ValidateChildren();
 
                 // 2 ページ目
                 mediaSelector.ImagePageCombo.SelectedIndex = 1;
                 mediaSelector.AlternativeTextBox.Text = "Page 2";
+                mediaSelector.ValidateChildren();
 
                 // 3 ページ目 (新規ページ)
                 mediaSelector.ImagePageCombo.SelectedIndex = 2;
                 mediaSelector.AlternativeTextBox.Text = "Page 3";
+                mediaSelector.ValidateChildren();
 
                 mediaSelector.ImagePageCombo.SelectedIndex = 0;
                 Assert.Equal("Page 1", mediaSelector.AlternativeTextBox.Text);
index d4c3a84..fe2c34d 100644 (file)
             // 
             resources.ApplyResources(this.AlternativeTextBox, "AlternativeTextBox");
             this.AlternativeTextBox.Name = "AlternativeTextBox";
-            this.AlternativeTextBox.TextChanged += new System.EventHandler(this.AlternativeTextBox_TextChanged);
+            this.AlternativeTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.AlternativeTextBox_Validating);
             // 
             // AlternativeTextLabel
             // 
index 2a3b97d..623791f 100644 (file)
@@ -428,7 +428,7 @@ namespace OpenTween
             }
         }
 
-        private void ValidateNewFileMediaItem(string path, bool noMsgBox)
+        private void ValidateNewFileMediaItem(string path, string altText, bool noMsgBox)
         {
             var media = (SelectedMedia)ImagePageCombo.SelectedItem;
             var item = media.Item;
@@ -439,10 +439,13 @@ namespace OpenTween
                 media.Item = null;
 
                 item = CreateFileMediaItem(path, noMsgBox);
-                item.AltText = AlternativeTextBox.Text;
             }
 
+            if (item != null)
+                item.AltText = altText;
+
             ImagefilePathText.Text = path;
+            AlternativeTextBox.Text = altText;
             ImageFromSelectedFile(item, noMsgBox);
         }
 
@@ -472,7 +475,7 @@ namespace OpenTween
                 this.FilePickDialogClosed?.Invoke(this, EventArgs.Empty);
             }
 
-            ValidateNewFileMediaItem(FilePickDialog.FileName, false);
+            ValidateNewFileMediaItem(FilePickDialog.FileName, AlternativeTextBox.Text.Trim(), false);
         }
 
         private void ImagefilePathText_Validating(object sender, CancelEventArgs e)
@@ -483,7 +486,7 @@ namespace OpenTween
                 return;
             }
 
-            ValidateNewFileMediaItem(ImagefilePathText.Text.Trim(), false);
+            ValidateNewFileMediaItem(ImagefilePathText.Text.Trim(), AlternativeTextBox.Text.Trim(), false);
         }
 
         private void ImageFromSelectedFile(IMediaItem item, bool noMsgBox)
@@ -840,13 +843,11 @@ namespace OpenTween
             ValidateSelectedImagePage();
         }
 
-        private void AlternativeTextBox_TextChanged(object sender, EventArgs e)
+        private void AlternativeTextBox_Validating(object sender, CancelEventArgs e)
         {
-            var selectedMedia = (SelectedMedia)this.ImagePageCombo.SelectedItem;
-            if (selectedMedia.Item == null)
-                return;
-
-            selectedMedia.Item.AltText = this.AlternativeTextBox.Text;
+            var imageFilePath = this.ImagefilePathText.Text.Trim();
+            var altText = this.AlternativeTextBox.Text.Trim();
+            this.ValidateNewFileMediaItem(imageFilePath, altText, noMsgBox: false);
         }
     }
 }