Index: chrome/browser/ui/webui/options/chromeos/display_options_handler.cc |
diff --git a/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc |
index 00ad41e8775183ec68678194b5ff3a671ffd3aea..c39b6faad1cb48ed889f62165ef101204de9b0a9 100644 |
--- a/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc |
+++ b/chrome/browser/ui/webui/options/chromeos/display_options_handler.cc |
@@ -75,7 +75,12 @@ void DisplayOptionsHandler::GetLocalizedValues( |
void DisplayOptionsHandler::InitializePage() { |
DCHECK(web_ui()); |
- UpdateDisplaySectionVisibility(GetDisplayManager()->GetNumDisplays()); |
+ std::vector<const gfx::Display*> displays; |
+ DisplayManager* display_manager = GetDisplayManager(); |
+ for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { |
+ displays.push_back(display_manager->GetDisplayAt(i)); |
+ } |
+ UpdateDisplaySectionVisibility(displays); |
} |
void DisplayOptionsHandler::RegisterMessages() { |
@@ -118,13 +123,17 @@ void DisplayOptionsHandler::OnDisplayBoundsChanged( |
} |
void DisplayOptionsHandler::OnDisplayAdded(const gfx::Display& new_display) { |
- UpdateDisplaySectionVisibility(GetDisplayManager()->GetNumDisplays()); |
+ std::vector<const gfx::Display*> displays; |
+ DisplayManager* display_manager = GetDisplayManager(); |
+ for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { |
+ displays.push_back(display_manager->GetDisplayAt(i)); |
+ } |
+ UpdateDisplaySectionVisibility(displays); |
SendAllDisplayInfo(); |
} |
void DisplayOptionsHandler::OnDisplayRemoved(const gfx::Display& old_display) { |
DisplayManager* display_manager = GetDisplayManager(); |
- UpdateDisplaySectionVisibility(display_manager->GetNumDisplays() - 1); |
std::vector<const gfx::Display*> displays; |
for (size_t i = 0; i < display_manager->GetNumDisplays(); ++i) { |
@@ -132,15 +141,25 @@ void DisplayOptionsHandler::OnDisplayRemoved(const gfx::Display& old_display) { |
if (display->id() != old_display.id()) |
displays.push_back(display); |
} |
+ UpdateDisplaySectionVisibility(displays); |
SendDisplayInfo(displays); |
} |
void DisplayOptionsHandler::UpdateDisplaySectionVisibility( |
- size_t num_displays) { |
+ const std::vector<const gfx::Display*>& displays) { |
+ DisplayManager* display_manager = GetDisplayManager(); |
+ bool has_external = false; |
+ for (size_t i = 0; i < displays.size(); i++) { |
+ if (!display_manager->IsInternalDisplayId(displays[i]->id())) { |
+ has_external = true; |
+ break; |
+ } |
+ } |
oshima
2013/01/31 02:32:40
You should be able to tell if there is an external
Jun Mukai
2013/01/31 02:40:10
indeed. done.
|
+ |
chromeos::OutputState output_state = |
ash::Shell::GetInstance()->output_configurator()->output_state(); |
base::FundamentalValue show_options( |
- num_displays > 1 || output_state == chromeos::STATE_DUAL_MIRROR); |
+ has_external || output_state == chromeos::STATE_DUAL_MIRROR); |
web_ui()->CallJavascriptFunction( |
"options.BrowserOptions.showDisplayOptions", show_options); |
} |