summaryrefslogtreecommitdiffstats
path: root/ui/views
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-27 20:01:38 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-27 20:01:38 +0000
commit7d57af82a5471bcd8210361cbdcf3cce464ae74e (patch)
treed7419191a775a254cd12e2d78f121c0652b6a6cb /ui/views
parent47b541d98397df0e1e608fec34ec10e427d6255c (diff)
downloadchromium_src-7d57af82a5471bcd8210361cbdcf3cce464ae74e.zip
chromium_src-7d57af82a5471bcd8210361cbdcf3cce464ae74e.tar.gz
chromium_src-7d57af82a5471bcd8210361cbdcf3cce464ae74e.tar.bz2
views: Fix memory leak in ComboboxExample.
R=sky@chromium.org Review URL: https://chromiumcodereview.appspot.com/9834076 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@129249 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views')
-rw-r--r--ui/views/examples/combobox_example.cc40
-rw-r--r--ui/views/examples/combobox_example.h18
2 files changed, 34 insertions, 24 deletions
diff --git a/ui/views/examples/combobox_example.cc b/ui/views/examples/combobox_example.cc
index f392383..795e0c55 100644
--- a/ui/views/examples/combobox_example.cc
+++ b/ui/views/examples/combobox_example.cc
@@ -6,41 +6,34 @@
#include "base/stringprintf.h"
#include "base/utf_string_conversions.h"
-#include "ui/base/models/combobox_model.h"
#include "ui/views/controls/combobox/combobox.h"
#include "ui/views/layout/fill_layout.h"
-namespace {
-
-// An sample combobox model that generates list of "Item <index>".
-class ComboboxModelExample : public ui::ComboboxModel {
- public:
- ComboboxModelExample() {}
- virtual ~ComboboxModelExample() {}
+namespace views {
+namespace examples {
- // Overridden from ui::ComboboxModel:
- virtual int GetItemCount() const OVERRIDE { return 10; }
- virtual string16 GetItemAt(int index) OVERRIDE {
- return UTF8ToUTF16(base::StringPrintf("Item %d", index));
- }
+ComboboxModelExample::ComboboxModelExample() {
+}
- private:
- DISALLOW_COPY_AND_ASSIGN(ComboboxModelExample);
-};
+ComboboxModelExample::~ComboboxModelExample() {
+}
-} // namespace
+int ComboboxModelExample::GetItemCount() const {
+ return 10;
+}
-namespace views {
-namespace examples {
+string16 ComboboxModelExample::GetItemAt(int index) {
+ return UTF8ToUTF16(base::StringPrintf("Item %d", index));
+}
-ComboboxExample::ComboboxExample() : ExampleBase("Combo Box") {
+ComboboxExample::ComboboxExample() : ExampleBase("Combo Box"), combobox_(NULL) {
}
ComboboxExample::~ComboboxExample() {
}
void ComboboxExample::CreateExampleView(View* container) {
- combobox_ = new Combobox(new ComboboxModelExample());
+ combobox_ = new Combobox(&combobox_model_);
combobox_->set_listener(this);
combobox_->SetSelectedItem(3);
@@ -51,8 +44,9 @@ void ComboboxExample::CreateExampleView(View* container) {
void ComboboxExample::ItemChanged(Combobox* combo_box,
int prev_index,
int new_index) {
- PrintStatus("Selected: index=%d, label=%s",
- new_index, UTF16ToUTF8(combo_box->model()->GetItemAt(new_index)).c_str());
+ DCHECK_EQ(combobox_, combo_box);
+ PrintStatus("Selected: %s",
+ UTF16ToUTF8(combobox_model_.GetItemAt(new_index)).c_str());
}
} // namespace examples
diff --git a/ui/views/examples/combobox_example.h b/ui/views/examples/combobox_example.h
index d57038f..57954fb 100644
--- a/ui/views/examples/combobox_example.h
+++ b/ui/views/examples/combobox_example.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -8,12 +8,27 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
+#include "ui/base/models/combobox_model.h"
#include "ui/views/controls/combobox/combobox_listener.h"
#include "ui/views/examples/example_base.h"
namespace views {
namespace examples {
+// A combobox model implementation that generates a list of "Item <index>".
+class ComboboxModelExample : public ui::ComboboxModel {
+ public:
+ ComboboxModelExample();
+ virtual ~ComboboxModelExample();
+
+ // Overridden from ui::ComboboxModel:
+ virtual int GetItemCount() const OVERRIDE;
+ virtual string16 GetItemAt(int index) OVERRIDE;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ComboboxModelExample);
+};
+
class ComboboxExample : public ExampleBase, public ComboboxListener {
public:
ComboboxExample();
@@ -28,6 +43,7 @@ class ComboboxExample : public ExampleBase, public ComboboxListener {
int prev_index,
int new_index) OVERRIDE;
+ ComboboxModelExample combobox_model_;
Combobox* combobox_;
DISALLOW_COPY_AND_ASSIGN(ComboboxExample);