Changeset 86995 in webkit


Ignore:
Timestamp:
May 20, 2011 3:51:14 PM (13 years ago)
Author:
aestes@apple.com
Message:

2011-05-20 Andy Estes <aestes@apple.com>

Reviewed by Darin Adler.

WebView loses firstResponder status when entering full-screen mode.
https://bugs.webkit.org/show_bug.cgi?id=61153

No test possible via DRT. Add a manual test instead.

  • manual-tests/full-screen-keypress.html: Added.

2011-05-20 Andy Estes <aestes@apple.com>

Reviewed by Darin Adler.

WebView loses firstResponder status when entering full-screen mode.
https://bugs.webkit.org/show_bug.cgi?id=61153

  • WebKit.xcodeproj/project.pbxproj: Export WebNSWindowExtras.h as a private header so that WebKit2 can include it.

2011-05-20 Andy Estes <aestes@apple.com>

Reviewed by Darin Adler.

WebView loses firstResponder status when entering full-screen mode.
https://bugs.webkit.org/show_bug.cgi?id=61153

  • Misc/WebNSWindowExtras.h:
  • Misc/WebNSWindowExtras.m: (-[NSWindow makeResponder:firstResponderIfDescendantOfView:]): Add a convenience method to NSWindow that makes the given NSResponder first responder only if it is a descendant of the given view.
  • WebView/WebFullScreenController.mm: (-[WebFullScreenController windowDidEnterFullscreen:]): If the WebView was a descendant of the browser window's first responder when entering full-screen mode, set the full-screen window's first responder to that same NSResponder. (-[WebFullScreenController exitFullscreen]): Do the reverse of what is done in windowDidEnterFullscreen:.

2011-05-20 Andy Estes <aestes@apple.com>

Reviewed by Darin Adler.

WebView loses firstResponder status when entering full-screen mode.
https://bugs.webkit.org/show_bug.cgi?id=61153

  • UIProcess/mac/WKFullScreenWindowController.mm: (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): If the WebView was a descendant of the browser window's first responder when entering full-screen mode, set the full-screen window's first responder to that same NSResponder. (-[WKFullScreenWindowController beganExitFullScreenAnimation]): Do the reverse of what is done in finishedEnterFullScreenAnimation:.
