Changeset 157984 in webkit
- Timestamp:
- Oct 24, 2013, 6:48:25 PM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/API/mac/WKView.mm (modified) (3 diffs)
-
UIProcess/WebPageProxy.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r157981 r157984 1 2013-10-24 Gavin Barraclough <barraclough@apple.com> 2 3 Coalesce calls to viewStateDidChange 4 https://bugs.webkit.org/show_bug.cgi?id=123307 5 6 Reviewed by Tim Horton. 7 8 * UIProcess/API/mac/WKView.mm: 9 (-[WKView viewDidMoveToWindow]): 10 (-[WKView _windowDidOrderOffScreen:]): 11 (-[WKView _windowDidOrderOnScreen:]): 12 - coalesce calls to viewStateDidChange 13 * UIProcess/WebPageProxy.cpp: 14 (WebKit::WebPageProxy::viewStateDidChange): 15 - handle changes to view visibility & active state in correct order. 16 1 17 2013-10-24 Mark Rowe <mrowe@apple.com> 2 18 -
trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm
r157972 r157984 1924 1924 - (void)viewDidMoveToWindow 1925 1925 { 1926 // We want to make sure to update the active state while hidden, so if the view is about to become visible, we1927 // update the active state first and then make it visible. If the view is about to be hidden, we hide it first and then1928 // update the active state.1929 1926 if ([self window]) { 1930 1927 _data->_windowHasValidBackingStore = NO; 1931 1928 [self doWindowDidChangeScreen]; 1932 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible); 1933 _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 1934 1935 if ([self isDeferringViewInWindowChanges]) { 1936 _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible); 1929 1930 WebPageProxy::ViewStateFlags viewStateChanges = WebPageProxy::WindowIsVisible | WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsVisible; 1931 if ([self isDeferringViewInWindowChanges]) 1937 1932 _data->_viewInWindowChangeWasDeferred = YES; 1938 } else 1939 _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible | WebPageProxy::ViewIsInWindow); 1933 else 1934 viewStateChanges |= WebPageProxy::ViewIsInWindow; 1935 _data->_page->viewStateDidChange(viewStateChanges); 1940 1936 1941 1937 [self _updateWindowAndViewFrames]; … … 1950 1946 [self _accessibilityRegisterUIProcessTokens]; 1951 1947 } else { 1952 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible); 1953 _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible); 1954 1955 if ([self isDeferringViewInWindowChanges]) { 1956 _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 1948 WebPageProxy::ViewStateFlags viewStateChanges = WebPageProxy::WindowIsVisible | WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsVisible; 1949 if ([self isDeferringViewInWindowChanges]) 1957 1950 _data->_viewInWindowChangeWasDeferred = YES; 1958 } else 1959 _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive | WebPageProxy::ViewIsInWindow); 1951 else 1952 viewStateChanges |= WebPageProxy::ViewIsInWindow; 1953 _data->_page->viewStateDidChange(viewStateChanges); 1960 1954 1961 1955 [NSEvent removeMonitor:_data->_flagsChangedEventMonitor]; … … 2021 2015 - (void)_windowDidOrderOffScreen:(NSNotification *)notification 2022 2016 { 2023 // We want to make sure to update the active state while hidden, so since the view is about to be hidden, 2024 // we hide it first and then update the active state. 2025 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible); 2026 _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible); 2027 _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 2017 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible | WebPageProxy::ViewIsVisible | WebPageProxy::ViewWindowIsActive); 2028 2018 } 2029 2019 2030 2020 - (void)_windowDidOrderOnScreen:(NSNotification *)notification 2031 2021 { 2032 // We want to make sure to update the active state while hidden, so since the view is about to become visible, 2033 // we update the active state first and then make it visible. 2034 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible); 2035 _data->_page->viewStateDidChange(WebPageProxy::ViewWindowIsActive); 2036 _data->_page->viewStateDidChange(WebPageProxy::ViewIsVisible); 2022 _data->_page->viewStateDidChange(WebPageProxy::WindowIsVisible | WebPageProxy::ViewIsVisible | WebPageProxy::ViewWindowIsActive); 2037 2023 } 2038 2024 -
trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp
r157972 r157984 1003 1003 m_process->send(Messages::WebPage::SetFocused(m_pageClient->isViewFocused()), m_pageID); 1004 1004 1005 if (flags & ViewWindowIsActive) 1005 // We want to make sure to update the active state while hidden, so if the view is hidden then update the active state 1006 // early (in case it becomes visible), and if the view was visible then update active state later (in case it hides). 1007 bool viewWasVisible = m_isVisible; 1008 1009 if (flags & ViewWindowIsActive && !viewWasVisible) 1006 1010 m_process->send(Messages::WebPage::SetActive(m_pageClient->isViewWindowActive()), m_pageID); 1007 1011 … … 1026 1030 } 1027 1031 } 1032 1033 if (flags & ViewWindowIsActive && viewWasVisible) 1034 m_process->send(Messages::WebPage::SetActive(m_pageClient->isViewWindowActive()), m_pageID); 1028 1035 1029 1036 if (flags & ViewIsInWindow)
Note:
See TracChangeset
for help on using the changeset viewer.