| Index: chrome/browser/views/download_item_view.cc
|
| ===================================================================
|
| --- chrome/browser/views/download_item_view.cc (revision 17253)
|
| +++ chrome/browser/views/download_item_view.cc (working copy)
|
| @@ -152,17 +152,6 @@
|
| disabled_while_opening_(false),
|
| creation_time_(base::Time::Now()),
|
| ALLOW_THIS_IN_INITIALIZER_LIST(reenable_method_factory_(this)) {
|
| - // TODO(idana) Bug# 1163334
|
| - //
|
| - // We currently do not mirror each download item on the download shelf (even
|
| - // though the download shelf itself is mirrored and the items appear from
|
| - // right to left on RTL UIs).
|
| - //
|
| - // We explicitly disable mirroring for the item because the code that draws
|
| - // the download progress animation relies on the View's UI layout setting
|
| - // when positioning the animation so we should make sure that code doesn't
|
| - // treat our View as a mirrored View.
|
| - EnableUIMirroringForRTLLanguages(false);
|
| DCHECK(download_);
|
| download_->AddObserver(this);
|
|
|
| @@ -485,6 +474,17 @@
|
|
|
| // Paint the background images.
|
| int x = kLeftPadding;
|
| + bool rtl_ui = UILayoutIsRightToLeft();
|
| + if (rtl_ui) {
|
| + // Since we do not have the mirrored images for
|
| + // (hot_)body_image_set->top_left, (hot_)body_image_set->left,
|
| + // (hot_)body_image_set->bottom_left, and drop_down_image_set,
|
| + // for RTL UI, we flip the canvas to draw those images mirrored.
|
| + // Consequently, we do not need to mirror the x-axis of those images.
|
| + canvas->save();
|
| + canvas->TranslateInt(width(), 0);
|
| + canvas->ScaleInt(-1, 1);
|
| + }
|
| PaintBitmaps(canvas,
|
| body_image_set->top_left, body_image_set->left,
|
| body_image_set->bottom_left,
|
| @@ -524,6 +524,13 @@
|
| x, box_y_, box_height_,
|
| hot_body_image_set_.top_right->width());
|
| canvas->restore();
|
| + if (rtl_ui) {
|
| + canvas->restore();
|
| + canvas->save();
|
| + // Flip it for drawing drop-down images for RTL locales.
|
| + canvas->TranslateInt(width(), 0);
|
| + canvas->ScaleInt(-1, 1);
|
| + }
|
| }
|
|
|
| x += body_image_set->top_right->width();
|
| @@ -551,6 +558,13 @@
|
| }
|
| }
|
|
|
| + if (rtl_ui) {
|
| + // Restore the canvas to avoid file name etc. text are drawn flipped.
|
| + // Consequently, the x-axis of following canvas->DrawXXX() method should be
|
| + // mirrored so the text and images are down in the right positions.
|
| + canvas->restore();
|
| + }
|
| +
|
| // Print the text, left aligned and always print the file extension.
|
| // Last value of x was the end of the right image, just before the button.
|
| // Note that in dangerous mode we use a label (as the text is multi-line).
|
| @@ -571,6 +585,8 @@
|
| filename = gfx::ElideFilename(filepath, font_, kTextWidth);
|
| }
|
|
|
| + int mirrored_x = MirroredXWithWidthInsideView(
|
| + download_util::kSmallProgressIconSize, kTextWidth);
|
| if (show_status_text_) {
|
| int y = box_y_ + kVerticalPadding;
|
|
|
| @@ -578,13 +594,11 @@
|
| canvas->DrawStringInt(filename, font_,
|
| IsEnabled() ? kFileNameColor :
|
| kFileNameDisabledColor,
|
| - download_util::kSmallProgressIconSize, y,
|
| - kTextWidth, font_.height());
|
| + mirrored_x, y, kTextWidth, font_.height());
|
|
|
| y += font_.height() + kVerticalTextPadding;
|
|
|
| - canvas->DrawStringInt(status_text_, font_, kStatusColor,
|
| - download_util::kSmallProgressIconSize, y,
|
| + canvas->DrawStringInt(status_text_, font_, kStatusColor, mirrored_x, y,
|
| kTextWidth, font_.height());
|
| } else {
|
| int y = box_y_ + (box_height_ - font_.height()) / 2;
|
| @@ -593,8 +607,7 @@
|
| canvas->DrawStringInt(filename, font_,
|
| IsEnabled() ? kFileNameColor :
|
| kFileNameDisabledColor,
|
| - download_util::kSmallProgressIconSize, y,
|
| - kTextWidth, font_.height());
|
| + mirrored_x, y, kTextWidth, font_.height());
|
| }
|
| }
|
|
|
| @@ -625,18 +638,17 @@
|
| }
|
|
|
| // Draw the icon image.
|
| + int mirrored_x = MirroredXWithWidthInsideView(
|
| + download_util::kSmallProgressIconOffset, icon->width());
|
| if (IsEnabled()) {
|
| - canvas->DrawBitmapInt(*icon,
|
| - download_util::kSmallProgressIconOffset,
|
| + canvas->DrawBitmapInt(*icon, mirrored_x,
|
| download_util::kSmallProgressIconOffset);
|
| } else {
|
| // Use an alpha to make the image look disabled.
|
| SkPaint paint;
|
| paint.setAlpha(120);
|
| - canvas->DrawBitmapInt(*icon,
|
| - download_util::kSmallProgressIconOffset,
|
| - download_util::kSmallProgressIconOffset,
|
| - paint);
|
| + canvas->DrawBitmapInt(*icon, mirrored_x,
|
| + download_util::kSmallProgressIconOffset, paint);
|
| }
|
| }
|
| }
|
| @@ -771,11 +783,8 @@
|
| // The menu's position is different depending on the UI layout.
|
| // DownloadShelfContextMenu will take care of setting the right anchor for
|
| // the menu depending on the locale.
|
| - //
|
| - // TODO(idana): when bug# 1163334 is fixed the following check should be
|
| - // replaced with UILayoutIsRightToLeft().
|
| point.set_y(height());
|
| - if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) {
|
| + if (UILayoutIsRightToLeft()) {
|
| point.set_x(width());
|
| } else {
|
| point.set_x(drop_down_x_);
|
|
|