Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7801)

Unified Diff: chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc

Issue 11636040: AutofillPopupController clarifications + simplifications. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: new workstation Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc
diff --git a/chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc b/chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc
index 109b30ba49dff0ca3b7d89e52098cfb1a5256422..5a553e89f629a7d0fbdc9420df0949421d123314 100644
--- a/chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc
+++ b/chrome/browser/ui/gtk/autofill/autofill_popup_view_gtk.cc
@@ -25,15 +25,11 @@
using WebKit::WebAutofillClient;
namespace {
+
const GdkColor kBorderColor = GDK_COLOR_RGB(0xc7, 0xca, 0xce);
const GdkColor kHoveredBackgroundColor = GDK_COLOR_RGB(0xcd, 0xcd, 0xcd);
-const GdkColor kValueTextColor = GDK_COLOR_RGB(0x00, 0x00, 0x00);
-const GdkColor kLabelTextColor = GDK_COLOR_RGB(0x7f, 0x7f, 0x7f);
-
-gfx::Rect GetWindowRect(GdkWindow* window) {
- return gfx::Rect(gdk_window_get_width(window),
- gdk_window_get_height(window));
-}
+const GdkColor kNameColor = GDK_COLOR_RGB(0x00, 0x00, 0x00);
+const GdkColor kSubtextColor = GDK_COLOR_RGB(0x7f, 0x7f, 0x7f);
} // namespace
@@ -85,9 +81,7 @@ void AutofillPopupViewGtk::Show() {
}
void AutofillPopupViewGtk::InvalidateRow(size_t row) {
- GdkRectangle row_rect = controller_->GetRectForRow(
- row,
- controller_->popup_bounds().width()).ToGdkRectangle();
+ GdkRectangle row_rect = controller_->GetRowBounds(row).ToGdkRectangle();
GdkWindow* gdk_window = gtk_widget_get_window(window_);
gdk_window_invalidate_rect(gdk_window, &row_rect, FALSE);
}
@@ -112,15 +106,12 @@ gboolean AutofillPopupViewGtk::HandleButtonRelease(GtkWidget* widget,
if (event->button != 1)
return FALSE;
- controller_->AcceptSelectedPosition(event->x, event->y);
+ controller_->MouseClicked(event->x, event->y);
return TRUE;
}
gboolean AutofillPopupViewGtk::HandleExpose(GtkWidget* widget,
GdkEventExpose* event) {
- gfx::Rect window_rect = GetWindowRect(event->window);
- gfx::Rect damage_rect = gfx::Rect(event->area);
-
cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(gtk_widget_get_window(widget)));
gdk_cairo_rectangle(cr, &event->area);
cairo_clip(cr);
@@ -131,18 +122,19 @@ gboolean AutofillPopupViewGtk::HandleExpose(GtkWidget* widget,
DCHECK_EQ(1, kBorderThickness);
// Draw the 1px border around the entire window.
gdk_cairo_set_source_color(cr, &kBorderColor);
- cairo_rectangle(cr, 0, 0, window_rect.width(), window_rect.height());
+ gdk_cairo_rectangle(cr, &widget->allocation);
cairo_stroke(cr);
+ SetUpLayout();
- SetupLayout(window_rect);
+ gfx::Rect damage_rect(event->area);
- for (size_t i = 0; i < controller_->autofill_values().size(); ++i) {
- gfx::Rect line_rect = controller_->GetRectForRow(i, window_rect.width());
+ for (size_t i = 0; i < controller_->names().size(); ++i) {
+ gfx::Rect line_rect = controller_->GetRowBounds(i);
// Only repaint and layout damaged lines.
if (!line_rect.Intersects(damage_rect))
continue;
- if (controller_->autofill_unique_ids()[i] ==
+ if (controller_->identifiers()[i] ==
WebAutofillClient::MenuItemIDSeparator) {
DrawSeparator(cr, line_rect);
} else {
@@ -157,21 +149,21 @@ gboolean AutofillPopupViewGtk::HandleExpose(GtkWidget* widget,
gboolean AutofillPopupViewGtk::HandleLeave(GtkWidget* widget,
GdkEventCrossing* event) {
- controller_->ClearSelectedLine();
+ controller_->MouseExitedPopup();
return FALSE;
}
gboolean AutofillPopupViewGtk::HandleMotion(GtkWidget* widget,
GdkEventMotion* event) {
- controller_->SetSelectedPosition(event->x, event->y);
+ controller_->MouseHovered(event->x, event->y);
return TRUE;
}
-void AutofillPopupViewGtk::SetupLayout(const gfx::Rect& window_rect) {
- pango_layout_set_width(layout_, window_rect.width() * PANGO_SCALE);
- pango_layout_set_height(layout_, window_rect.height() * PANGO_SCALE);
+void AutofillPopupViewGtk::SetUpLayout() {
+ pango_layout_set_width(layout_, window_->allocation.width * PANGO_SCALE);
+ pango_layout_set_height(layout_, window_->allocation.height * PANGO_SCALE);
}
void AutofillPopupViewGtk::SetLayoutText(const string16& text,
@@ -221,19 +213,18 @@ void AutofillPopupViewGtk::DrawAutofillEntry(cairo_t* cairo_context,
}
// Draw the value.
- SetLayoutText(controller_->autofill_values()[index],
- controller_->value_font(),
- kValueTextColor);
- int value_text_width = controller_->value_font().GetStringWidth(
- controller_->autofill_values()[index]);
+ SetLayoutText(controller_->names()[index],
+ controller_->name_font(),
+ kNameColor);
+ int value_text_width =
+ controller_->name_font().GetStringWidth(controller_->names()[index]);
// Center the text within the line.
- int row_height = controller_->GetRowHeightFromId(
- controller_->autofill_unique_ids()[index]);
+ int row_height = controller_->GetRowBounds(index).height();
int value_content_y = std::max(
entry_rect.y(),
entry_rect.y() +
- (row_height - controller_->value_font().GetHeight()) / 2);
+ (row_height - controller_->name_font().GetHeight()) / 2);
bool is_rtl = base::i18n::IsRTL();
int value_content_x = is_rtl ?
@@ -250,7 +241,7 @@ void AutofillPopupViewGtk::DrawAutofillEntry(cairo_t* cairo_context,
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
// Draw the delete icon, if one is needed.
- if (controller_->CanDelete(controller_->autofill_unique_ids()[index])) {
+ if (controller_->CanDelete(index)) {
x_align_left += is_rtl ? 0 : -kDeleteIconWidth;
gfx::Image delete_icon;
@@ -278,9 +269,8 @@ void AutofillPopupViewGtk::DrawAutofillEntry(cairo_t* cairo_context,
}
// Draw the Autofill icon, if one exists
- if (!controller_->autofill_icons()[index].empty()) {
- int icon =
- controller_->GetIconResourceID(controller_->autofill_icons()[index]);
+ if (!controller_->icons()[index].empty()) {
+ int icon = controller_->GetIconResourceID(controller_->icons()[index]);
DCHECK_NE(-1, icon);
int icon_y = entry_rect.y() + (row_height - kAutofillIconHeight) / 2;
@@ -297,23 +287,23 @@ void AutofillPopupViewGtk::DrawAutofillEntry(cairo_t* cairo_context,
x_align_left += is_rtl ? kAutofillIconWidth + kIconPadding : -kIconPadding;
}
- // Draw the label text.
- SetLayoutText(controller_->autofill_labels()[index],
- controller_->label_font(),
- kLabelTextColor);
+ // Draw the subtext.
+ SetLayoutText(controller_->subtexts()[index],
+ controller_->subtext_font(),
+ kSubtextColor);
if (!is_rtl) {
- x_align_left -= controller_->label_font().GetStringWidth(
- controller_->autofill_labels()[index]);
+ x_align_left -= controller_->subtext_font().GetStringWidth(
+ controller_->subtexts()[index]);
}
// Center the text within the line.
- int label_content_y = std::max(
+ int subtext_content_y = std::max(
entry_rect.y(),
entry_rect.y() +
- (row_height - controller_->label_font().GetHeight()) / 2);
+ (row_height - controller_->subtext_font().GetHeight()) / 2);
cairo_save(cairo_context);
- cairo_move_to(cairo_context, x_align_left, label_content_y);
+ cairo_move_to(cairo_context, x_align_left, subtext_content_y);
pango_cairo_show_layout(cairo_context, layout_);
cairo_restore(cairo_context);
}

Powered by Google App Engine
This is Rietveld 408576698