Index: chrome/browser/views/toolbar_view.cc |
=================================================================== |
--- chrome/browser/views/toolbar_view.cc (revision 12533) |
+++ chrome/browser/views/toolbar_view.cc (working copy) |
@@ -66,6 +66,7 @@ |
model_(browser->toolbar_model()), |
back_(NULL), |
forward_(NULL), |
+ threedee_(NULL), |
reload_(NULL), |
home_(NULL), |
star_(NULL), |
@@ -84,9 +85,18 @@ |
display_mode_ = DISPLAYMODE_NORMAL; |
else |
display_mode_ = DISPLAYMODE_LOCATION; |
+ |
+ NotificationService::current()->AddObserver( |
+ this, |
+ NOTIFY_THREEDEE_TOGGLED, |
+ NotificationService::AllSources()); |
} |
BrowserToolbarView::~BrowserToolbarView() { |
+ NotificationService::current()->RemoveObserver( |
+ this, |
+ NOTIFY_THREEDEE_TOGGLED, |
+ NotificationService::AllSources()); |
} |
void BrowserToolbarView::Init(Profile* profile) { |
@@ -135,6 +145,19 @@ |
AddChildView(forward_); |
controller_->AddManagedButton(forward_, IDC_FORWARD); |
+ threedee_ = new views::ToggleButton(); |
+ threedee_->SetListener(this, IDC_THREEDEE); |
+ threedee_->SetImage(views::BaseButton::BS_NORMAL, |
+ rb.GetBitmapNamed(IDR_3D)); |
+ threedee_->SetImage(views::BaseButton::BS_HOT, |
+ rb.GetBitmapNamed(IDR_3D_H)); |
+ threedee_->SetImage(views::BaseButton::BS_PUSHED, |
+ rb.GetBitmapNamed(IDR_3D_P)); |
+ threedee_->SetToggledImage(views::BaseButton::BS_NORMAL, |
+ rb.GetBitmapNamed(IDR_3D_C)); |
+ threedee_->SetID(VIEW_ID_3D_BUTTON); |
+ AddChildView(threedee_); |
+ |
reload_ = new views::Button(); |
reload_->SetImage(views::Button::BS_NORMAL, rb.GetBitmapNamed(IDR_RELOAD)); |
reload_->SetImage(views::Button::BS_HOT, rb.GetBitmapNamed(IDR_RELOAD_H)); |
@@ -264,11 +287,22 @@ |
forward_->SetBounds(back_->x() + back_->width(), kControlVertOffset, |
sz.width(), sz.height()); |
- sz = reload_->GetPreferredSize(); |
- reload_->SetBounds(forward_->x() + forward_->width() + |
- kControlHorizOffset, |
- kControlVertOffset, sz.width(), sz.height()); |
+ if (threedee_) { |
+ sz = threedee_->GetPreferredSize(); |
+ threedee_->SetBounds(forward_->x() + forward_->width() + kControlHorizOffset, |
+ kControlVertOffset, reload_->GetPreferredSize().width(), |
+ sz.height()); |
+ reload_->SetBounds(threedee_->x() + threedee_->width() + kControlHorizOffset, |
+ kControlVertOffset, reload_->GetPreferredSize().width(), |
+ sz.height()); |
+ } else { |
+ sz = reload_->GetPreferredSize(); |
+ reload_->SetBounds(forward_->x() + forward_->width() + |
+ kControlHorizOffset, |
+ kControlVertOffset, sz.width(), sz.height()); |
+ } |
+ |
int offset = 0; |
if (show_home_button_.GetValue()) { |
sz = home_->GetPreferredSize(); |
@@ -697,9 +731,27 @@ |
Layout(); |
SchedulePaint(); |
} |
+ } else if (type == NOTIFY_THREEDEE_TOGGLED) { |
+ // Redraw the window when the user changes this setting. |
+ threedee_->SetToggled(g_threedee_enabled); |
} |
} |
+void BrowserToolbarView::ButtonPressed(views::BaseButton* sender) { |
+ if (sender->GetTag() == IDC_THREEDEE) { |
+ g_threedee_enabled = !g_threedee_enabled; |
+ // The toggle state of the button will get changed in our observer (to keep |
+ // all toolbars in sync). |
+ |
+ NotificationService::current()->Notify( |
+ NOTIFY_THREEDEE_TOGGLED, |
+ NotificationService::AllSources(), |
+ NotificationService::NoDetails()); |
+ |
+ return; |
+ } |
+} |
+ |
bool BrowserToolbarView::GetAcceleratorInfo(int id, |
views::Accelerator* accel) { |
// The standard Ctrl-X, Ctrl-V and Ctrl-C are not defined as accelerators |