// 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. #ifndef VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_GTK_H_ #define VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_GTK_H_ #pragma once #include "views/controls/native_control_gtk.h" #include "views/controls/scrollbar/native_scroll_bar_wrapper.h" namespace views { class ScrollBarContainer; ///////////////////////////////////////////////////////////////////////////// // // NativeScrollBarGtk // // A View subclass that wraps a Native gtk scrollbar control. // // A scrollbar is either horizontal or vertical. // ///////////////////////////////////////////////////////////////////////////// class NativeScrollBarGtk : public NativeControlGtk, public NativeScrollBarWrapper { public: // Creates new scrollbar, either horizontal or vertical. explicit NativeScrollBarGtk(NativeScrollBar* native_scroll_bar); virtual ~NativeScrollBarGtk(); private: // Overridden from View for layout purpose. virtual void Layout(); virtual gfx::Size GetPreferredSize(); // Overridden from View for keyboard UI purpose. virtual bool OnKeyPressed(const KeyEvent& event); virtual bool OnMouseWheel(const MouseWheelEvent& e); // Overridden from NativeControlGtk. virtual void CreateNativeControl(); // Overridden from NativeScrollBarWrapper. virtual int GetPosition() const; virtual View* GetView(); virtual void Update(int viewport_size, int content_size, int current_pos); // Moves the scrollbar by the given value. Negative value is allowed. // (moves upward) void MoveBy(int o); // Moves the scrollbar by the page (viewport) size. void MovePage(bool positive); // Moves the scrollbar by predefined step size. void MoveStep(bool positive); // Moves the scrollbar to the given position. MoveTo(0) moves it to the top. void MoveTo(int p); // Moves the scrollbar to the end. void MoveToBottom(); // Invoked when the scrollbar's position is changed. void ValueChanged(); static void CallValueChanged(GtkWidget* widget, NativeScrollBarGtk* scroll_bar); // The NativeScrollBar we are bound to. NativeScrollBar* native_scroll_bar_; private: DISALLOW_COPY_AND_ASSIGN(NativeScrollBarGtk); }; } // namespace views #endif // #ifndef VIEWS_CONTROLS_SCROLLBAR_NATIVE_SCROLL_BAR_GTK_H_