diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 19:51:34 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-05-14 19:51:34 +0000 |
commit | 55902b55116fe36b88a719b13c15d38d9b3c08ff (patch) | |
tree | cb05a30d82fe83499e09368caad8120557b696e2 /views/controls/button | |
parent | 7a08a49f266ca32581b95016cfa65a5679c5dcf1 (diff) | |
download | chromium_src-55902b55116fe36b88a719b13c15d38d9b3c08ff.zip chromium_src-55902b55116fe36b88a719b13c15d38d9b3c08ff.tar.gz chromium_src-55902b55116fe36b88a719b13c15d38d9b3c08ff.tar.bz2 |
Add basic checkbox support for GTK.
This also makes the Checkbox check for the native wrapper just like
NativeButton does, to prevent crashes if it hasn't been initialized yet.
Review URL: http://codereview.chromium.org/113408
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16094 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/controls/button')
-rw-r--r-- | views/controls/button/checkbox.cc | 3 | ||||
-rw-r--r-- | views/controls/button/native_button_gtk.cc | 21 | ||||
-rw-r--r-- | views/controls/button/native_button_gtk.h | 12 |
3 files changed, 36 insertions, 0 deletions
diff --git a/views/controls/button/checkbox.cc b/views/controls/button/checkbox.cc index 8783bcf..af6a7b4 100644 --- a/views/controls/button/checkbox.cc +++ b/views/controls/button/checkbox.cc @@ -53,6 +53,9 @@ int Checkbox::GetTextIndent() { // Checkbox, View overrides: gfx::Size Checkbox::GetPreferredSize() { + if (!native_wrapper_) + return gfx::Size(); + gfx::Size prefsize = native_wrapper_->GetView()->GetPreferredSize(); prefsize.set_width( prefsize.width() + kCheckboxLabelSpacing + diff --git a/views/controls/button/native_button_gtk.cc b/views/controls/button/native_button_gtk.cc index e140b21..858fdcd 100644 --- a/views/controls/button/native_button_gtk.cc +++ b/views/controls/button/native_button_gtk.cc @@ -86,10 +86,31 @@ void NativeButtonGtk::NativeControlCreated(GtkWidget* widget) { UpdateDefault(); } +NativeCheckboxGtk::NativeCheckboxGtk(Checkbox* checkbox) + : NativeButtonGtk(checkbox) { +} + +void NativeCheckboxGtk::CreateNativeControl() { + GtkWidget* widget = gtk_check_button_new(); + NativeControlCreated(widget); +} + +// static +int NativeButtonWrapper::GetFixedWidth() { + // TODO(brettw) implement this properly. + return 10; +} + // static NativeButtonWrapper* NativeButtonWrapper::CreateNativeButtonWrapper( NativeButton* native_button) { return new NativeButtonGtk(native_button); } +// static +NativeButtonWrapper* NativeButtonWrapper::CreateCheckboxWrapper( + Checkbox* checkbox) { + return new NativeCheckboxGtk(checkbox); +} + } // namespace views diff --git a/views/controls/button/native_button_gtk.h b/views/controls/button/native_button_gtk.h index e76a703..d526dcd 100644 --- a/views/controls/button/native_button_gtk.h +++ b/views/controls/button/native_button_gtk.h @@ -41,6 +41,18 @@ class NativeButtonGtk : public NativeControlGtk, public NativeButtonWrapper { DISALLOW_COPY_AND_ASSIGN(NativeButtonGtk); }; +class NativeCheckboxGtk : public NativeButtonGtk { + public: + explicit NativeCheckboxGtk(Checkbox* checkbox); + + private: + virtual void CreateNativeControl(); + + // Returns true if this button is actually a checkbox or radio button. + virtual bool IsCheckbox() const { return true; } + DISALLOW_COPY_AND_ASSIGN(NativeCheckboxGtk); +}; + } // namespace views #endif // #ifndef VIEWS_CONTROLS_BUTTON_NATIVE_BUTTON_GTK_H_ |