diff options
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_ |