diff options
author | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-16 14:57:25 +0000 |
---|---|---|
committer | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-16 14:57:25 +0000 |
commit | ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953 (patch) | |
tree | e3910fea8522ea0a6e34d30b40a0a659c4a9d93f /chrome/renderer | |
parent | 357ff69d8564f44ffb7eb8ff3214d9cf7885dd63 (diff) | |
download | chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.zip chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.gz chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.bz2 |
Popup width and height are now dynamic.
BUG=24471
TEST=none
Review URL: http://codereview.chromium.org/273046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29274 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_view.cc | 32 | ||||
-rw-r--r-- | chrome/renderer/render_view.h | 12 |
2 files changed, 25 insertions, 19 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index dce72c2..d2130c6 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -227,8 +227,7 @@ RenderView::RenderView(RenderThreadBase* render_thread, popup_notification_visible_(false), spelling_panel_visible_(false), delay_seconds_for_form_state_sync_(kDefaultDelaySecondsForFormStateSync), - preferred_width_(0), - send_preferred_width_changes_(false), + send_preferred_size_changes_(false), ALLOW_THIS_IN_INITIALIZER_LIST( notification_provider_(new NotificationProvider(this))), determine_page_text_after_loading_stops_(false), @@ -475,8 +474,8 @@ void RenderView::OnMessageReceived(const IPC::Message& message) { OnExtensionMessageInvoke) IPC_MESSAGE_HANDLER(ViewMsg_ClearFocusedNode, OnClearFocusedNode) IPC_MESSAGE_HANDLER(ViewMsg_SetBackground, OnSetBackground) - IPC_MESSAGE_HANDLER(ViewMsg_EnableIntrinsicWidthChangedMode, - OnEnableIntrinsicWidthChangedMode) + IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode, + OnEnablePreferredSizeChangedMode) IPC_MESSAGE_HANDLER(ViewMsg_SetRendererPrefs, OnSetRendererPrefs) IPC_MESSAGE_HANDLER(ViewMsg_UpdateBrowserWindowId, OnUpdateBrowserWindowId) @@ -2366,16 +2365,23 @@ void RenderView::didCreateIsolatedScriptContext(WebFrame* frame) { void RenderView::didChangeContentsSize(WebFrame* frame, const WebSize& size) { // We don't always want to send the change messages over IPC, only if we've - // be put in that mode by getting a |ViewMsg_EnableIntrinsicWidthChangedMode| + // be put in that mode by getting a |ViewMsg_EnablePreferredSizeChangedMode| // message. - if (send_preferred_width_changes_) { + if (send_preferred_size_changes_) { // WebCore likes to tell us things have changed even when they haven't, so - // cache the width and only send the IPC message when we're sure the - // width is different. + // cache the width and height and only send the IPC message when we're sure + // they're different. int width = webview()->mainFrame()->contentsPreferredWidth(); - if (width != preferred_width_) { - Send(new ViewHostMsg_DidContentsPreferredWidthChange(routing_id_, width)); - preferred_width_ = width; + if (width != preferred_size_.width() || + size.height != preferred_size_.height()) { + preferred_size_.set_width(width); + + // TODO(erikkay) the contents size is not really the same as the + // preferred size. It's just the current size. This means that for + // height, it will only ever grow, it will never shrink. + preferred_size_.set_height(size.height); + Send(new ViewHostMsg_DidContentsPreferredSizeChange(routing_id_, + preferred_size_)); } } } @@ -3027,8 +3033,8 @@ void RenderView::OnEnableViewSourceMode() { main_frame->enableViewSourceMode(true); } -void RenderView::OnEnableIntrinsicWidthChangedMode() { - send_preferred_width_changes_ = true; +void RenderView::OnEnablePreferredSizeChangedMode() { + send_preferred_size_changes_ = true; } void RenderView::OnSetRendererPrefs(const RendererPreferences& renderer_prefs) { diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h index d0808e9..ca7d38e 100644 --- a/chrome/renderer/render_view.h +++ b/chrome/renderer/render_view.h @@ -601,7 +601,7 @@ class RenderView : public RenderWidget, void OnInstallMissingPlugin(); void OnFileChooserResponse(const std::vector<FilePath>& file_names); void OnEnableViewSourceMode(); - void OnEnableIntrinsicWidthChangedMode(); + void OnEnablePreferredSizeChangedMode(); void OnSetRendererPrefs(const RendererPreferences& renderer_prefs); void OnMediaPlayerActionAt(const gfx::Point& location, const WebKit::WebMediaPlayerAction& action); @@ -901,12 +901,12 @@ class RenderView : public RenderWidget, // it's for the selection clipboard. std::string selection_text_; - // Cache the preferred width of the page in order to prevent sending the IPC - // when layout() recomputes it but it doesn't actually change. - int preferred_width_; + // Cache the preferred size of the page in order to prevent sending the IPC + // when layout() recomputes but doesn't actually change sizes. + gfx::Size preferred_size_; - // If true, we send IPC messages when the preferred width changes. - bool send_preferred_width_changes_; + // If true, we send IPC messages when |preferred_size_| changes. + bool send_preferred_size_changes_; // The text selection the last time DidChangeSelection got called. std::string last_selection_; |