Skip to content

Commit f2fcaf4

Browse files
committed
MediaViewerWebBrowserDialogに軽量ビューアー版と同様のキーバインドを追加
1 parent 8ee3d93 commit f2fcaf4

File tree

4 files changed

+58
-2
lines changed

4 files changed

+58
-2
lines changed

OpenTween/MediaHandler.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,10 @@ public void OpenMediaInWebBrowserViewer(IWin32Window owner, ThumbnailInfo[] thum
9191
viewer.SelectMedia(displayIndex);
9292

9393
using (var viewerDialog = new MediaViewerWebBrowserDialog(viewer))
94+
{
95+
viewerDialog.OpenInBrowser = this.OpenInBrowser;
9496
viewerDialog.ShowDialog(owner);
97+
}
9598
}
9699
}
97100
}

OpenTween/MediaViewerWebBrowserDialog.Designer.cs

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

OpenTween/MediaViewerWebBrowserDialog.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,17 @@
2020
// Boston, MA 02110-1301, USA.
2121

2222
using OpenTween.Models;
23+
using System;
2324
using System.ComponentModel;
25+
using System.Threading.Tasks;
26+
using System.Windows.Forms;
2427

2528
namespace OpenTween
2629
{
2730
public partial class MediaViewerWebBrowserDialog : OTBaseForm
2831
{
32+
public Func<string, Task> OpenInBrowser;
33+
2934
private readonly MediaViewerWebBrowser model;
3035

3136
public MediaViewerWebBrowserDialog(MediaViewerWebBrowser model)
@@ -81,6 +86,36 @@ private void UpdateTitle()
8186
}
8287

8388
private void UpdateHTML()
84-
=> this.webBrowser.DocumentText = this.model.DisplayHTML;
89+
{
90+
using (ControlTransaction.Update(this.webBrowser))
91+
this.webBrowser.DocumentText = this.model.DisplayHTML;
92+
}
93+
94+
private async void WebBrowser_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
95+
{
96+
e.IsInputKey = true;
97+
98+
switch (e.KeyData)
99+
{
100+
case Keys.Up:
101+
case Keys.Left:
102+
this.model.SelectPreviousMedia();
103+
break;
104+
case Keys.Down:
105+
case Keys.Right:
106+
this.model.SelectNextMedia();
107+
break;
108+
case Keys.Enter:
109+
this.Close();
110+
await this.OpenInBrowser?.Invoke(this.model.DisplayMedia.MediaPageUrl);
111+
break;
112+
case Keys.Escape:
113+
this.Close();
114+
break;
115+
default:
116+
e.IsInputKey = false;
117+
break;
118+
}
119+
}
85120
}
86121
}

OpenTween/Models/MediaViewerWebBrowser.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,24 @@ public void SelectMedia(int displayIndex)
7272
this.DisplayHTML = this.CreateDocument();
7373
}
7474

75+
public void SelectPreviousMedia()
76+
{
77+
var currentIndex = this.DisplayMediaIndex;
78+
if (currentIndex == 0)
79+
return;
80+
81+
this.SelectMedia(currentIndex - 1);
82+
}
83+
84+
public void SelectNextMedia()
85+
{
86+
var currentIndex = this.DisplayMediaIndex;
87+
if (currentIndex == this.MediaItems.Length - 1)
88+
return;
89+
90+
this.SelectMedia(currentIndex + 1);
91+
}
92+
7593
public void SetBackColor(ColorRGB color)
7694
{
7795
this.BackColor = color;

0 commit comments

Comments
 (0)