// Generated by gmmproc 2.82.0 -- DO NOT MODIFY! #ifndef _GTKMM_EVENTCONTROLLERSCROLL_H #define _GTKMM_EVENTCONTROLLERSCROLL_H #include #include /* Copyright (C) 2018 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 GtkEventControllerScroll = struct _GtkEventControllerScroll; using GtkEventControllerScrollClass = struct _GtkEventControllerScrollClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API EventControllerScroll_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { /** Event controller for scroll events. * * %Gtk::EventControllerScroll is an event controller meant to handle * scroll events from mice and touchpads. It is capable of handling * both discrete and continuous scroll events, abstracting them both * on the signal_scroll() signal (deltas in the discrete case are multiples of 1). * * In the case of continuous scroll events, %EventControllerScroll * encloses all signal_scroll() events between two * signal_scroll_begin() and signal_scroll_end() signals. * * The behavior of the event controller can be modified by the * flags given at creation time, or modified at a later point through * set_flags() (e.g. because the scrolling conditions of the widget changed). * * The controller can be set up to emit motion for either/both vertical and * horizontal scroll events through Gtk::EventControllerScroll::Flags::VERTICAL, * Gtk::EventControllerScroll::Flags::HORIZONTAL and * Gtk::EventControllerScroll::Flags::BOTH_AXES. * If any axis is disabled, the respective signal_scroll() * delta will be 0. Vertical scroll events will be translated to horizontal * motion for the devices incapable of horizontal scrolling. * * The event controller can also be forced to emit discrete events on all devices * through Gtk::EventControllerScroll::Flags::DISCRETE. This can be used to implement * discrete actions triggered through scroll events (e.g. switching across * combobox options). * * The Gtk::EventControllerScroll::Flags::KINETIC flag toggles the emission of the * signal_decelerate() signal, emitted at the end of scrolling * with two X/Y velocity arguments that are consistent with the motion that * was received. * * @newin{3,94} * * @ingroup Gestures */ class GTKMM_API EventControllerScroll : public EventController { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: using CppObjectType = EventControllerScroll; using CppClassType = EventControllerScroll_Class; using BaseObjectType = GtkEventControllerScroll; using BaseClassType = GtkEventControllerScrollClass; // noncopyable EventControllerScroll(const EventControllerScroll&) = delete; EventControllerScroll& operator=(const EventControllerScroll&) = delete; private: friend class EventControllerScroll_Class; static CppClassType eventcontrollerscroll_class_; protected: explicit EventControllerScroll(const Glib::ConstructParams& construct_params); explicit EventControllerScroll(GtkEventControllerScroll* castitem); #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: EventControllerScroll(EventControllerScroll&& src) noexcept; EventControllerScroll& operator=(EventControllerScroll&& src) noexcept; ~EventControllerScroll() noexcept override; /** 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. GtkEventControllerScroll* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GtkEventControllerScroll* gobj() const { return reinterpret_cast(gobject_); } ///Provides access to the underlying C instance. The caller is responsible for unrefing it. Use when directly setting fields in structs. GtkEventControllerScroll* gobj_copy(); private: protected: EventControllerScroll(); public: /** @addtogroup gtkmmEnums gtkmm Enums and Flags */ /** * @var Flags::NONE * Don't emit scroll. * * @var Flags::VERTICAL * Emit scroll with vertical deltas. * * @var Flags::HORIZONTAL * Emit scroll with horizontal deltas. * * @var Flags::DISCRETE * Only emit deltas that are multiples of 1. * * @var Flags::KINETIC * Emit signal_decelerate() after continuous scroll finishes. * * @var Flags::BOTH_AXES * Emit scroll on both axes. */ /** Describes the behavior of a `Gtk::EventControllerScroll`. * * @ingroup gtkmmEnums * @par Bitwise operators: * EventControllerScroll::Flags operator|(EventControllerScroll::Flags, EventControllerScroll::Flags)
* EventControllerScroll::Flags operator&(EventControllerScroll::Flags, EventControllerScroll::Flags)
* EventControllerScroll::Flags operator^(EventControllerScroll::Flags, EventControllerScroll::Flags)
* EventControllerScroll::Flags operator~(EventControllerScroll::Flags)
* EventControllerScroll::Flags& operator|=(EventControllerScroll::Flags&, EventControllerScroll::Flags)
* EventControllerScroll::Flags& operator&=(EventControllerScroll::Flags&, EventControllerScroll::Flags)
* EventControllerScroll::Flags& operator^=(EventControllerScroll::Flags&, EventControllerScroll::Flags)
*/ enum class Flags { NONE = 0x0, VERTICAL = 1 << 0, HORIZONTAL = 1 << 1, DISCRETE = 1 << 2, KINETIC = 1 << 3, BOTH_AXES = 0x3 }; static Glib::RefPtr create(); /** Sets the flags conditioning scroll controller behavior. * * @param flags Flags affecting the controller behavior. */ void set_flags(Flags flags); /** Gets the flags conditioning the scroll controller behavior. * * @return The controller flags. */ Flags get_flags() const; /** Gets the scroll unit of the last * signal_scroll() signal received. * * Always returns Gdk::ScrollUnit::WHEEL if the * Gtk::EventControllerScroll::Flags::DISCRETE flag is set. * * @newin{4,8} * * @return The scroll unit. */ Gdk::ScrollUnit get_unit() const; /** The flags affecting event controller behavior. * * Default value: Gtk::EventControllerScroll::Flags::NONE * * @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< Flags > property_flags() ; /** The flags affecting event controller behavior. * * Default value: Gtk::EventControllerScroll::Flags::NONE * * @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< Flags > property_flags() const; // no_default_handler because GtkEventControllerScrollClass is private. /** * @par Slot Prototype: * void on_my_%scroll_begin() * * Flags: Run First * * Signals that a new scrolling operation has begun. * * It will only be emitted on devices capable of it. */ Glib::SignalProxy signal_scroll_begin(); /** * @par Slot Prototype: * bool on_my_%scroll(double dx, double dy) * * Flags: Run Last * * Signals that the widget should scroll by the * amount specified by @a dx and @a dy. * * For the representation unit of the deltas, see * Gtk::EventControllerScroll::get_unit(). * * @param dx X delta. * @param dy Y delta. * @return true if the scroll event was handled, * false otherwise. */ Glib::SignalProxy signal_scroll(); /** * @par Slot Prototype: * void on_my_%scroll_end() * * Flags: Run First * * Signals that a scrolling operation has finished. * * It will only be emitted on devices capable of it. */ Glib::SignalProxy signal_scroll_end(); /** * @par Slot Prototype: * void on_my_%decelerate(double vel_x, double vel_y) * * Flags: Run First * * Emitted after scroll is finished if the * Gtk::EventControllerScroll::Flags::KINETIC flag is set. * * @a vel_x and @a vel_y express the initial velocity that was * imprinted by the scroll events. @a vel_x and @a vel_y are expressed in * pixels/ms. * * @param vel_x X velocity. * @param vel_y Y velocity. */ Glib::SignalProxy signal_decelerate(); // There are no vfuncs. 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 Gtk { /** @ingroup gtkmmEnums */ inline constexpr EventControllerScroll::Flags operator|(EventControllerScroll::Flags lhs, EventControllerScroll::Flags rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } /** @ingroup gtkmmEnums */ inline constexpr EventControllerScroll::Flags operator&(EventControllerScroll::Flags lhs, EventControllerScroll::Flags rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } /** @ingroup gtkmmEnums */ inline constexpr EventControllerScroll::Flags operator^(EventControllerScroll::Flags lhs, EventControllerScroll::Flags rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup gtkmmEnums */ inline constexpr EventControllerScroll::Flags operator~(EventControllerScroll::Flags flags) { return static_cast(~static_cast(flags)); } /** @ingroup gtkmmEnums */ inline EventControllerScroll::Flags& operator|=(EventControllerScroll::Flags& lhs, EventControllerScroll::Flags rhs) { return (lhs = static_cast(static_cast(lhs) | static_cast(rhs))); } /** @ingroup gtkmmEnums */ inline EventControllerScroll::Flags& operator&=(EventControllerScroll::Flags& lhs, EventControllerScroll::Flags rhs) { return (lhs = static_cast(static_cast(lhs) & static_cast(rhs))); } /** @ingroup gtkmmEnums */ inline EventControllerScroll::Flags& operator^=(EventControllerScroll::Flags& lhs, EventControllerScroll::Flags rhs) { return (lhs = static_cast(static_cast(lhs) ^ static_cast(rhs))); } } // namespace Gtk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GTKMM_API Value : public Glib::Value_Flags { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 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::EventControllerScroll */ GTKMM_API Glib::RefPtr wrap(GtkEventControllerScroll* object, bool take_copy = false); } #endif /* _GTKMM_EVENTCONTROLLERSCROLL_H */