@@ -11,7 +11,8 @@ namespace LibVLCSharp.WPF
11
11
internal class ForegroundWindow : Window
12
12
{
13
13
Window ? _wndhost ;
14
- readonly FrameworkElement _bckgnd ;
14
+ readonly FrameworkElement _videoHost ;
15
+ readonly FrameworkElement _backgroundElement ;
15
16
readonly Point _zeroPoint = new Point ( 0 , 0 ) ;
16
17
private readonly Grid _grid = new Grid ( ) ;
17
18
@@ -30,7 +31,7 @@ internal UIElement? OverlayContent
30
31
}
31
32
}
32
33
33
- internal ForegroundWindow ( FrameworkElement background )
34
+ internal ForegroundWindow ( FrameworkElement videoHost , FrameworkElement ? background )
34
35
{
35
36
Title = "LibVLCSharp.WPF" ;
36
37
Height = 300 ;
@@ -42,23 +43,27 @@ internal ForegroundWindow(FrameworkElement background)
42
43
ShowInTaskbar = false ;
43
44
Content = _grid ;
44
45
45
- DataContext = background . DataContext ;
46
+ DataContext = videoHost . DataContext ;
46
47
47
- _bckgnd = background ;
48
- _bckgnd . DataContextChanged += Background_DataContextChanged ;
49
- _bckgnd . Loaded += Background_Loaded ;
50
- _bckgnd . Unloaded += Background_Unloaded ;
48
+ if ( background == null )
49
+ background = videoHost ;
50
+
51
+ _backgroundElement = background ;
52
+ _videoHost = videoHost ;
53
+ _videoHost . DataContextChanged += VideoHost_DataContextChanged ;
54
+ _videoHost . Loaded += VideoHost_Loaded ;
55
+ _videoHost . Unloaded += VideoHost_Unloaded ;
51
56
}
52
57
53
- void Background_DataContextChanged ( object ? sender , DependencyPropertyChangedEventArgs e )
58
+ void VideoHost_DataContextChanged ( object ? sender , DependencyPropertyChangedEventArgs e )
54
59
{
55
60
DataContext = e . NewValue ;
56
61
}
57
62
58
- void Background_Unloaded ( object ? sender , RoutedEventArgs e )
63
+ void VideoHost_Unloaded ( object ? sender , RoutedEventArgs e )
59
64
{
60
- _bckgnd . SizeChanged -= Bckgnd_SizeChanged ;
61
- _bckgnd . LayoutUpdated -= Bckgnd_LayoutUpdated ;
65
+ _backgroundElement . SizeChanged -= Bckgnd_SizeChanged ;
66
+ _backgroundElement . LayoutUpdated -= Bckgnd_LayoutUpdated ;
62
67
if ( _wndhost != null )
63
68
{
64
69
_wndhost . Closing -= Wndhost_Closing ;
@@ -68,14 +73,14 @@ void Background_Unloaded(object? sender, RoutedEventArgs e)
68
73
Hide ( ) ;
69
74
}
70
75
71
- void Background_Loaded ( object ? sender , RoutedEventArgs e )
76
+ void VideoHost_Loaded ( object ? sender , RoutedEventArgs e )
72
77
{
73
78
if ( _wndhost != null && IsVisible )
74
79
{
75
80
return ;
76
81
}
77
82
78
- _wndhost = GetWindow ( _bckgnd ) ;
83
+ _wndhost = GetWindow ( _videoHost ) ;
79
84
Trace . Assert ( _wndhost != null ) ;
80
85
if ( _wndhost == null )
81
86
{
@@ -86,8 +91,8 @@ void Background_Loaded(object? sender, RoutedEventArgs e)
86
91
87
92
_wndhost . Closing += Wndhost_Closing ;
88
93
_wndhost . LocationChanged += Wndhost_LocationChanged ;
89
- _bckgnd . LayoutUpdated += Bckgnd_LayoutUpdated ;
90
- _bckgnd . SizeChanged += Bckgnd_SizeChanged ;
94
+ _backgroundElement . LayoutUpdated += Bckgnd_LayoutUpdated ;
95
+ _backgroundElement . SizeChanged += Bckgnd_SizeChanged ;
91
96
92
97
try
93
98
{
@@ -131,13 +136,13 @@ void AlignWithBackground()
131
136
return ;
132
137
}
133
138
134
- if ( PresentationSource . FromVisual ( _bckgnd ) == null )
139
+ if ( PresentationSource . FromVisual ( _backgroundElement ) == null )
135
140
{
136
141
return ;
137
142
}
138
143
139
- if ( double . IsNaN ( _bckgnd . ActualWidth ) || double . IsNaN ( _bckgnd . ActualHeight ) ||
140
- _bckgnd . ActualWidth == 0 || _bckgnd . ActualHeight == 0 )
144
+ if ( double . IsNaN ( _backgroundElement . ActualWidth ) || double . IsNaN ( _backgroundElement . ActualHeight ) ||
145
+ _backgroundElement . ActualWidth == 0 || _backgroundElement . ActualHeight == 0 )
141
146
{
142
147
return ;
143
148
}
@@ -162,19 +167,19 @@ void AlignWithBackground()
162
167
* The video view itself natively supports scaling.
163
168
*/
164
169
165
- var startLocationFromScreen = _bckgnd . PointToScreen ( _zeroPoint ) ;
170
+ var startLocationFromScreen = _backgroundElement . PointToScreen ( _zeroPoint ) ;
166
171
var startLocationPoint = source . CompositionTarget . TransformFromDevice . Transform ( startLocationFromScreen ) ;
167
- var endLocationFromScreen = _bckgnd . PointToScreen ( new Point ( _bckgnd . ActualWidth , _bckgnd . ActualHeight ) ) ;
172
+ var endLocationFromScreen = _backgroundElement . PointToScreen ( new Point ( _backgroundElement . ActualWidth , _backgroundElement . ActualHeight ) ) ;
168
173
var endLocationPoint = source . CompositionTarget . TransformFromDevice . Transform ( endLocationFromScreen ) ;
169
174
170
175
Left = Math . Min ( startLocationPoint . X , endLocationPoint . X ) ;
171
176
Top = Math . Min ( startLocationPoint . Y , endLocationPoint . Y ) ;
172
177
Width = Math . Abs ( endLocationPoint . X - startLocationPoint . X ) ;
173
178
Height = Math . Abs ( endLocationPoint . Y - startLocationPoint . Y ) ;
174
179
175
- if ( Math . Abs ( Width - _bckgnd . ActualWidth ) + Math . Abs ( Height - _bckgnd . ActualHeight ) > 0.5 )
180
+ if ( Math . Abs ( Width - _backgroundElement . ActualWidth ) + Math . Abs ( Height - _backgroundElement . ActualHeight ) > 0.5 )
176
181
{
177
- ScaleWindowContent ( Width / _bckgnd . ActualWidth , Height / _bckgnd . ActualHeight ) ;
182
+ ScaleWindowContent ( Width / _backgroundElement . ActualWidth , Height / _backgroundElement . ActualHeight ) ;
178
183
}
179
184
}
180
185
@@ -208,9 +213,9 @@ void Wndhost_Closing(object? sender, System.ComponentModel.CancelEventArgs e)
208
213
209
214
Close ( ) ;
210
215
211
- _bckgnd . DataContextChanged -= Background_DataContextChanged ;
212
- _bckgnd . Loaded -= Background_Loaded ;
213
- _bckgnd . Unloaded -= Background_Unloaded ;
216
+ _videoHost . DataContextChanged -= VideoHost_DataContextChanged ;
217
+ _videoHost . Loaded -= VideoHost_Loaded ;
218
+ _videoHost . Unloaded -= VideoHost_Unloaded ;
214
219
}
215
220
216
221
protected override void OnKeyDown ( KeyEventArgs e )
0 commit comments