| Index: chrome/browser/gtk/extension_shelf_gtk.cc
|
| diff --git a/chrome/browser/gtk/extension_shelf_gtk.cc b/chrome/browser/gtk/extension_shelf_gtk.cc
|
| index 5f3a4b977e4e71e9b5ed62e1b40f637b93320566..c83d182d5ba68b76da6e046f18042251f9a676db 100644
|
| --- a/chrome/browser/gtk/extension_shelf_gtk.cc
|
| +++ b/chrome/browser/gtk/extension_shelf_gtk.cc
|
| @@ -67,7 +67,7 @@ void ExtensionShelfGtk::Toolstrip::Init() {
|
| ExtensionShelfGtk::ExtensionShelfGtk(Profile* profile, Browser* browser)
|
| : browser_(browser),
|
| theme_provider_(GtkThemeProvider::GetFrom(profile)),
|
| - model_(new ExtensionShelfModel(browser)) {
|
| + model_(browser->extension_shelf_model()) {
|
| Init(profile);
|
|
|
| registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED,
|
| @@ -75,7 +75,8 @@ ExtensionShelfGtk::ExtensionShelfGtk(Profile* profile, Browser* browser)
|
| }
|
|
|
| ExtensionShelfGtk::~ExtensionShelfGtk() {
|
| - model_->RemoveObserver(this);
|
| + if (model_)
|
| + model_->RemoveObserver(this);
|
| event_box_.Destroy();
|
| }
|
|
|
| @@ -119,8 +120,8 @@ void ExtensionShelfGtk::ToolstripMoved(ExtensionHost* host,
|
| AdjustHeight();
|
| }
|
|
|
| -void ExtensionShelfGtk::ToolstripChangedAt(ExtensionHost* host,
|
| - int index) {
|
| +void ExtensionShelfGtk::ToolstripChanged(
|
| + ExtensionShelfModel::iterator toolstrip) {
|
| // TODO(phajdan.jr): Implement changing toolstrips.
|
| AdjustHeight();
|
| }
|
| @@ -139,6 +140,18 @@ void ExtensionShelfGtk::ShelfModelReloaded() {
|
| LoadFromModel();
|
| }
|
|
|
| +void ExtensionShelfGtk::ShelfModelDeleting() {
|
| + for (std::set<Toolstrip*>::iterator iter = toolstrips_.begin();
|
| + iter != toolstrips_.end(); ++iter) {
|
| + (*iter)->RemoveToolstripFromBox(shelf_hbox_);
|
| + delete *iter;
|
| + }
|
| + toolstrips_.clear();
|
| +
|
| + model_->RemoveObserver(this);
|
| + model_ = NULL;
|
| +}
|
| +
|
| void ExtensionShelfGtk::Init(Profile* profile) {
|
| event_box_.Own(gtk_event_box_new());
|
|
|
| @@ -187,12 +200,12 @@ void ExtensionShelfGtk::LoadFromModel() {
|
| DCHECK(toolstrips_.empty());
|
| int count = model_->count();
|
| for (int i = 0; i < count; ++i)
|
| - ToolstripInsertedAt(model_->ToolstripAt(i), i);
|
| + ToolstripInsertedAt(model_->ToolstripAt(i).host, i);
|
| AdjustHeight();
|
| }
|
|
|
| ExtensionShelfGtk::Toolstrip* ExtensionShelfGtk::ToolstripAtIndex(int index) {
|
| - return static_cast<Toolstrip*>(model_->ToolstripDataAt(index));
|
| + return static_cast<Toolstrip*>(model_->ToolstripAt(index).data);
|
| }
|
|
|
| // static
|
|
|