Location:
trunk/Source
Files:
1 added
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r86992 r86995  
     12011-05-20  Andy Estes  <aestes@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        WebView loses firstResponder status when entering full-screen mode.
     6        https://bugs.webkit.org/show_bug.cgi?id=61153
     7
     8        No test possible via DRT. Add a manual test instead.
     9
     10        * manual-tests/full-screen-keypress.html: Added.
     11
    1122011-05-20  Jeremy Noble  <jer.noble@apple.com>
    213
  • trunk/Source/WebKit/ChangeLog

    r86639 r86995  
     12011-05-20  Andy Estes  <aestes@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        WebView loses firstResponder status when entering full-screen mode.
     6        https://bugs.webkit.org/show_bug.cgi?id=61153
     7
     8        * WebKit.xcodeproj/project.pbxproj: Export WebNSWindowExtras.h as a
     9        private header so that WebKit2 can include it.
     10
    1112011-05-16  Dan Bernstein  <mitz@apple.com>
    212
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r86639 r86995  
    171171                939810230824BF01008DF038 /* WebNSPasteboardExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    172172                939810240824BF01008DF038 /* WebNSViewExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = F508946902B71D59018A9CD4 /* WebNSViewExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    173                 939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 9345DDAE0365FB27008635CE /* WebNSWindowExtras.h */; };
     173                939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 9345DDAE0365FB27008635CE /* WebNSWindowExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
    174174                939810270824BF01008DF038 /* WebStringTruncator.h in Headers */ = {isa = PBXBuildFile; fileRef = F59668C802AD2923018635CA /* WebStringTruncator.h */; settings = {ATTRIBUTES = (Private, ); }; };
    175175                939810290824BF01008DF038 /* WebAuthenticationPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = F8CA15B5029A39D901000122 /* WebAuthenticationPanel.h */; };
     
    14691469                                14D8252F0AF955090004F057 /* WebChromeClient.h in Headers */,
    14701470                                939810490824BF01008DF038 /* WebClipView.h in Headers */,
     1471                                939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */,
    14711472                                065AD5A30B0C32C7005A2B1D /* WebContextMenuClient.h in Headers */,
    14721473                                939810160824BF01008DF038 /* WebCoreStatistics.h in Headers */,
     
    15821583                                65E0F9E608500F23007E5CB9 /* WebNSUserDefaultsExtras.h in Headers */,
    15831584                                939810240824BF01008DF038 /* WebNSViewExtras.h in Headers */,
    1584                                 939810250824BF01008DF038 /* WebNSWindowExtras.h in Headers */,
    15851585                                9398102A0824BF01008DF038 /* WebPanelAuthenticationHandler.h in Headers */,
    15861586                                37B6FB4E1063530C000FDB3B /* WebPDFDocumentExtras.h in Headers */,
  • trunk/Source/WebKit/mac/ChangeLog

    r86988 r86995  
     12011-05-20  Andy Estes  <aestes@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        WebView loses firstResponder status when entering full-screen mode.
     6        https://bugs.webkit.org/show_bug.cgi?id=61153
     7
     8        * Misc/WebNSWindowExtras.h:
     9        * Misc/WebNSWindowExtras.m:
     10        (-[NSWindow makeResponder:firstResponderIfDescendantOfView:]): Add a
     11        convenience method to NSWindow that makes the given NSResponder first
     12        responder only if it is a descendant of the given view.
     13        * WebView/WebFullScreenController.mm:
     14        (-[WebFullScreenController windowDidEnterFullscreen:]): If the WebView
     15        was a descendant of the browser window's first responder when entering
     16        full-screen mode, set the full-screen window's first responder to that
     17        same NSResponder.
     18        (-[WebFullScreenController exitFullscreen]): Do the reverse of what is
     19        done in windowDidEnterFullscreen:.
     20
    1212011-05-20  Enrica Casucci  <enrica@apple.com>
    222
  • trunk/Source/WebKit/mac/Misc/WebNSWindowExtras.h

    r18704 r86995  
    3131@interface NSWindow (WebExtras)
    3232// centers "visually", putting 1/3 of the remaining space above, and 2/3 below
    33 - (void)centerOverMainWindow;
     33- (void)centerOverMainWindow;
     34- (void)makeResponder:(NSResponder *)responder firstResponderIfDescendantOfView:(NSView *)view;
    3435@end
  • trunk/Source/WebKit/mac/Misc/WebNSWindowExtras.m

    r30660 r86995  
    5050}
    5151
     52- (void)makeResponder:(NSResponder *)responder firstResponderIfDescendantOfView:(NSView *)view
     53{
     54    if ([responder isKindOfClass:[NSView class]] && [(id)responder isDescendantOf:view])
     55        [self makeFirstResponder:responder];
     56}
     57
    5258@end
  • trunk/Source/WebKit/mac/WebView/WebFullScreenController.mm

    r86107 r86995  
    2828#import "WebFullScreenController.h"
    2929
     30#import "WebNSWindowExtras.h"
    3031#import "WebPreferencesPrivate.h"
    3132#import "WebWindowAnimation.h"
     
    274275        WebView *webView = [self webView];
    275276        NSWindow *webWindow = [webView window];
     277        NSResponder *webWindowFirstResponder = [webWindow firstResponder];
    276278
    277279        // Do not swap the placeholder into place if already is in a window,
     
    285287           
    286288            [[[self window] contentView] addSubview:webView];
     289            [[self window] makeResponder:webWindowFirstResponder firstResponderIfDescendantOfView:webView];
    287290            [webView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
    288291            [webView setFrame:[(NSView *)[[self window] contentView] bounds]];
     
    524527        // Move the webView back to its own native window:
    525528        WebView* webView = [self webView];
     529        NSResponder *fullScreenWindowFirstResponder = [[self window] firstResponder];
    526530        [webView setFrame:[_placeholderView frame]];
    527531        [webView setAutoresizingMask:[_placeholderView autoresizingMask]];
    528532        [webView removeFromSuperview];
    529533        [[_placeholderView superview] replaceSubview:_placeholderView with:webView];
     534        [[webView window] makeResponder:fullScreenWindowFirstResponder firstResponderIfDescendantOfView:webView];
    530535       
    531536        NSWindow *webWindow = [[self webView] window];
  • trunk/Source/WebKit2/ChangeLog

    r86992 r86995  
     12011-05-20  Andy Estes  <aestes@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        WebView loses firstResponder status when entering full-screen mode.
     6        https://bugs.webkit.org/show_bug.cgi?id=61153
     7
     8        * UIProcess/mac/WKFullScreenWindowController.mm:
     9        (-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): If
     10        the WebView was a descendant of the browser window's first responder
     11        when entering full-screen mode, set the full-screen window's first
     12        responder to that same NSResponder.
     13        (-[WKFullScreenWindowController beganExitFullScreenAnimation]): Do the
     14        reverse of what is done in finishedEnterFullScreenAnimation:.
     15
    1162011-05-20  Jeremy Noble  <jer.noble@apple.com>
    217
  • trunk/Source/WebKit2/UIProcess/mac/WKFullScreenWindowController.mm

    r86992 r86995  
    4040#import <WebCore/FloatRect.h>
    4141#import <WebCore/IntRect.h>
     42#import <WebKit/WebNSWindowExtras.h>
    4243#import <WebKitSystemInterface.h>
    4344
     
    250251        if (!_webViewPlaceholder)
    251252            _webViewPlaceholder.adoptNS([[NSView alloc] init]);
     253        NSResponder *webWindowFirstResponder = [[_webView window] firstResponder];
    252254        [self _swapView:_webView with:_webViewPlaceholder.get()];
    253255       
     
    256258        [contentView addSubview:_webView positioned:NSWindowBelow relativeTo:nil];
    257259        [_webView setFrame:[contentView bounds]];
     260        [[self window] makeResponder:webWindowFirstResponder firstResponderIfDescendantOfView:_webView];
    258261       
    259262        NSWindow *webWindow = [_webViewPlaceholder.get() window];
     
    299302    // Swap the webView back into its original position:
    300303    if ([_webView window] == [self window]) {
     304        NSResponder *fullScreenWindowFirstResponder = [[self _fullScreenWindow] firstResponder];
    301305#if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
    302306        // Work around a bug in AppKit <rdar://problem/9443385> where moving a
     
    310314#endif
    311315        [self _swapView:_webViewPlaceholder.get() with:_webView];
     316        [[_webView window] makeResponder:fullScreenWindowFirstResponder firstResponderIfDescendantOfView:_webView];
    312317        NSWindow* webWindow = [_webView window];
    313318#if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
Note: See TracChangeset for help on using the changeset viewer.