summaryrefslogtreecommitdiffstats
path: root/webkit/tools/test_shell
diff options
context:
space:
mode:
authorerg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-28 18:36:37 +0000
committererg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2008-08-28 18:36:37 +0000
commitd454745055f7ec8c6b5fc158c61f66452d39aabf (patch)
tree73395f7721bd5a23886a30afcab4ece31d88d866 /webkit/tools/test_shell
parent917543feedad73ad36a410413f9a5edc8b2e2c27 (diff)
downloadchromium_src-d454745055f7ec8c6b5fc158c61f66452d39aabf.zip
chromium_src-d454745055f7ec8c6b5fc158c61f66452d39aabf.tar.gz
chromium_src-d454745055f7ec8c6b5fc158c61f66452d39aabf.tar.bz2
The GetWindowRect must return the rect of the container HWND; not the actual window rect. The usage of GetWindowRect in the ChromeClientImpl::windowRect() function is erroneous, and my modification of GetWindowRect to return the HWND's root ancestor rect broke drop down combo boxes and other embeded controls.
So instead, add a GetRootWindowRect which gets the root anncestor of the HWND's rect and use it in ChromeClientImpl::windowRect(). BUG=1344367,1186573,1334505 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1496 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/tools/test_shell')
-rw-r--r--webkit/tools/test_shell/test_webview_delegate.cc10
-rw-r--r--webkit/tools/test_shell/test_webview_delegate.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/webkit/tools/test_shell/test_webview_delegate.cc b/webkit/tools/test_shell/test_webview_delegate.cc
index 21dc169..55f9285 100644
--- a/webkit/tools/test_shell/test_webview_delegate.cc
+++ b/webkit/tools/test_shell/test_webview_delegate.cc
@@ -741,6 +741,16 @@ void TestWebViewDelegate::SetWindowRect(WebWidget* webwidget,
}
}
+void TestWebViewDelegate::GetRootWindowRect(WebWidget* webwidget,
+ gfx::Rect* out_rect) {
+ if (WebWidgetHost* host = GetHostForWidget(webwidget)) {
+ RECT rect;
+ HWND root_window = ::GetAncestor(host->window_handle(), GA_ROOT);
+ ::GetWindowRect(root_window, &rect);
+ *out_rect = gfx::Rect(rect);
+ }
+}
+
void TestWebViewDelegate::DidMove(WebWidget* webwidget,
const WebPluginGeometry& move) {
WebPluginDelegateImpl::MoveWindow(
diff --git a/webkit/tools/test_shell/test_webview_delegate.h b/webkit/tools/test_shell/test_webview_delegate.h
index a47081b..c42567a 100644
--- a/webkit/tools/test_shell/test_webview_delegate.h
+++ b/webkit/tools/test_shell/test_webview_delegate.h
@@ -194,6 +194,7 @@ class TestWebViewDelegate : public base::RefCounted<TestWebViewDelegate>, public
const WebCursor& cursor);
virtual void GetWindowRect(WebWidget* webwidget, gfx::Rect* rect);
virtual void SetWindowRect(WebWidget* webwidget, const gfx::Rect& rect);
+ virtual void GetRootWindowRect(WebWidget *,gfx::Rect *);
virtual void DidMove(WebWidget* webwidget, const WebPluginGeometry& move);
virtual void RunModal(WebWidget* webwidget);
virtual void AddRef() {