// Generated by gmmproc 2.84.0 -- DO NOT MODIFY! #ifndef _GTKMM_SCROLLEDWINDOW_H #define _GTKMM_SCROLLEDWINDOW_H #include #include /* Copyright (C) 1998-2002 The gtkmm Development Team * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see . */ #include #ifndef DOXYGEN_SHOULD_SKIP_THIS using GtkScrolledWindow = struct _GtkScrolledWindow; using GtkScrolledWindowClass = struct _GtkScrolledWindowClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API ScrolledWindow_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class Adjustment; class Scrollbar; /** A container that makes its child scrollable. * * It does so using either internally added scrollbars or externally * associated adjustments, and optionally draws a frame around the child. * * Widgets with native scrolling support, i.e. those whose classes implement * the Gtk::Scrollable interface, are added directly. For other types * of widget, the class Gtk::Viewport acts as an adaptor, giving * scrollability to other widgets. set_child() intelligently * accounts for whether or not the added child is a %Gtk::Scrollable. * If it isn’t, then it wraps the child in a %Gtk::Viewport. Therefore, you can * just add any child widget and not worry about the details. * If set_child() has added a %Gtk::Viewport for you, * it will be automatically removed when you unset the child. * * Unless property_hscrollbar_policy() and property_vscrollbar_policy() are * Gtk::PolicyType::NEVER or Gtk::PolicyType::EXTERNAL, %Gtk::ScrolledWindow * adds internal Gtk::Scrollbar widgets * around its child. The scroll position of the child, and if applicable the * scrollbars, is controlled by the property_hadjustment() * and property_vadjustment() that are associated with the * %Gtk::ScrolledWindow. See the docs on Gtk::Scrollbar for the details, * but note that the “step_increment” and “page_increment” fields are only * effective if the policy causes scrollbars to be present. * * If a %Gtk::ScrolledWindow doesn’t behave quite as you would like, or * doesn’t have exactly the right layout, it’s very possible to set up * your own scrolling with Gtk::Scrollbar and for example a Gtk::Grid. * * # Touch support * * %Gtk::ScrolledWindow has built-in support for touch devices. When a * touchscreen is used, swiping will move the scrolled window, and will * expose 'kinetic' behavior. This can be turned off with * property_kinetic_scrolling() if it is undesired. * * %Gtk::ScrolledWindow also displays visual 'overshoot' indication when * the content is pulled beyond the end, and this situation can be * captured with signal_edge_overshot(). * * If no mouse device is present, the scrollbars will be overlaid as * narrow, auto-hiding indicators over the content. If traditional * scrollbars are desired although no mouse is present, this behavior * can be turned off with property_overlay_scrolling(). * * @ingroup Widgets * @ingroup Containers */ class GTKMM_API ScrolledWindow : public Widget { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef ScrolledWindow CppObjectType; typedef ScrolledWindow_Class CppClassType; typedef GtkScrolledWindow BaseObjectType; typedef GtkScrolledWindowClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ ScrolledWindow(ScrolledWindow&& src) noexcept; ScrolledWindow& operator=(ScrolledWindow&& src) noexcept; // noncopyable ScrolledWindow(const ScrolledWindow&) = delete; ScrolledWindow& operator=(const ScrolledWindow&) = delete; ~ScrolledWindow() noexcept override; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend GTKMM_API class ScrolledWindow_Class; static CppClassType scrolledwindow_class_; protected: explicit ScrolledWindow(const Glib::ConstructParams& construct_params); explicit ScrolledWindow(GtkScrolledWindow* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: /** Get the GType for this class, for use with the underlying GObject type system. */ static GType get_type() G_GNUC_CONST; #ifndef DOXYGEN_SHOULD_SKIP_THIS static GType get_base_type() G_GNUC_CONST; #endif /// Provides access to the underlying C GObject. GtkScrolledWindow* gobj() { return reinterpret_cast(gobject_); } /// Provides access to the underlying C GObject. const GtkScrolledWindow* gobj() const { return reinterpret_cast(gobject_); } private: public: ScrolledWindow(); /** Sets the `Gtk::Adjustment` for the horizontal scrollbar. * * @param hadjustment The `Gtk::Adjustment` to use, or nullptr to create a new one. */ void set_hadjustment(const Glib::RefPtr& hadjustment); /** Sets the `Gtk::Adjustment` for the vertical scrollbar. * * @param vadjustment The `Gtk::Adjustment` to use, or nullptr to create a new one. */ void set_vadjustment(const Glib::RefPtr& vadjustment); /** Returns the horizontal scrollbar’s adjustment. * * This is the adjustment used to connect the horizontal scrollbar * to the child widget’s horizontal scroll functionality. * * @return The horizontal `Gtk::Adjustment`. */ Glib::RefPtr get_hadjustment(); /** Returns the horizontal scrollbar’s adjustment. * * This is the adjustment used to connect the horizontal scrollbar * to the child widget’s horizontal scroll functionality. * * @return The horizontal `Gtk::Adjustment`. */ Glib::RefPtr get_hadjustment() const; /** Returns the vertical scrollbar’s adjustment. * * This is the adjustment used to connect the vertical * scrollbar to the child widget’s vertical scroll functionality. * * @return The vertical `Gtk::Adjustment`. */ Glib::RefPtr get_vadjustment(); /** Returns the vertical scrollbar’s adjustment. * * This is the adjustment used to connect the vertical * scrollbar to the child widget’s vertical scroll functionality. * * @return The vertical `Gtk::Adjustment`. */ Glib::RefPtr get_vadjustment() const; /** Sets the scrollbar policy for the horizontal and vertical scrollbars. * * The policy determines when the scrollbar should appear; it is a value * from the Gtk::PolicyType enumeration. If Gtk::PolicyType::ALWAYS, the * scrollbar is always present; if Gtk::PolicyType::NEVER, the scrollbar is * never present; if Gtk::PolicyType::AUTOMATIC, the scrollbar is present only * if needed (that is, if the slider part of the bar would be smaller * than the trough — the display is larger than the page size). * * @param hscrollbar_policy Policy for horizontal bar. * @param vscrollbar_policy Policy for vertical bar. */ void set_policy(PolicyType hscrollbar_policy, PolicyType vscrollbar_policy); /** Retrieves the current policy values for the horizontal and vertical * scrollbars. * * See set_policy(). * * @param hscrollbar_policy Location to store the policy * for the horizontal scrollbar. * @param vscrollbar_policy Location to store the policy * for the vertical scrollbar. */ void get_policy(PolicyType& hscrollbar_policy, PolicyType& vscrollbar_policy) const; /** Sets the placement of the contents with respect to the scrollbars * for the scrolled window. * * The default is Gtk::CornerType::TOP_LEFT, meaning the child is * in the top left, with the scrollbars underneath and to the right. * Other values in Gtk::CornerType are Gtk::CornerType::TOP_RIGHT, * Gtk::CornerType::BOTTOM_LEFT, and Gtk::CornerType::BOTTOM_RIGHT. * * See also get_placement() and * unset_placement(). * * @param window_placement Position of the child window. */ void set_placement(CornerType window_placement); /** Unsets the placement of the contents with respect to the scrollbars. * * If no window placement is set for a scrolled window, * it defaults to Gtk::CornerType::TOP_LEFT. */ void unset_placement(); /** Gets the placement of the contents with respect to the scrollbars. * * @return The current placement value. */ CornerType get_placement() const; /** Changes the frame drawn around the contents of @a scrolled_window. * * @param has_frame Whether to draw a frame around scrolled window contents. */ void set_has_frame(bool has_frame = true); /** Gets whether the scrolled window draws a frame. * * @return true if the @a scrolled_window has a frame. */ bool get_has_frame() const; /** Returns the vertical scrollbar of @a scrolled_window. * * @return The vertical scrollbar of the scrolled window. */ Scrollbar* get_vscrollbar(); /** Returns the vertical scrollbar of @a scrolled_window. * * @return The vertical scrollbar of the scrolled window. */ const Scrollbar* get_vscrollbar() const; /** Returns the horizontal scrollbar of @a scrolled_window. * * @return The horizontal scrollbar of the scrolled window. */ Scrollbar* get_hscrollbar(); /** Returns the horizontal scrollbar of @a scrolled_window. * * @return The horizontal scrollbar of the scrolled window. */ const Scrollbar* get_hscrollbar() const; /** Gets the minimum content width of @a scrolled_window. * * @return The minimum content width. */ int get_min_content_width() const; /** Sets the minimum width that @a scrolled_window should keep visible. * * Note that this can and (usually will) be smaller than the minimum * size of the content. * * It is a programming error to set the minimum content width to a * value greater than property_max_content_width(). * * @param width The minimal content width. */ void set_min_content_width(int width); /** Gets the minimal content height of @a scrolled_window. * * @return The minimal content height. */ int get_min_content_height() const; /** Sets the minimum height that @a scrolled_window should keep visible. * * Note that this can and (usually will) be smaller than the minimum * size of the content. * * It is a programming error to set the minimum content height to a * value greater than property_max_content_height(). * * @param height The minimal content height. */ void set_min_content_height(int height); /** Turns kinetic scrolling on or off. * * Kinetic scrolling only applies to devices with source * Gdk::InputSource::TOUCHSCREEN. * * @param kinetic_scrolling true to enable kinetic scrolling. */ void set_kinetic_scrolling(bool kinetic_scrolling = true); /** Returns the specified kinetic scrolling behavior. * * @return The scrolling behavior flags. */ bool get_kinetic_scrolling() const; /** Enables or disables overlay scrolling for this scrolled window. * * @param overlay_scrolling Whether to enable overlay scrolling. */ void set_overlay_scrolling(bool overlay_scrolling = true); /** Returns whether overlay scrolling is enabled for this scrolled window. * * @return true if overlay scrolling is enabled. */ bool get_overlay_scrolling() const; /** Sets the maximum width that @a scrolled_window should keep visible. * * The @a scrolled_window will grow up to this width before it starts * scrolling the content. * * It is a programming error to set the maximum content width to a * value smaller than property_min_content_width(). * * @param width The maximum content width. */ void set_max_content_width(int width); /** Returns the maximum content width set. * * @return The maximum content width, or -1. */ int get_max_content_width() const; /** Sets the maximum height that @a scrolled_window should keep visible. * * The @a scrolled_window will grow up to this height before it starts * scrolling the content. * * It is a programming error to set the maximum content height to a value * smaller than property_min_content_height(). * * @param height The maximum content height. */ void set_max_content_height(int height); /** Returns the maximum content height set. * * @return The maximum content height, or -1. */ int get_max_content_height() const; /** Sets whether the natural width of the child should be calculated * and propagated through the scrolled window’s requested natural width. * * @param propagate Whether to propagate natural width. */ void set_propagate_natural_width(bool propagate = true); /** Reports whether the natural width of the child will be calculated * and propagated through the scrolled window’s requested natural width. * * @return Whether natural width propagation is enabled. */ bool get_propagate_natural_width() const; /** Sets whether the natural height of the child should be calculated * and propagated through the scrolled window’s requested natural height. * * @param propagate Whether to propagate natural height. */ void set_propagate_natural_height(bool propagate = true); /** Reports whether the natural height of the child will be calculated * and propagated through the scrolled window’s requested natural height. * * @return Whether natural height propagation is enabled. */ bool get_propagate_natural_height() const; /** Sets the child widget of @a scrolled_window. * * If @a child does not implement the Gtk::Scrollable interface, * the scrolled window will add @a child to a Gtk::Viewport instance * and then add the viewport as its child widget. * * @param child The child widget. */ void set_child(Widget& child); void unset_child(); /** Gets the child widget of @a scrolled_window. * * If the scrolled window automatically added a Gtk::Viewport, this * function will return the viewport widget, and you can retrieve its child * using Gtk::Viewport::get_child(). * * @return The child widget of @a scrolled_window. */ Widget* get_child(); /** Gets the child widget of @a scrolled_window. * * If the scrolled window automatically added a Gtk::Viewport, this * function will return the viewport widget, and you can retrieve its child * using Gtk::Viewport::get_child(). * * @return The child widget of @a scrolled_window. */ const Widget* get_child() const; //Keybinding signals: // no_default_handler because the wrapped C signals have no default handlers. /** * @par Slot Prototype: * void on_my_%edge_overshot(Gtk::PositionType pos) * * Flags: Run Last * * Emitted whenever user initiated scrolling makes the scrolled * window firmly surpass the limits defined by the adjustment * in that orientation. * * A similar behavior without edge resistance is provided by the * signal_edge_reached() signal. * * @note The @a pos argument is LTR/RTL aware, so callers should be * aware too if intending to provide behavior on horizontal edges. * * @param pos Edge side that was hit. */ Glib::SignalProxy signal_edge_overshot(); /** * @par Slot Prototype: * void on_my_%edge_reached(Gtk::PositionType pos) * * Flags: Run Last * * Emitted whenever user-initiated scrolling makes the scrolled * window exactly reach the lower or upper limits defined by the * adjustment in that orientation. * * A similar behavior with edge resistance is provided by the * signal_edge_overshot() signal. * * @note The @a pos argument is LTR/RTL aware, so callers should be * aware too if intending to provide behavior on horizontal edges. * * @param pos Edge side that was reached. */ Glib::SignalProxy signal_edge_reached(); /** The `Gtk::Adjustment` for the horizontal position. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_hadjustment() ; /** The `Gtk::Adjustment` for the horizontal position. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_hadjustment() const; /** The `Gtk::Adjustment` for the vertical position. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Glib::RefPtr > property_vadjustment() ; /** The `Gtk::Adjustment` for the vertical position. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Glib::RefPtr > property_vadjustment() const; /** When the horizontal scrollbar is displayed. * * Use Gtk::ScrolledWindow::set_policy() to set * this property. * * Default value: Gtk::PolicyType::AUTOMATIC * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< PolicyType > property_hscrollbar_policy() ; /** When the horizontal scrollbar is displayed. * * Use Gtk::ScrolledWindow::set_policy() to set * this property. * * Default value: Gtk::PolicyType::AUTOMATIC * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< PolicyType > property_hscrollbar_policy() const; /** When the vertical scrollbar is displayed. * * Use Gtk::ScrolledWindow::set_policy() to set * this property. * * Default value: Gtk::PolicyType::AUTOMATIC * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< PolicyType > property_vscrollbar_policy() ; /** When the vertical scrollbar is displayed. * * Use Gtk::ScrolledWindow::set_policy() to set * this property. * * Default value: Gtk::PolicyType::AUTOMATIC * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< PolicyType > property_vscrollbar_policy() const; /** Where the contents are located with respect to the scrollbars. * * Default value: Gtk::CornerType::TOP_LEFT * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< CornerType > property_window_placement() ; /** Where the contents are located with respect to the scrollbars. * * Default value: Gtk::CornerType::TOP_LEFT * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< CornerType > property_window_placement() const; /** Whether to draw a frame around the contents. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_has_frame() ; /** Whether to draw a frame around the contents. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_has_frame() const; /** The minimum content width of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< int > property_min_content_width() ; /** The minimum content width of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_min_content_width() const; /** The minimum content height of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< int > property_min_content_height() ; /** The minimum content height of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_min_content_height() const; /** Whether kinetic scrolling is enabled or not. * * Kinetic scrolling only applies to devices with source Gdk::InputSource::TOUCHSCREEN. * * Default value: true * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_kinetic_scrolling() ; /** Whether kinetic scrolling is enabled or not. * * Kinetic scrolling only applies to devices with source Gdk::InputSource::TOUCHSCREEN. * * Default value: true * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_kinetic_scrolling() const; /** Whether overlay scrolling is enabled or not. * * If it is, the scrollbars are only added as traditional widgets * when a mouse is present. Otherwise, they are overlaid on top of * the content, as narrow indicators. * * Note that overlay scrolling can also be globally disabled, with * the Gtk::Settings::property_gtk_overlay_scrolling() setting. * * Default value: true * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_overlay_scrolling() ; /** Whether overlay scrolling is enabled or not. * * If it is, the scrollbars are only added as traditional widgets * when a mouse is present. Otherwise, they are overlaid on top of * the content, as narrow indicators. * * Note that overlay scrolling can also be globally disabled, with * the Gtk::Settings::property_gtk_overlay_scrolling() setting. * * Default value: true * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_overlay_scrolling() const; /** The maximum content width of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< int > property_max_content_width() ; /** The maximum content width of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_max_content_width() const; /** The maximum content height of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< int > property_max_content_height() ; /** The maximum content height of @a scrolled_window. * * Default value: -1 * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< int > property_max_content_height() const; /** Whether the natural width of the child should be calculated and propagated * through the scrolled window’s requested natural width. * * This is useful in cases where an attempt should be made to allocate exactly * enough space for the natural size of the child. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_propagate_natural_width() ; /** Whether the natural width of the child should be calculated and propagated * through the scrolled window’s requested natural width. * * This is useful in cases where an attempt should be made to allocate exactly * enough space for the natural size of the child. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_propagate_natural_width() const; /** Whether the natural height of the child should be calculated and propagated * through the scrolled window’s requested natural height. * * This is useful in cases where an attempt should be made to allocate exactly * enough space for the natural size of the child. * * Default value: false * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< bool > property_propagate_natural_height() ; /** Whether the natural height of the child should be calculated and propagated * through the scrolled window’s requested natural height. * * This is useful in cases where an attempt should be made to allocate exactly * enough space for the natural size of the child. * * Default value: false * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< bool > property_propagate_natural_height() const; /** The child widget. * * When setting this property, if the child widget does not implement * Gtk::Scrollable, the scrolled window will add the child to * a Gtk::Viewport and then set the viewport as the child. * * @return A PropertyProxy that allows you to get or set the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy< Widget* > property_child() ; /** The child widget. * * When setting this property, if the child widget does not implement * Gtk::Scrollable, the scrolled window will add the child to * a Gtk::Viewport and then set the viewport as the child. * * @return A PropertyProxy_ReadOnly that allows you to get the value of the property, * or receive notification when the value of the property changes. */ Glib::PropertyProxy_ReadOnly< Widget* > property_child() const; public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: }; } //namespace Gtk namespace Glib { /** A Glib::wrap() method for this object. * * @param object The C instance. * @param take_copy False if the result should take ownership of the C instance. True if it should take a new copy or ref. * @result A C++ instance that wraps this C instance. * * @relates Gtk::ScrolledWindow */ GTKMM_API Gtk::ScrolledWindow* wrap(GtkScrolledWindow* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_SCROLLEDWINDOW_H */