summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authoravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:13:04 +0000
committeravi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-13 22:13:04 +0000
commitb88ab037fc20ab5dfe0f35d71e78acc8499979a5 (patch)
tree7d0a9863885e4c70fe1a24f021a28da8a95a736b /chrome
parent5e26d9d482761e38a15f8cb987294d979bc58576 (diff)
downloadchromium_src-b88ab037fc20ab5dfe0f35d71e78acc8499979a5.zip
chromium_src-b88ab037fc20ab5dfe0f35d71e78acc8499979a5.tar.gz
chromium_src-b88ab037fc20ab5dfe0f35d71e78acc8499979a5.tar.bz2
Do right-alignment of popups when WebKit indicates to do so.
BUG=http://crbug.com/23106 TEST=as in bug Review URL: http://codereview.chromium.org/1992006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47204 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/renderer_host/render_widget_host.cc3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_mac.h3
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_mac.mm9
-rw-r--r--chrome/browser/renderer_host/test/test_render_view_host.h3
-rw-r--r--chrome/common/render_messages.h9
-rw-r--r--chrome/renderer/render_widget.cc1
7 files changed, 23 insertions, 8 deletions
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc
index c53c7be..a0f3be7 100644
--- a/chrome/browser/renderer_host/render_widget_host.cc
+++ b/chrome/browser/renderer_host/render_widget_host.cc
@@ -917,7 +917,8 @@ void RenderWidgetHost::OnMsgShowPopup(
params.item_height,
params.item_font_size,
params.selected_item,
- params.popup_items);
+ params.popup_items,
+ params.right_aligned);
}
void RenderWidgetHost::OnMsgGetScreenInfo(gfx::NativeViewId view,
diff --git a/chrome/browser/renderer_host/render_widget_host_view.h b/chrome/browser/renderer_host/render_widget_host_view.h
index 3a285c1..6d3f6e7 100644
--- a/chrome/browser/renderer_host/render_widget_host_view.h
+++ b/chrome/browser/renderer_host/render_widget_host_view.h
@@ -168,7 +168,8 @@ class RenderWidgetHostView {
int item_height,
double item_font_size,
int selected_item,
- const std::vector<WebMenuItem>& items) = 0;
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned) = 0;
// Get the view's position on the screen.
virtual gfx::Rect GetWindowRect() = 0;
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.h b/chrome/browser/renderer_host/render_widget_host_view_mac.h
index d79b0f1..07f65e2 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_mac.h
+++ b/chrome/browser/renderer_host/render_widget_host_view_mac.h
@@ -179,7 +179,8 @@ class RenderWidgetHostViewMac : public RenderWidgetHostView {
int item_height,
double item_font_size,
int selected_item,
- const std::vector<WebMenuItem>& items);
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned);
virtual gfx::Rect GetWindowRect();
virtual gfx::Rect GetRootWindowRect();
virtual void SetActive(bool active);
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
index 104b346..ac130c9 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
@@ -464,7 +464,8 @@ void RenderWidgetHostViewMac::ShowPopupWithItems(
int item_height,
double item_font_size,
int selected_item,
- const std::vector<WebMenuItem>& items) {
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned) {
is_popup_menu_ = true;
// Retain the Cocoa view for the duration of the pop-up so that it can't
@@ -483,7 +484,8 @@ void RenderWidgetHostViewMac::ShowPopupWithItems(
// Display the menu.
scoped_nsobject<WebMenuRunner> menu_runner;
menu_runner.reset([[WebMenuRunner alloc] initWithItems:items
- fontSize:item_font_size]);
+ fontSize:item_font_size
+ rightAligned:right_aligned]);
{
// Make sure events can be pumped while the menu is up.
@@ -1041,7 +1043,8 @@ bool RenderWidgetHostViewMac::ContainsNativeView(
return;
}
- DCHECK(renderWidgetHostView_->render_widget_host_->process()->HasConnection());
+ DCHECK(
+ renderWidgetHostView_->render_widget_host_->process()->HasConnection());
DCHECK(!renderWidgetHostView_->about_to_validate_and_paint_);
renderWidgetHostView_->about_to_validate_and_paint_ = true;
diff --git a/chrome/browser/renderer_host/test/test_render_view_host.h b/chrome/browser/renderer_host/test/test_render_view_host.h
index 2725bb3..725bacf 100644
--- a/chrome/browser/renderer_host/test/test_render_view_host.h
+++ b/chrome/browser/renderer_host/test/test_render_view_host.h
@@ -76,7 +76,8 @@ class TestRenderWidgetHostView : public RenderWidgetHostView {
int item_height,
double item_font_size,
int selected_item,
- const std::vector<WebMenuItem>& items) {}
+ const std::vector<WebMenuItem>& items,
+ bool right_aligned) {}
virtual gfx::Rect GetWindowRect();
virtual gfx::Rect GetRootWindowRect();
virtual void SetActive(bool active);
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index a2e4a81..e6dba64 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -492,6 +492,9 @@ struct ViewHostMsg_ShowPopup_Params {
// The entire list of items in the popup menu.
std::vector<WebMenuItem> popup_items;
+
+ // Whether items should be right-aligned.
+ bool right_aligned;
};
// Parameters for the IPC message ViewHostMsg_ScriptedPrint
@@ -2076,6 +2079,7 @@ struct ParamTraits<ViewHostMsg_ShowPopup_Params> {
WriteParam(m, p.item_font_size);
WriteParam(m, p.selected_item);
WriteParam(m, p.popup_items);
+ WriteParam(m, p.right_aligned);
}
static bool Read(const Message* m, void** iter, param_type* p) {
return
@@ -2083,7 +2087,8 @@ struct ParamTraits<ViewHostMsg_ShowPopup_Params> {
ReadParam(m, iter, &p->item_height) &&
ReadParam(m, iter, &p->item_font_size) &&
ReadParam(m, iter, &p->selected_item) &&
- ReadParam(m, iter, &p->popup_items);
+ ReadParam(m, iter, &p->popup_items) &&
+ ReadParam(m, iter, &p->right_aligned);
}
static void Log(const param_type& p, std::wstring* l) {
l->append(L"(");
@@ -2096,6 +2101,8 @@ struct ParamTraits<ViewHostMsg_ShowPopup_Params> {
LogParam(p.selected_item, l);
l->append(L", ");
LogParam(p.popup_items, l);
+ l->append(L", ");
+ LogParam(p.right_aligned, l);
l->append(L")");
}
};
diff --git a/chrome/renderer/render_widget.cc b/chrome/renderer/render_widget.cc
index d9fd8e7..395e87b 100644
--- a/chrome/renderer/render_widget.cc
+++ b/chrome/renderer/render_widget.cc
@@ -103,6 +103,7 @@ void RenderWidget::ConfigureAsExternalPopupMenu(const WebPopupMenuInfo& info) {
popup_params_->selected_item = info.selectedIndex;
for (size_t i = 0; i < info.items.size(); ++i)
popup_params_->popup_items.push_back(WebMenuItem(info.items[i]));
+ popup_params_->right_aligned = info.rightAligned;
}
void RenderWidget::Init(int32 opener_id) {