diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 18:36:37 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-28 18:36:37 +0000 |
commit | d454745055f7ec8c6b5fc158c61f66452d39aabf (patch) | |
tree | 73395f7721bd5a23886a30afcab4ece31d88d866 /webkit/tools/test_shell | |
parent | 917543feedad73ad36a410413f9a5edc8b2e2c27 (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_webview_delegate.h | 1 |
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() { |