// Generated by gmmproc 2.84.0 -- DO NOT MODIFY! #ifndef _GDKMM_TOPLEVEL_H #define _GDKMM_TOPLEVEL_H #include #include /* Copyright (C) 2020 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 #include #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS extern "C" { typedef struct _GdkToplevelInterface GdkToplevelInterface; } #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS using GdkToplevel = struct _GdkToplevel; using GdkToplevelClass = struct _GdkToplevelClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gdk { class GDKMM_API Toplevel_Class; } // namespace Gdk #endif // DOXYGEN_SHOULD_SKIP_THIS namespace Gdk { /** @addtogroup gdkmmEnums gdkmm Enums and Flags */ /** * @var SurfaceEdge::NORTH_WEST * The top left corner. * * @var SurfaceEdge::NORTH * The top edge. * * @var SurfaceEdge::NORTH_EAST * The top right corner. * * @var SurfaceEdge::WEST * The left edge. * * @var SurfaceEdge::EAST * The right edge. * * @var SurfaceEdge::SOUTH_WEST * The lower left corner. * * @var SurfaceEdge::SOUTH * The lower edge. * * @var SurfaceEdge::SOUTH_EAST * The lower right corner. */ /** Determines a surface edge or corner. * * @ingroup gdkmmEnums */ enum class SurfaceEdge { NORTH_WEST, NORTH, NORTH_EAST, WEST, EAST, SOUTH_WEST, SOUTH, SOUTH_EAST }; } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GDKMM_API Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { /** * @var FullscreenMode::ON_CURRENT_MONITOR * Fullscreen on current monitor only. * * @var FullscreenMode::ON_ALL_MONITORS * Span across all monitors when fullscreen. */ /** Indicates which monitor a surface should span over when in fullscreen mode. * * @ingroup gdkmmEnums */ enum class FullscreenMode { ON_CURRENT_MONITOR, ON_ALL_MONITORS }; } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GDKMM_API Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { /** * @var TitlebarGesture::DOUBLE_CLICK * Double click gesture. * * @var TitlebarGesture::RIGHT_CLICK * Right click gesture. * * @var TitlebarGesture::MIDDLE_CLICK * Middle click gesture. */ /** The kind of title bar gesture to emit with * Gdk::Toplevel::titlebar_gesture(). * * @newin{4,4} * * @ingroup gdkmmEnums */ enum class TitlebarGesture { DOUBLE_CLICK = 1, RIGHT_CLICK, MIDDLE_CLICK }; } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GDKMM_API Value : public Glib::Value_Enum { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { /** Interface for toplevel surfaces. * * A %Gdk::Toplevel is a freestanding toplevel surface. * * The %Gdk::Toplevel interface provides useful APIs for * interacting with the windowing system, such as controlling * maximization and size of the surface, setting icons and * transient parents for dialogs. * * @see Gdk::Surface, Gdk::Popup * @newin{3,98} */ class GDKMM_API Toplevel : public Glib::Interface { #ifndef DOXYGEN_SHOULD_SKIP_THIS public: using CppObjectType = Toplevel; using CppClassType = Toplevel_Class; using BaseObjectType = GdkToplevel; using BaseClassType = GdkToplevelInterface; // noncopyable Toplevel(const Toplevel&) = delete; Toplevel& operator=(const Toplevel&) = delete; private: friend class Toplevel_Class; static CppClassType toplevel_class_; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ protected: /** * You should derive from this class to use it. */ Toplevel(); #ifndef DOXYGEN_SHOULD_SKIP_THIS /** Called by constructors of derived classes. Provide the result of * the Class init() function to ensure that it is properly * initialized. * * @param interface_class The Class object for the derived type. */ explicit Toplevel(const Glib::Interface_Class& interface_class); public: // This is public so that C++ wrapper instances can be // created for C instances of unwrapped types. // For instance, if an unexpected C type implements the C interface. explicit Toplevel(GdkToplevel* castitem); protected: #endif /* DOXYGEN_SHOULD_SKIP_THIS */ public: Toplevel(Toplevel&& src) noexcept; Toplevel& operator=(Toplevel&& src) noexcept; ~Toplevel() noexcept override; static void add_interface(GType gtype_implementer); /** 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. GdkToplevel* gobj() { return reinterpret_cast(gobject_); } ///Provides access to the underlying C GObject. const GdkToplevel* gobj() const { return reinterpret_cast(gobject_); } private: public: /** * @var State::MINIMIZED * The surface is minimized. * * @var State::MAXIMIZED * The surface is maximized. * * @var State::STICKY * The surface is sticky. * * @var State::FULLSCREEN * The surface is maximized without decorations. * * @var State::ABOVE * The surface is kept above other surfaces. * * @var State::BELOW * The surface is kept below other surfaces. * * @var State::FOCUSED * The surface is presented as focused (with active decorations). * * @var State::TILED * The surface is in a tiled state. * * @var State::TOP_TILED * Whether the top edge is tiled. * * @var State::TOP_RESIZABLE * Whether the top edge is resizable. * * @var State::RIGHT_TILED * Whether the right edge is tiled. * * @var State::RIGHT_RESIZABLE * Whether the right edge is resizable. * * @var State::BOTTOM_TILED * Whether the bottom edge is tiled. * * @var State::BOTTOM_RESIZABLE * Whether the bottom edge is resizable. * * @var State::LEFT_TILED * Whether the left edge is tiled. * * @var State::LEFT_RESIZABLE * Whether the left edge is resizable. * * @var State::SUSPENDED * The surface is not visible to the user. * * @newin{4,12} */ /** Specifies the state of a toplevel surface. * * On platforms that support information about individual edges, the * Gdk::Toplevel::State::TILED state will be set whenever any of the individual * tiled states is set. On platforms that lack that support, the tiled state * will give an indication of tiledness without any of the per-edge states * being set. * * @ingroup gdkmmEnums * @par Bitwise operators: * Toplevel::State operator|(Toplevel::State, Toplevel::State)
* Toplevel::State operator&(Toplevel::State, Toplevel::State)
* Toplevel::State operator^(Toplevel::State, Toplevel::State)
* Toplevel::State operator~(Toplevel::State)
* Toplevel::State& operator|=(Toplevel::State&, Toplevel::State)
* Toplevel::State& operator&=(Toplevel::State&, Toplevel::State)
* Toplevel::State& operator^=(Toplevel::State&, Toplevel::State)
*/ enum class State { MINIMIZED = 1 << 0, MAXIMIZED = 1 << 1, STICKY = 1 << 2, FULLSCREEN = 1 << 3, ABOVE = 1 << 4, BELOW = 1 << 5, FOCUSED = 1 << 6, TILED = 1 << 7, TOP_TILED = 1 << 8, TOP_RESIZABLE = 1 << 9, RIGHT_TILED = 1 << 10, RIGHT_RESIZABLE = 1 << 11, BOTTOM_TILED = 1 << 12, BOTTOM_RESIZABLE = 1 << 13, LEFT_TILED = 1 << 14, LEFT_RESIZABLE = 1 << 15, SUSPENDED = 1 << 16 }; /** * @var Capabilities::EDGE_CONSTRAINTS * Whether tiled window states are supported. * * @newin{4,20} * * @var Capabilities::INHIBIT_SHORTCUTS * Whether inhibiting system shortcuts is supported. * See Gdk::Toplevel::inhibit_system_shortcuts(). * * @newin{4,20} * * @var Capabilities::TITLEBAR_GESTURES * Whether titlebar gestures are supported. * See Gdk::Toplevel::titlebar_gesture(). * * @newin{4,20} * * @var Capabilities::WINDOW_MENU * Whether showing the window menu is supported. * See Gdk::Toplevel::show_window_menu(). * * @newin{4,20} * * @var Capabilities::MAXIMIZE * Whether the toplevel can be maximized. * * @newin{4,20} * * @var Capabilities::FULLSCREEN * Whether the toplevel can be made fullscreen. * * @newin{4,20} * * @var Capabilities::MINIMIZE * Whether the toplevel can be minimized. * See Gdk::Toplevel::minimize(). * * @newin{4,20} * * @var Capabilities::LOWER * Whether the toplevel can be lowered. * See Gdk::Toplevel::lower(). * * @newin{4,20} */ /** Reflects what features a `Gdk::Toplevel` supports. * * @newin{4,20} * * @ingroup gdkmmEnums * @par Bitwise operators: * Toplevel::Capabilities operator|(Toplevel::Capabilities, Toplevel::Capabilities)
* Toplevel::Capabilities operator&(Toplevel::Capabilities, Toplevel::Capabilities)
* Toplevel::Capabilities operator^(Toplevel::Capabilities, Toplevel::Capabilities)
* Toplevel::Capabilities operator~(Toplevel::Capabilities)
* Toplevel::Capabilities& operator|=(Toplevel::Capabilities&, Toplevel::Capabilities)
* Toplevel::Capabilities& operator&=(Toplevel::Capabilities&, Toplevel::Capabilities)
* Toplevel::Capabilities& operator^=(Toplevel::Capabilities&, Toplevel::Capabilities)
*/ enum class Capabilities { EDGE_CONSTRAINTS = 1 << 0, INHIBIT_SHORTCUTS = 1 << 1, TITLEBAR_GESTURES = 1 << 2, WINDOW_MENU = 1 << 3, MAXIMIZE = 1 << 4, FULLSCREEN = 1 << 5, MINIMIZE = 1 << 6, LOWER = 1 << 7 }; /** Present @a toplevel after having processed the `Gdk::ToplevelLayout` rules. * * If the toplevel was previously not showing, it will be showed, * otherwise it will change layout according to @a layout. * * GDK may emit the signal_compute_size() signal to let * the user of this toplevel compute the preferred size of the toplevel * surface. * * Presenting is asynchronous and the specified layout parameters are not * guaranteed to be respected. * * @param layout The `Gdk::ToplevelLayout` object used to layout. */ void present(const Glib::RefPtr& layout); /** Asks to minimize the @a toplevel. * * The windowing system may choose to ignore the request. * * @return true if the surface was minimized. */ bool minimize(); /** Asks to lower the @a toplevel below other windows. * * The windowing system may choose to ignore the request. * * @return true if the surface was lowered. */ bool lower(); /** Sets keyboard focus to @a surface. * * In most cases, [gtk_window_present_with_time()](../gtk4/method.Window.present_with_time.html) * should be used on a [GtkWindow](../gtk4/class.Window.html), rather than * calling this function. * * @param timestamp Timestamp of the event triggering the surface focus. */ void focus(guint32 timestamp); /** Gets the bitwise or of the currently active surface state flags, * from the `Gdk::Toplevel::State` enumeration. * * @return Surface state bitfield. */ State get_state() const; /** Sets the title of a toplevel surface. * * The title maybe be displayed in the titlebar, * in lists of windows, etc. * * @param title Title of @a surface. */ void set_title(const Glib::ustring& title); /** Sets the startup notification ID. * * When using GTK, typically you should use * [gtk_window_set_startup_id()](../gtk4/method.Window.set_startup_id.html) * instead of this low-level function. * * @param startup_id A string with startup-notification identifier. */ void set_startup_id(const Glib::ustring& startup_id); /** Sets a transient-for parent. * * Indicates to the window manager that @a surface is a transient * dialog associated with the application surface @a parent. This * allows the window manager to do things like center @a surface * on @a parent and keep @a surface above @a parent. * * See [gtk_window_set_transient_for()](../gtk4/method.Window.set_transient_for.html) * if you’re using [GtkWindow](../gtk4/class.Window.html). * * @param parent Another toplevel `Gdk::Surface`. */ void set_transient_for(const Glib::RefPtr& parent); /** Sets the toplevel to be modal. * * The application can use this hint to tell the * window manager that a certain surface has modal * behaviour. The window manager can use this information * to handle modal surfaces in a special way. * * You should only use this on surfaces for which you have * previously called set_transient_for(). * * @param modal true if the surface is modal, false otherwise. */ void set_modal(bool modal = true); /** Sets a list of icons for the surface. * * One of these will be used to represent the surface in iconic form. * The icon may be shown in window lists or task bars. Which icon * size is shown depends on the window manager. The window manager * can scale the icon but setting several size icons can give better * image quality. * * Note that some platforms don't support surface icons. * * @param surfaces A list of textures to use as icon, of different sizes. */ void set_icon_list(const std::vector>& surfaces); /** Asks the windowing system to show the window menu. * * The window menu is the menu shown when right-clicking the titlebar * on traditional windows managed by the window manager. This is useful * for windows using client-side decorations, activating it with a * right-click on the window decorations. * * @param event A `Gdk::Event` to show the menu for. * @return true if the window menu was shown and false otherwise. */ bool show_window_menu(const Glib::RefPtr& event); /** Sets the toplevel to be decorated. * * Setting @a decorated to false hints the desktop environment * that the surface has its own, client-side decorations and * does not need to have window decorations added. * * @param decorated true to request decorations. */ void set_decorated(bool decorated = true); /** Sets the toplevel to be deletable. * * Setting @a deletable to true hints the desktop environment * that it should offer the user a way to close the surface. * * @param deletable true to request a delete button. */ void set_deletable(bool deletable = true); /** Returns whether the desktop environment supports * tiled window states. * * @return true if the desktop environment supports tiled window states. */ bool supports_edge_constraints() const; /** Requests that the @a toplevel inhibit the system shortcuts. * * This is asking the desktop environment/windowing system to let all * keyboard events reach the surface, as long as it is focused, instead * of triggering system actions. * * If granted, the rerouting remains active until the default shortcuts * processing is restored with restore_system_shortcuts(), * or the request is revoked by the desktop environment, windowing system * or the user. * * A typical use case for this API is remote desktop or virtual machine * viewers which need to inhibit the default system keyboard shortcuts * so that the remote session or virtual host gets those instead of the * local environment. * * The windowing system or desktop environment may ask the user to grant * or deny the request or even choose to ignore the request entirely. * * The caller can be notified whenever the request is granted or revoked * by listening to the property_shortcuts_inhibited() property. * * @param event The `Gdk::Event` that is triggering the inhibit * request, or nullptr if none is available. */ void inhibit_system_shortcuts(const Glib::RefPtr& event); /** Restore default system keyboard shortcuts which were previously * inhibited. * * This undoes the effect of inhibit_system_shortcuts(). */ void restore_system_shortcuts(); /** Begins an interactive resize operation. * * You might use this function to implement a “window resize grip.” * * @param edge The edge or corner from which the drag is started. * @param device The device used for the operation. * @param button The button being used to drag, or 0 for a keyboard-initiated drag. * @param x Surface X coordinate of mouse click that began the drag. * @param y Surface Y coordinate of mouse click that began the drag. * @param timestamp Timestamp of mouse click that began the drag (use * Gdk::Event::get_time()). */ void begin_resize(SurfaceEdge edge, const Glib::RefPtr& device, int button, double x, double y, guint32 timestamp); /** Begins an interactive move operation. * * You might use this function to implement draggable titlebars. * * @param device The device used for the operation. * @param button The button being used to drag, or 0 for a keyboard-initiated drag. * @param x Surface X coordinate of mouse click that began the drag. * @param y Surface Y coordinate of mouse click that began the drag. * @param timestamp Timestamp of mouse click that began the drag (use * Gdk::Event::get_time()). */ void begin_move(const Glib::RefPtr& device, int button, double x, double y, guint32 timestamp); /** Performs a title bar gesture. * * @newin{4,20} * * @param gesture A `Gdk::TitlebarGesture`. * @return Whether the gesture was performed. */ bool titlebar_gesture(TitlebarGesture gesture); /** The capabilities that are available for this toplevel. * * @newin{4,20} */ Capabilities get_capabilities() const; /** Returns the gravity that is used when changing the toplevel * size programmatically. * * @newin{4,20} * * @return The gravity. */ Gravity get_gravity() const; /** Sets the gravity that is used when changing the toplevel * size programmatically. * * @newin{4,20} * * @param gravity The new gravity. */ void set_gravity(Gravity gravity); /** * @par Slot Prototype: * void on_my_%compute_size(ToplevelSize& size) * * Flags: Run Last * * Emitted when the size for the surface needs to be computed, when * it is present. * * This signal will normally be emitted during or after a call to * Gdk::Toplevel::present(), depending on the configuration * received by the windowing system. It may also be emitted at any * other point in time, in response to the windowing system * spontaneously changing the configuration of the toplevel surface. * * It is the responsibility of the toplevel user to handle this signal * and compute the desired size of the toplevel, given the information * passed via the Gdk::ToplevelSize object. Failing to do so * will result in an arbitrary size being used as a result. * * @param size A `Gdk::ToplevelSize`. */ Glib::SignalProxy signal_compute_size(); /** The state of the toplevel. * * Default value: 0 * * @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< State > property_state() const; /** The title of the surface. * * Default value: "" * * @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::ustring > property_title() ; /** The title of the surface. * * Default value: "" * * @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::ustring > property_title() const; /** The startup ID of the surface. * * See Gdk::AppLaunchContext for more information about * startup feedback. * * Default value: "" * * @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::ustring > property_startup_id() ; /** The startup ID of the surface. * * See Gdk::AppLaunchContext for more information about * startup feedback. * * Default value: "" * * @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::ustring > property_startup_id() const; /** The transient parent of the surface. * * @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_transient_for() ; /** The transient parent of the surface. * * @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_transient_for() const; /** Whether the surface is modal. * * 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_modal() ; /** Whether the surface is modal. * * 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_modal() const; //TODO: _WRAP_PROPERTY("icon-list", std::vector>) /** Whether the window manager should add decorations. * * 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_decorated() ; /** Whether the window manager should add decorations. * * 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_decorated() const; /** Whether the window manager should allow to close the surface. * * 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_deletable() ; /** Whether the window manager should allow to close the surface. * * 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_deletable() const; /** The fullscreen mode of the surface. * * Default value: Gdk::FullscreenMode::ON_CURRENT_MONITOR * * @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< FullscreenMode > property_fullscreen_mode() ; /** The fullscreen mode of the surface. * * Default value: Gdk::FullscreenMode::ON_CURRENT_MONITOR * * @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< FullscreenMode > property_fullscreen_mode() const; /** Whether the surface should inhibit keyboard shortcuts. * * 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_shortcuts_inhibited() const; /** The capabilities that are available for this toplevel. * * @newin{4,20} * * Default value: 0 * * @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< Capabilities > property_capabilities() const; /** The gravity to use when resizing a surface programmatically. * * Gravity describes which point of the surface we want to keep * fixed (meaning that the surface will grow in the opposite direction). * For example, a gravity of `Gdk::Gravity::NORTH_EAST` means that we * want to fix top right corner of the surface. * * This property is just a hint that may affect the result when negotiating * toplevel sizes with the windowing system. It does not affect interactive * resizes started with Gdk::Toplevel::begin_resize(). * * @newin{4,20} * * Default value: Gdk::Gravity::NORTH_EAST * * @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< Gravity > property_gravity() ; /** The gravity to use when resizing a surface programmatically. * * Gravity describes which point of the surface we want to keep * fixed (meaning that the surface will grow in the opposite direction). * For example, a gravity of `Gdk::Gravity::NORTH_EAST` means that we * want to fix top right corner of the surface. * * This property is just a hint that may affect the result when negotiating * toplevel sizes with the windowing system. It does not affect interactive * resizes started with Gdk::Toplevel::begin_resize(). * * @newin{4,20} * * Default value: Gdk::Gravity::NORTH_EAST * * @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< Gravity > property_gravity() const; public: public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: }; } // namespace Gdk namespace Gdk { /** @ingroup gdkmmEnums */ inline constexpr Toplevel::State operator|(Toplevel::State lhs, Toplevel::State rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::State operator&(Toplevel::State lhs, Toplevel::State rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::State operator^(Toplevel::State lhs, Toplevel::State rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::State operator~(Toplevel::State flags) { return static_cast(~static_cast(flags)); } /** @ingroup gdkmmEnums */ inline Toplevel::State& operator|=(Toplevel::State& lhs, Toplevel::State rhs) { return (lhs = static_cast(static_cast(lhs) | static_cast(rhs))); } /** @ingroup gdkmmEnums */ inline Toplevel::State& operator&=(Toplevel::State& lhs, Toplevel::State rhs) { return (lhs = static_cast(static_cast(lhs) & static_cast(rhs))); } /** @ingroup gdkmmEnums */ inline Toplevel::State& operator^=(Toplevel::State& lhs, Toplevel::State rhs) { return (lhs = static_cast(static_cast(lhs) ^ static_cast(rhs))); } } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GDKMM_API Value : public Glib::Value_Flags { public: static GType value_type() G_GNUC_CONST; }; } // namespace Glib #endif /* DOXYGEN_SHOULD_SKIP_THIS */ namespace Gdk { /** @ingroup gdkmmEnums */ inline constexpr Toplevel::Capabilities operator|(Toplevel::Capabilities lhs, Toplevel::Capabilities rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::Capabilities operator&(Toplevel::Capabilities lhs, Toplevel::Capabilities rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::Capabilities operator^(Toplevel::Capabilities lhs, Toplevel::Capabilities rhs) { return static_cast(static_cast(lhs) ^ static_cast(rhs)); } /** @ingroup gdkmmEnums */ inline constexpr Toplevel::Capabilities operator~(Toplevel::Capabilities flags) { return static_cast(~static_cast(flags)); } /** @ingroup gdkmmEnums */ inline Toplevel::Capabilities& operator|=(Toplevel::Capabilities& lhs, Toplevel::Capabilities rhs) { return (lhs = static_cast(static_cast(lhs) | static_cast(rhs))); } /** @ingroup gdkmmEnums */ inline Toplevel::Capabilities& operator&=(Toplevel::Capabilities& lhs, Toplevel::Capabilities rhs) { return (lhs = static_cast(static_cast(lhs) & static_cast(rhs))); } /** @ingroup gdkmmEnums */ inline Toplevel::Capabilities& operator^=(Toplevel::Capabilities& lhs, Toplevel::Capabilities rhs) { return (lhs = static_cast(static_cast(lhs) ^ static_cast(rhs))); } } // namespace Gdk #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Glib { template <> class GDKMM_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 Gdk::Toplevel */ GDKMM_API Glib::RefPtr wrap(GdkToplevel* object, bool take_copy = false); } // namespace Glib #endif /* _GDKMM_TOPLEVEL_H */