diff options
author | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-01 21:14:05 +0000 |
---|---|---|
committer | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-01 21:14:05 +0000 |
commit | 2d5fa0d0a9751c5eb61baefd43760c36233f2d20 (patch) | |
tree | ecccdbea7c8553d6efca29c3d9ce4efab02ab6ec /chrome/browser/gtk | |
parent | 2a464a9638588073f344df55d46da6f9910d892b (diff) | |
download | chromium_src-2d5fa0d0a9751c5eb61baefd43760c36233f2d20.zip chromium_src-2d5fa0d0a9751c5eb61baefd43760c36233f2d20.tar.gz chromium_src-2d5fa0d0a9751c5eb61baefd43760c36233f2d20.tar.bz2 |
mole expand/collapse API, callable from a toolstrip for manual operation
Review URL: http://codereview.chromium.org/160276
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22245 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/extension_shelf_gtk.cc | 25 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_shelf_gtk.h | 5 |
2 files changed, 22 insertions, 8 deletions
diff --git a/chrome/browser/gtk/extension_shelf_gtk.cc b/chrome/browser/gtk/extension_shelf_gtk.cc index 5f3a4b9..c83d182 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 diff --git a/chrome/browser/gtk/extension_shelf_gtk.h b/chrome/browser/gtk/extension_shelf_gtk.h index da2948d..81b055a89 100644 --- a/chrome/browser/gtk/extension_shelf_gtk.h +++ b/chrome/browser/gtk/extension_shelf_gtk.h @@ -42,9 +42,10 @@ class ExtensionShelfGtk : public ExtensionShelfModelObserver, virtual void ToolstripMoved(ExtensionHost* host, int from_index, int to_index); - virtual void ToolstripChangedAt(ExtensionHost* host, int index); + virtual void ToolstripChanged(ExtensionShelfModel::iterator toolstrip); virtual void ExtensionShelfEmpty(); virtual void ShelfModelReloaded(); + virtual void ShelfModelDeleting(); private: class Toolstrip; @@ -88,7 +89,7 @@ class ExtensionShelfGtk : public ExtensionShelfModelObserver, NotificationRegistrar registrar_; // The model representing the toolstrips on the shelf. - scoped_ptr<ExtensionShelfModel> model_; + ExtensionShelfModel* model_; // Set of toolstrip views which are really on the shelf. std::set<Toolstrip*> toolstrips_; |