@@ -230,6 +230,8 @@ private class MessageFilter : IMessageFilter {
230230 private readonly EventHandler back ;
231231 private readonly EventHandler forward ;
232232
233+ public bool ProcessedCmdKeyFullscreen { get ; set ; } = false ;
234+
233235 public MessageFilter ( EventHandler stopExitFullscreenLabelTimer , EventHandler back , EventHandler forward ) {
234236 this . stopExitFullscreenLabelTimer = stopExitFullscreenLabelTimer ;
235237 this . back = back ;
@@ -274,6 +276,16 @@ public bool PreFilterMessage(ref Message m) {
274276 // mouse buttons shouldn't navigate both the
275277 // main and popup windows
276278 switch ( m . Msg ) {
279+ case WM_KEYDOWN :
280+ case WM_SYSKEYDOWN :
281+ ProcessedCmdKeyFullscreen = false ;
282+ return false ;
283+ case WM_KEYUP :
284+ case WM_SYSKEYUP :
285+ if ( ! ProcessedCmdKeyFullscreen ) {
286+ OnStopExitFullscreenLabelTimer ( EventArgs . Empty ) ;
287+ }
288+ return false ;
277289 case WM_LBUTTONUP :
278290 case WM_RBUTTONUP :
279291 case WM_MBUTTONUP :
@@ -620,7 +632,9 @@ private void WebBrowserMode_FormClosing(object sender, FormClosingEventArgs e) {
620632 }
621633
622634 private void WebBrowserMode_Activated ( object sender , EventArgs e ) {
623- Application . AddMessageFilter ( messageFilter ) ;
635+ if ( messageFilter != null ) {
636+ Application . AddMessageFilter ( messageFilter ) ;
637+ }
624638
625639 if ( ! IsHandleCreated || Handle == IntPtr . Zero ) {
626640 return ;
@@ -640,7 +654,9 @@ private void WebBrowserMode_Activated(object sender, EventArgs e) {
640654 }
641655
642656 private void WebBrowserMode_Deactivate ( object sender , EventArgs e ) {
643- Application . RemoveMessageFilter ( messageFilter ) ;
657+ if ( messageFilter != null ) {
658+ Application . RemoveMessageFilter ( messageFilter ) ;
659+ }
644660
645661 if ( ! IsHandleCreated || Handle == IntPtr . Zero ) {
646662 return ;
@@ -1011,6 +1027,10 @@ protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
10111027 return true ;
10121028 case Keys . F11 :
10131029 case Keys . Alt | Keys . Enter :
1030+ if ( messageFilter != null ) {
1031+ messageFilter . ProcessedCmdKeyFullscreen = true ;
1032+ }
1033+
10141034 BrowserFullscreen ( ) ;
10151035 return true ;
10161036 }
0 commit comments