| Index: views/controls/slider/native_slider_gtk.cc
|
| ===================================================================
|
| --- views/controls/slider/native_slider_gtk.cc (revision 0)
|
| +++ views/controls/slider/native_slider_gtk.cc (revision 0)
|
| @@ -0,0 +1,123 @@
|
| +// Copyright (c) 2009 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.
|
| +
|
| +#include <gtk/gtk.h>
|
| +
|
| +#include "views/controls/slider/native_slider_gtk.h"
|
| +
|
| +#include "base/gfx/gtk_util.h"
|
| +#include "views/controls/slider/slider.h"
|
| +
|
| +namespace views {
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// NativeSliderGtk, public:
|
| +
|
| +NativeSliderGtk::NativeSliderGtk(Slider* slider)
|
| + : slider_(slider) {
|
| +}
|
| +
|
| +NativeSliderGtk::~NativeSliderGtk() {
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// NativeSliderGtk, NativeSliderWrapper implementation:
|
| +
|
| +void NativeSliderGtk::UpdateEnabled() {
|
| + if (!native_view())
|
| + return;
|
| + SetEnabled(slider_->IsEnabled());
|
| +}
|
| +
|
| +double NativeSliderGtk::GetValue() {
|
| + if (!native_view())
|
| + return 0;
|
| + return gtk_range_get_value(GTK_RANGE(native_view()));
|
| +}
|
| +
|
| +void NativeSliderGtk::SetValue(double value) {
|
| + if (!native_view())
|
| + return;
|
| + gtk_range_set_value(GTK_RANGE(native_view()), value);
|
| +}
|
| +
|
| +void NativeSliderGtk::SetFocus() {
|
| + Focus();
|
| +}
|
| +
|
| +gfx::Size NativeSliderGtk::GetPreferredSize() {
|
| + if (!native_view())
|
| + return gfx::Size();
|
| +
|
| + if (preferred_size_.IsEmpty()) {
|
| + GtkRequisition size_request = { 0, 0 };
|
| + gtk_widget_size_request(native_view(), &size_request);
|
| + preferred_size_.SetSize(size_request.width, size_request.height);
|
| + }
|
| + return preferred_size_;
|
| +}
|
| +
|
| +View* NativeSliderGtk::GetView() {
|
| + return this;
|
| +}
|
| +
|
| +gfx::NativeView NativeSliderGtk::GetTestingHandle() const {
|
| + return native_view();
|
| +}
|
| +
|
| +// static
|
| +gboolean NativeSliderGtk::OnValueChangedHandler(GtkWidget* entry,
|
| + NativeSliderGtk* slider) {
|
| + return slider->OnValueChanged();
|
| +}
|
| +
|
| +gboolean NativeSliderGtk::OnValueChanged() {
|
| + slider_->NotifyValueChanged();
|
| + return false;
|
| +}
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// NativeSliderGtk, NativeControlGtk overrides:
|
| +
|
| +void NativeSliderGtk::CreateNativeControl() {
|
| + GtkWidget* widget;
|
| + if (slider_->style() & Slider::STYLE_VERTICAL)
|
| + widget = gtk_vscale_new_with_range(slider_->min(),
|
| + slider_->max(),
|
| + slider_->step());
|
| + else
|
| + widget = gtk_hscale_new_with_range(slider_->min(),
|
| + slider_->max(),
|
| + slider_->step());
|
| + NativeControlCreated(widget);
|
| +
|
| + bool drawvalue = slider_->style() & Slider::STYLE_DRAW_VALUE;
|
| + gtk_scale_set_draw_value(GTK_SCALE(native_view()), drawvalue);
|
| +
|
| + int digits = 0;
|
| + if (slider_->style() & Slider::STYLE_ONE_DIGIT)
|
| + digits = 1;
|
| + else if (slider_->style() & Slider::STYLE_TWO_DIGITS)
|
| + digits = 2;
|
| + gtk_scale_set_digits(GTK_SCALE(native_view()), digits);
|
| +
|
| + if (slider_->style() & Slider::STYLE_UPDATE_ON_RELEASE)
|
| + gtk_range_set_update_policy(GTK_RANGE(native_view()),
|
| + GTK_UPDATE_DISCONTINUOUS);
|
| +}
|
| +
|
| +void NativeSliderGtk::NativeControlCreated(GtkWidget* widget) {
|
| + NativeControlGtk::NativeControlCreated(widget);
|
| + g_signal_connect(widget, "value_changed",
|
| + G_CALLBACK(OnValueChangedHandler), this);
|
| +}
|
| +
|
| +////////////////////////////////////////////////////////////////////////////////
|
| +// NativeSliderWrapper, public:
|
| +
|
| +// static
|
| +NativeSliderWrapper* NativeSliderWrapper::CreateWrapper(Slider* field) {
|
| + return new NativeSliderGtk(field);
|
| +}
|
| +
|
| +} // namespace views
|
|
|
| Property changes on: views/controls/slider/native_slider_gtk.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|