Index: ash/system/rotation/tray_rotation_lock.cc |
diff --git a/ash/system/rotation/tray_rotation_lock.cc b/ash/system/rotation/tray_rotation_lock.cc |
index 9692576b06b6437b4d319f4bec8283e61e2e8290..1c6a3e6c4b075e23c3002c5b048ba76f4a2b3a8a 100644 |
--- a/ash/system/rotation/tray_rotation_lock.cc |
+++ b/ash/system/rotation/tray_rotation_lock.cc |
@@ -7,6 +7,7 @@ |
#include "ash/display/screen_orientation_controller_chromeos.h" |
#include "ash/resources/vector_icons/vector_icons.h" |
#include "ash/shell.h" |
+#include "ash/shell_port.h" |
#include "ash/strings/grit/ash_strings.h" |
#include "ash/system/tray/actionable_view.h" |
#include "ash/system/tray/system_tray.h" |
@@ -18,6 +19,7 @@ |
#include "ui/accessibility/ax_node_data.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/display/display.h" |
+#include "ui/display/manager/managed_display_info.h" |
#include "ui/gfx/paint_vector_icon.h" |
#include "ui/views/controls/image_view.h" |
#include "ui/views/controls/label.h" |
@@ -37,6 +39,15 @@ bool IsUserRotationLocked() { |
return Shell::Get()->screen_orientation_controller()->user_rotation_locked(); |
} |
+bool IsCurrentRotationPortrait() { |
+ display::Display::Rotation current_rotation = |
+ ShellPort::Get() |
+ ->GetDisplayInfo(display::Display::InternalDisplayId()) |
+ .GetActiveRotation(); |
+ return current_rotation == display::Display::ROTATE_90 || |
+ current_rotation == display::Display::ROTATE_270; |
+} |
+ |
} // namespace |
namespace tray { |
@@ -102,14 +113,21 @@ RotationLockDefaultView::~RotationLockDefaultView() { |
void RotationLockDefaultView::Update() { |
TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); |
- icon_->SetImage(gfx::CreateVectorIcon(IsUserRotationLocked() |
- ? kSystemMenuRotationLockLockedIcon |
- : kSystemMenuRotationLockAutoIcon, |
- kMenuIconSize, style.GetIconColor())); |
- |
- base::string16 label = l10n_util::GetStringUTF16( |
- IsUserRotationLocked() ? IDS_ASH_STATUS_TRAY_ROTATION_LOCK_LOCKED |
- : IDS_ASH_STATUS_TRAY_ROTATION_LOCK_AUTO); |
+ base::string16 label; |
+ if (IsUserRotationLocked()) { |
+ icon_->SetImage(gfx::CreateVectorIcon( |
+ IsCurrentRotationPortrait() ? kSystemMenuRotationLockPortraitIcon |
+ : kSystemMenuRotationLockLandscapeIcon, |
+ kMenuIconSize, style.GetIconColor())); |
+ label = l10n_util::GetStringUTF16( |
+ IsCurrentRotationPortrait() |
+ ? IDS_ASH_STATUS_TRAY_ROTATION_LOCK_PORTRAIT |
+ : IDS_ASH_STATUS_TRAY_ROTATION_LOCK_LANDSCAPE); |
+ } else { |
+ icon_->SetImage(gfx::CreateVectorIcon(kSystemMenuRotationLockAutoIcon, |
+ kMenuIconSize, style.GetIconColor())); |
+ label = l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ROTATION_LOCK_AUTO); |
+ } |
label_->SetText(label); |
style.SetupLabel(label_); |
@@ -164,7 +182,7 @@ TrayRotationLock::~TrayRotationLock() { |
} |
void TrayRotationLock::OnUserRotationLockChanged() { |
- tray_view()->SetVisible(ShouldBeVisible()); |
+ UpdateTrayImage(); |
} |
views::View* TrayRotationLock::CreateDefaultView(LoginStatus status) { |
@@ -174,7 +192,8 @@ views::View* TrayRotationLock::CreateDefaultView(LoginStatus status) { |
} |
void TrayRotationLock::OnMaximizeModeStarted() { |
- tray_view()->SetVisible(IsUserRotationLocked()); |
+ tray_view()->SetVisible(ShouldBeVisible()); |
+ UpdateTrayImage(); |
Shell::Get()->screen_orientation_controller()->AddObserver(this); |
} |
@@ -193,9 +212,14 @@ bool TrayRotationLock::GetInitialVisibility() { |
return ShouldBeVisible(); |
} |
+void TrayRotationLock::UpdateTrayImage() { |
+ TrayImageItem::SetImageIcon(IsUserRotationLocked() |
+ ? kSystemTrayRotationLockLockedIcon |
+ : kSystemTrayRotationLockAutoIcon); |
+} |
+ |
bool TrayRotationLock::ShouldBeVisible() { |
- return OnPrimaryDisplay() && IsMaximizeModeWindowManagerEnabled() && |
- IsUserRotationLocked(); |
+ return OnPrimaryDisplay() && IsMaximizeModeWindowManagerEnabled(); |
} |
bool TrayRotationLock::OnPrimaryDisplay() const { |