diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-19 02:38:05 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-19 02:38:05 +0000 |
commit | 015cfd316c32fb760bd3f92716f99fb5b3699624 (patch) | |
tree | 74f6ae5a50abd9b9188a67023672c1c48c87a9c0 | |
parent | 496bf6f14453037f9fccef9629ca967c70d50fdf (diff) | |
download | chromium_src-015cfd316c32fb760bd3f92716f99fb5b3699624.zip chromium_src-015cfd316c32fb760bd3f92716f99fb5b3699624.tar.gz chromium_src-015cfd316c32fb760bd3f92716f99fb5b3699624.tar.bz2 |
Extension popups now stay open and drag while inspector is open, when browser is dragged
BUG=24477
TEST=go to chrome://extensions, turn on dev mode. install an extension with a browser action. right click->inspect popup, then drag browser window. popup should stay open and follow browser window
Review URL: http://codereview.chromium.org/1109006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42070 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/views/extensions/extension_popup.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/chrome/browser/views/extensions/extension_popup.cc b/chrome/browser/views/extensions/extension_popup.cc index 28a2603..0330b9a 100644 --- a/chrome/browser/views/extensions/extension_popup.cc +++ b/chrome/browser/views/extensions/extension_popup.cc @@ -108,6 +108,12 @@ ExtensionPopup::ExtensionPopup(ExtensionHost* host, NULL); #endif + // Keep relative_to_ in frame-relative coordinates to aid in drag + // positioning. + gfx::Point origin = relative_to_.origin(); + views::View::ConvertPointToView(NULL, frame_->GetRootView(), &origin); + relative_to_.set_origin(origin); + border_ = new BubbleBorder; border_->set_arrow_location(arrow_location); @@ -162,8 +168,14 @@ void ExtensionPopup::ResizeToView() { // know our position to do it. gfx::Size new_size = view()->size(); - gfx::Rect rect = GetOuterBounds(relative_to_, new_size); + // Convert rect to screen coordinates. + gfx::Rect rect = relative_to_; gfx::Point origin = rect.origin(); + views::View::ConvertPointToScreen(frame_->GetRootView(), &origin); + rect.set_origin(origin); + + rect = GetOuterBounds(rect, new_size); + origin = rect.origin(); views::View::ConvertPointToView(NULL, frame_->GetRootView(), &origin); if (border_widget_) { // Set the bubble-chrome widget according to the outer bounds of the entire @@ -186,9 +198,7 @@ void ExtensionPopup::ResizeToView() { } void ExtensionPopup::BubbleBrowserWindowMoved(BrowserBubble* bubble) { - if (!closing_) - Close(); - // TODO(rafaelw) -- the border must move as well. + ResizeToView(); } void ExtensionPopup::BubbleBrowserWindowClosing(BrowserBubble* bubble) { |