summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-01 21:14:05 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-01 21:14:05 +0000
commit2d5fa0d0a9751c5eb61baefd43760c36233f2d20 (patch)
treeecccdbea7c8553d6efca29c3d9ce4efab02ab6ec /chrome/browser/gtk
parent2a464a9638588073f344df55d46da6f9910d892b (diff)
downloadchromium_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.cc25
-rw-r--r--chrome/browser/gtk/extension_shelf_gtk.h5
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_;