Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: third_party/WebKit/Source/web/WebPagePopupImpl.cpp

Issue 1894333002: Make WebWidget::resize early out if the size doesn't change. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/web/WebPagePopupImpl.cpp
diff --git a/third_party/WebKit/Source/web/WebPagePopupImpl.cpp b/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
index dad265fc393357d17baebcf6b1ce856627f3221c..5f2858824148b97950fee70b2efc4bd910dc4915 100644
--- a/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
+++ b/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
@@ -91,15 +91,16 @@ private:
IntRect windowRect() override
{
- return m_popup->m_windowRectInScreen;
+ return m_popup->windowRectInScreen();
}
IntRect viewportToScreen(const IntRect& rect, const Widget* widget) const override
{
WebRect rectInScreen(rect);
+ WebRect windowRect = m_popup->windowRectInScreen();
m_popup->widgetClient()->convertViewportToWindow(&rectInScreen);
- rectInScreen.x += m_popup->m_windowRectInScreen.x;
- rectInScreen.y += m_popup->m_windowRectInScreen.y;
+ rectInScreen.x += windowRect.x;
+ rectInScreen.y += windowRect.y;
return rectInScreen;
}
@@ -337,8 +338,7 @@ AXObject* WebPagePopupImpl::rootAXObject()
void WebPagePopupImpl::setWindowRect(const IntRect& rectInScreen)
{
- m_windowRectInScreen = rectInScreen;
- widgetClient()->setWindowRect(m_windowRectInScreen);
+ widgetClient()->setWindowRect(rectInScreen);
}
void WebPagePopupImpl::setRootGraphicsLayer(GraphicsLayer* layer)
@@ -416,7 +416,15 @@ void WebPagePopupImpl::resize(const WebSize& newSizeInViewport)
WebRect newSize(0, 0, newSizeInViewport.width, newSizeInViewport.height);
widgetClient()->convertViewportToWindow(&newSize);
- setWindowRect(WebRect(m_windowRectInScreen.x, m_windowRectInScreen.y, newSize.width, newSize.height));
+ WebRect windowRect = windowRectInScreen();
+
+ if (windowRect.width != newSize.width
+ && windowRect.height != newSize.height) {
+ windowRect.width = newSize.width;
+ windowRect.height = newSize.height;
+ setWindowRect(windowRect);
+ }
+
if (m_page) {
toLocalFrame(m_page->mainFrame())->view()->resize(newSizeInViewport);
m_page->frameHost().visualViewport().setSize(newSizeInViewport);
@@ -467,7 +475,8 @@ bool WebPagePopupImpl::isViewportPointInWindow(int x, int y)
{
WebRect pointInWindow(x, y, 0, 0);
widgetClient()->convertViewportToWindow(&pointInWindow);
- return IntRect(0, 0, m_windowRectInScreen.width, m_windowRectInScreen.height).contains(IntPoint(pointInWindow.x, pointInWindow.y));
+ WebRect windowRect = windowRectInScreen();
+ return IntRect(0, 0, windowRect.width, windowRect.height).contains(IntPoint(pointInWindow.x, pointInWindow.y));
}
WebInputEventResult WebPagePopupImpl::handleInputEvent(const WebInputEvent& event)
@@ -547,8 +556,9 @@ void WebPagePopupImpl::compositeAndReadbackAsync(WebCompositeAndReadbackAsyncCal
WebPoint WebPagePopupImpl::positionRelativeToOwner()
{
- WebRect windowRect = m_webView->client()->rootWindowRect();
- return WebPoint(m_windowRectInScreen.x - windowRect.x, m_windowRectInScreen.y - windowRect.y);
+ WebRect rootWindowRect = m_webView->client()->rootWindowRect();
+ WebRect windowRect = windowRectInScreen();
+ return WebPoint(windowRect.x - rootWindowRect.x, windowRect.y - rootWindowRect.y);
}
void WebPagePopupImpl::cancel()
@@ -557,6 +567,11 @@ void WebPagePopupImpl::cancel()
m_popupClient->closePopup();
}
+WebRect WebPagePopupImpl::windowRectInScreen() const
+{
+ return widgetClient()->windowRect();
+}
+
// WebPagePopup ----------------------------------------------------------------
WebPagePopup* WebPagePopup::create(WebWidgetClient* client)
« content/renderer/render_widget.cc ('K') | « third_party/WebKit/Source/web/WebPagePopupImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698