// Generated by gmmproc 2.66.7 -- DO NOT MODIFY! #ifndef _GTKMM_MENU_H #define _GTKMM_MENU_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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS using GtkMenu = struct _GtkMenu; using GtkMenuClass = struct _GtkMenuClass; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ #ifndef DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API Menu_Class; } // namespace Gtk #endif //DOXYGEN_SHOULD_SKIP_THIS namespace Gtk { class GTKMM_API AccelGroup; /** @defgroup Menus Menu classes */ /** A drop-down menu consisting of Gtk::MenuItem objects which can be navigated and activated by the user to perform application functions. * Menus are normally placed inside a Gtk::MenuBar or another MenuItem as a sub menu. * A Menu can also be popped up, for instance as a right-click context menu, by calling the popup() method. * * @ingroup Widgets * @ingroup Menus */ class GTKMM_API Menu : public MenuShell { public: #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef Menu CppObjectType; typedef Menu_Class CppClassType; typedef GtkMenu BaseObjectType; typedef GtkMenuClass BaseClassType; #endif /* DOXYGEN_SHOULD_SKIP_THIS */ Menu(Menu&& src) noexcept; Menu& operator=(Menu&& src) noexcept; // noncopyable Menu(const Menu&) = delete; Menu& operator=(const Menu&) = delete; ~Menu() noexcept override; #ifndef DOXYGEN_SHOULD_SKIP_THIS private: friend class GTKMM_API Menu_Class; static CppClassType menu_class_; protected: explicit Menu(const Glib::ConstructParams& construct_params); explicit Menu(GtkMenu* 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. GtkMenu* gobj() { return reinterpret_cast(gobject_); } /// Provides access to the underlying C GObject. const GtkMenu* gobj() const { return reinterpret_cast(gobject_); } public: //C++ methods used to invoke GTK+ virtual functions: protected: //GTK+ Virtual Functions (override these to change behaviour): //Default Signal Handlers:: private: public: Menu(); //This is custom-implemented because the gtk_menu_new_from_model() does more //than just call g_object_new. See https://bugzilla.gnome.org/show_bug.cgi?id=704671 /** Creates a new Menu and populates it with menu items * and submenus according to the @a model. * * The created menu items are connected to actions found in the * ApplicationWindow to which the menu belongs - typically * by means of being attached to a widget (see attach_to_widget()) * that is contained within the ApplicationWindow's widget hierarchy. * * @param model * * @newin{3,10} */ explicit Menu(const Glib::RefPtr& model); /* append, prepend, and insert are defined in MenuShell */ #ifndef GTKMM_DISABLE_DEPRECATED /** For instance, * void on_popup_menu_position(int& x, int& y, bool& push_in); * * @deprecated */ typedef sigc::slot SlotPositionCalc; /** @deprecated Use popup_at_widget(), popup_at_pointer() or popup_at_rect() instead. */ void popup(MenuShell& parent_menu_shell, MenuItem& parent_menu_item, const SlotPositionCalc& slot, guint button, guint32 activate_time, const Glib::RefPtr& device = Glib::RefPtr()); /** Displays a menu and makes it available for selection. Applications can use * this function to display context-sensitive menus. * * The @a button parameter should be the mouse button pressed to initiate * the menu popup. If the menu popup was initiated by something other than * a mouse button press, such as a mouse button release or a keypress, * @a button should be 0. * * The @a activate_time parameter should be the time stamp of the event that * initiated the popup. If such an event is not available, use * gtk_get_current_event_time() instead. * @param position_calc_slot A user supplied function used to position the menu, or 0. * @param button The mouse button which was pressed to initiate the event. * @param activate_time The time at which the activation event occurred. * @param device A Gdk::Device. * @deprecated Use popup_at_widget(), popup_at_pointer() or popup_at_rect() instead. */ void popup(const SlotPositionCalc& position_calc_slot, guint button, guint32 activate_time, const Glib::RefPtr& device = Glib::RefPtr()); /** Displays a menu and makes it available for selection. * Applications can use this function to display context-sensitive menus, at the current pointer position. * @param button The button which was pressed to initiate the event. * @param activate_time The time at which the activation event occurred. * @param device A Gdk::Device. * @deprecated Use popup_at_widget(), popup_at_pointer() or popup_at_rect() instead. */ void popup(guint button, guint32 activate_time, const Glib::RefPtr& device = Glib::RefPtr()); #endif // GTKMM_DISABLE_DEPRECATED /** Displays @a menu and makes it available for selection. * * See popup_at_widget() and popup_at_pointer(), which * handle more common cases for popping up menus. * * @a menu will be positioned at @a rect, aligning their anchor points. @a rect is * relative to the top-left corner of @a rect_window. @a rect_anchor and * @a menu_anchor determine anchor points on @a rect and @a menu to pin together. * @a menu can optionally be offset by Gtk::Menu::property_rect_anchor_dx() and * Gtk::Menu::property_rect_anchor_dy(). * * Anchors should be specified under the assumption that the text direction is * left-to-right; they will be flipped horizontally automatically if the text * direction is right-to-left. * * Other properties that influence the behaviour of this function are * Gtk::Menu::property_anchor_hints() and Gtk::Menu::property_menu_type_hint(). Connect to the * Gtk::Menu::signal_popped_up() signal to find out how it was actually positioned. * * @newin{3,22} * * @param rect_window The Gdk::Window @a rect is relative to. * @param rect The Gdk::Rectangle to align @a menu with. * @param rect_anchor The point on @a rect to align with @a menu's anchor point. * @param menu_anchor The point on @a menu to align with @a rect's anchor point. * @param trigger_event The Gdk::Event that initiated this request or * nullptr if it's the current event. */ void popup_at_rect(const Glib::RefPtr& rect_window, const Gdk::Rectangle& rect, Gdk::Gravity rect_anchor, Gdk::Gravity menu_anchor, const GdkEvent* trigger_event); /** Displays @a menu and makes it available for selection. * * See popup_at_pointer() to pop up a menu at the master pointer. * popup_at_rect() also allows you to position a menu at an arbitrary * rectangle. * * ![](popup-anchors.png) * * @a menu will be positioned at @a widget, aligning their anchor points. * @a widget_anchor and @a menu_anchor determine anchor points on @a widget and @a menu * to pin together. @a menu can optionally be offset by Gtk::Menu::property_rect_anchor_dx() * and Gtk::Menu::property_rect_anchor_dy(). * * Anchors should be specified under the assumption that the text direction is * left-to-right; they will be flipped horizontally automatically if the text * direction is right-to-left. * * Other properties that influence the behaviour of this function are * Gtk::Menu::property_anchor_hints() and Gtk::Menu::property_menu_type_hint(). Connect to the * Gtk::Menu::signal_popped_up() signal to find out how it was actually positioned. * * @newin{3,22} * * @param widget The Gtk::Widget to align @a menu with. * @param widget_anchor The point on @a widget to align with @a menu's anchor point. * @param menu_anchor The point on @a menu to align with @a widget's anchor point. * @param trigger_event The Gdk::Event that initiated this request or * nullptr if it's the current event. */ void popup_at_widget(Widget* widget, Gdk::Gravity widget_anchor, Gdk::Gravity menu_anchor, const GdkEvent* trigger_event); /** Displays @a menu and makes it available for selection. * * See popup_at_widget() to pop up a menu at a widget. * popup_at_rect() also allows you to position a menu at an arbitrary * rectangle. * * @a menu will be positioned at the pointer associated with @a trigger_event. * * Properties that influence the behaviour of this function are * Gtk::Menu::property_anchor_hints(), Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_rect_anchor_dy(), and * Gtk::Menu::property_menu_type_hint(). Connect to the Gtk::Menu::signal_popped_up() signal to find * out how it was actually positioned. * * @newin{3,22} * * @param trigger_event The Gdk::Event that initiated this request or * nullptr if it's the current event. */ void popup_at_pointer(const GdkEvent* trigger_event); /** Repositions the menu according to its position function. */ void reposition(); /** Removes the menu from the screen. */ void popdown(); /** Returns the selected menu item from the menu. This is used by the * Gtk::ComboBox. * * @return The Gtk::MenuItem that was last selected * in the menu. If a selection has not yet been made, the * first menu item is selected. */ MenuItem* get_active(); /** Returns the selected menu item from the menu. This is used by the * Gtk::ComboBox. * * @return The Gtk::MenuItem that was last selected * in the menu. If a selection has not yet been made, the * first menu item is selected. */ const MenuItem* get_active() const; /** Selects the specified menu item within the menu. This is used by * the Gtk::ComboBox and should not be used by anyone else. * * @param index The index of the menu item to select. Index values are * from 0 to n-1. */ void set_active(guint index); /** Set the Gtk::AccelGroup which holds global accelerators for the * menu. This accelerator group needs to also be added to all windows * that this menu is being used in with Gtk::Window::add_accel_group(), * in order for those windows to support all the accelerators * contained in this group. * * @param accel_group The Gtk::AccelGroup to be associated * with the menu. */ void set_accel_group(const Glib::RefPtr& accel_group); void unset_accel_group(); /** Gets the Gtk::AccelGroup which holds global accelerators for the * menu. See set_accel_group(). * * @return The Gtk::AccelGroup associated with the menu. */ Glib::RefPtr get_accel_group(); /** Gets the Gtk::AccelGroup which holds global accelerators for the * menu. See set_accel_group(). * * @return The Gtk::AccelGroup associated with the menu. */ Glib::RefPtr get_accel_group() const; /** Sets an accelerator path for this menu from which accelerator paths * for its immediate children, its menu items, can be constructed. * The main purpose of this function is to spare the programmer the * inconvenience of having to call Gtk::MenuItem::set_accel_path() on * each menu item that should support runtime user changable accelerators. * Instead, by just calling set_accel_path() on their parent, * each menu item of this menu, that contains a label describing its * purpose, automatically gets an accel path assigned. * * For example, a menu containing menu items “New” and “Exit”, will, after * `gtk_menu_set_accel_path (menu, "/File");` has been * called, assign its items the accel paths: `"/File/New"` * and `"/File/Exit"`. * * Assigning accel paths to menu items then enables the user to change * their accelerators at runtime. More details about accelerator paths * and their default setups can be found at Gtk::AccelMap::add_entry(). * * Note that @a accel_path string will be stored in a Quark. Therefore, * if you pass a static string, you can save some memory by interning * it first with Glib::intern_static_string(). * * @param accel_path A valid accelerator path, or nullptr to unset the path. */ void set_accel_path(const Glib::ustring& accel_path); /** Retrieves the accelerator path set on the menu. * * @newin{2,14} * * @return The accelerator path set on the menu. */ Glib::ustring get_accel_path() const; /** Detaches the menu from the widget to which it had been attached. * This function will call the callback function, @a detacher, provided * when the attach_to_widget() function was called. */ void detach(); /** Returns the Gtk::Widget that the menu is attached to. * * @return The Gtk::Widget that the menu is attached to. */ Widget* get_attach_widget(); /** Returns the Gtk::Widget that the menu is attached to. * * @return The Gtk::Widget that the menu is attached to. */ const Widget* get_attach_widget() const; #ifndef GTKMM_DISABLE_DEPRECATED /** Changes the tearoff state of the menu. A menu is normally * displayed as drop down menu which persists as long as the menu is * active. It can also be displayed as a tearoff menu which persists * until it is closed or reattached. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @param torn_off If true, menu is displayed as a tearoff menu. */ void set_tearoff_state(bool torn_off = true); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Returns whether the menu is torn off. * See set_tearoff_state(). * * Deprecated: 3.10 * * @deprecated No replacement available. * * @return true if the menu is currently torn off. */ bool get_tearoff_state() const; #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Sets the title string for the menu. * * The title is displayed when the menu is shown as a tearoff * menu. If @a title is nullptr, the menu will see if it is attached * to a parent menu item, and if so it will try to use the same * text as that menu item’s label. * * Deprecated: 3.10 * * @deprecated No replacement available. * * @param title A string containing the title for the menu, or nullptr to * inherit the title of the parent menu item, if any. */ void set_title(const Glib::ustring& title); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** @deprecated No replacement available. */ void unset_title(); #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** Returns the title of the menu. See set_title(). * * Deprecated: 3.10 * * @deprecated No replacement available. * * @return The title of the menu, or nullptr if the menu * has no title set on it. This string is owned by GTK+ * and should not be modified or freed. */ Glib::ustring get_title() const; #endif // GTKMM_DISABLE_DEPRECATED /** Sets the Gdk::Screen on which the menu will be displayed. * * @newin{2,2} * * @param screen A Gdk::Screen, or nullptr if the screen should be * determined by the widget the menu is attached to. */ void set_screen(const Glib::RefPtr& screen); /** Adds a new Gtk::MenuItem to a (table) menu. The number of “cells” that * an item will occupy is specified by @a left_attach, @a right_attach, * @a top_attach and @a bottom_attach. These each represent the leftmost, * rightmost, uppermost and lower column and row numbers of the table. * (Columns and rows are indexed from zero). * * Note that this function is not related to detach(). * * @newin{2,4} * * @param child A Gtk::MenuItem. * @param left_attach The column number to attach the left side of the item to. * @param right_attach The column number to attach the right side of the item to. * @param top_attach The row number to attach the top of the item to. * @param bottom_attach The row number to attach the bottom of the item to. */ void attach(Gtk::Widget& child, guint left_attach, guint right_attach, guint top_attach, guint bottom_attach); /** Informs GTK+ on which monitor a menu should be popped up. * See gdk_monitor_get_geometry(). * * This function should be called from a Gtk::MenuPositionFunc * if the menu should not appear on the same monitor as the pointer. * This information can’t be reliably inferred from the coordinates * returned by a Gtk::MenuPositionFunc, since, for very long menus, * these coordinates may extend beyond the monitor boundaries or even * the screen boundaries. * * @newin{2,4} * * @param monitor_num The number of the monitor on which the menu should * be popped up. */ void set_monitor(int monitor_num); /** Retrieves the number of the monitor on which to show the menu. * * @newin{2,14} * * @return The number of the monitor on which the menu should * be popped up or -1, if no monitor has been set. */ int get_monitor() const; //TODO: Wrap or ignore gtk_menu_place_on_monitor(). It's not documented. Does it mean it's private? void reorder_child(const MenuItem& child, int position); /** Sets whether the menu should reserve space for drawing toggles * or icons, regardless of their actual presence. * * @newin{2,18} * * @param reserve_toggle_size Whether to reserve size for toggles. */ void set_reserve_toggle_size(bool reserve_toggle_size = true); /** Returns whether the menu reserves space for toggles and * icons, regardless of their actual presence. * * @newin{2,18} * * @return Whether the menu reserves toggle space. */ bool get_reserve_toggle_size() const; //TODO: What does "attach" actually mean here? murrayc // Part answer: It has become more important now that it is mentioned in the (apparently newer) gtk_menu_new_from_model() documentation. /** Attaches the menu to the widget. * * @param attach_widget The Widget that the menu will be attached to. * * @newin{2,10} */ void attach_to_widget(Widget& attach_widget); // no_default_handler because the wrapped C signal has no default handler. /** * @par Slot Prototype: * void on_my_%popped_up(const Gdk::Rectangle* flipped_rect, const Gdk::Rectangle* final_rect, bool flipped_x, bool flipped_y) * * Flags: Run First * * Emitted when the position of @a menu is finalized after being popped up * using Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), or * Gtk::Menu::popup_at_pointer(). * * @a menu might be flipped over the anchor rectangle in order to keep it * on-screen, in which case @a flipped_x and @a flipped_y will be set to true * accordingly. * * @a flipped_rect is the ideal position of @a menu after any possible flipping, * but before any possible sliding. @a final_rect is @a flipped_rect, but possibly * translated in the case that flipping is still ineffective in keeping @a menu * on-screen. * * ![](popup-slide.png) * * The blue menu is @a menu's ideal position, the green menu is @a flipped_rect, * and the red menu is @a final_rect. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_rect_anchor_dy(), and * Gtk::Menu::property_menu_type_hint(). * * @newin{3,22} * * @param flipped_rect The position of @a menu after any possible * flipping or nullptr if the backend can't obtain it. * @param final_rect The final position of @a menu or nullptr if the * backend can't obtain it. * @param flipped_x true if the anchors were flipped horizontally. * @param flipped_y true if the anchors were flipped vertically. */ Glib::SignalProxy< void,const Gdk::Rectangle*,const Gdk::Rectangle*,bool,bool > signal_popped_up(); /** The index of the currently selected menu item, or -1 if no * menu item is selected. * * @newin{2,14} * * 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_active() ; /** The index of the currently selected menu item, or -1 if no * menu item is selected. * * @newin{2,14} * * 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_active() const; /** The accel group holding accelerators for the menu. * * @newin{2,14} * * @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_accel_group() ; /** The accel group holding accelerators for the menu. * * @newin{2,14} * * @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_accel_group() const; /** An accel path used to conveniently construct accel paths of child items. * * @newin{2,14} * * 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_accel_path() ; /** An accel path used to conveniently construct accel paths of child items. * * @newin{2,14} * * 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_accel_path() const; /** The widget the menu is attached to. Setting this property attaches * the menu without a Gtk::MenuDetachFunc. If you need to use a detacher, * use Gtk::Menu::attach_to_widget() directly. * * @newin{2,14} * * @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_attach_widget() ; /** The widget the menu is attached to. Setting this property attaches * the menu without a Gtk::MenuDetachFunc. If you need to use a detacher, * use Gtk::Menu::attach_to_widget() directly. * * @newin{2,14} * * @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_attach_widget() const; #ifndef GTKMM_DISABLE_DEPRECATED /** A title that may be displayed by the window manager when this * menu is torn-off. * * Deprecated: 3.10 * * @deprecated No replacement available. * * 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_tearoff_title() ; /** A title that may be displayed by the window manager when this * menu is torn-off. * * Deprecated: 3.10 * * @deprecated No replacement available. * * 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_tearoff_title() const; #endif // GTKMM_DISABLE_DEPRECATED #ifndef GTKMM_DISABLE_DEPRECATED /** A boolean that indicates whether the menu is torn-off. * * @newin{2,6} * * Deprecated: 3.10 * * @deprecated No replacement available. * * 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_tearoff_state() ; /** A boolean that indicates whether the menu is torn-off. * * @newin{2,6} * * Deprecated: 3.10 * * @deprecated No replacement available. * * 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_tearoff_state() const; #endif // GTKMM_DISABLE_DEPRECATED /** The monitor the menu will be popped up on. * * @newin{2,14} * * 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_monitor() ; /** The monitor the menu will be popped up on. * * @newin{2,14} * * 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_monitor() const; /** A boolean that indicates whether the menu reserves space for * toggles and icons, regardless of their actual presence. * * This property should only be changed from its default value * for special-purposes such as tabular menus. Regular menus that * are connected to a menu bar or context menus should reserve * toggle space for consistency. * * @newin{2,18} * * 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_reserve_toggle_size() ; /** A boolean that indicates whether the menu reserves space for * toggles and icons, regardless of their actual presence. * * This property should only be changed from its default value * for special-purposes such as tabular menus. Regular menus that * are connected to a menu bar or context menus should reserve * toggle space for consistency. * * @newin{2,18} * * 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_reserve_toggle_size() const; /** Positioning hints for aligning the menu relative to a rectangle. * * These hints determine how the menu should be positioned in the case that * the menu would fall off-screen if placed in its ideal position. * * ![](popup-flip.png) * * For example, Gdk::ANCHOR_FLIP_Y will replace Gdk::GRAVITY_NORTH_WEST with * Gdk::GRAVITY_SOUTH_WEST and vice versa if the menu extends beyond the * bottom edge of the monitor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_rect_anchor_dx(), * Gtk::Menu::property_rect_anchor_dy(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: Gdk::ANCHOR_FLIP_X | Gdk::ANCHOR_FLIP_Y | Gdk::ANCHOR_SLIDE_X | Gdk::ANCHOR_SLIDE_Y | Gdk::ANCHOR_RESIZE_X | Gdk::ANCHOR_RESIZE_Y * * @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< Gdk::AnchorHints > property_anchor_hints() ; /** Positioning hints for aligning the menu relative to a rectangle. * * These hints determine how the menu should be positioned in the case that * the menu would fall off-screen if placed in its ideal position. * * ![](popup-flip.png) * * For example, Gdk::ANCHOR_FLIP_Y will replace Gdk::GRAVITY_NORTH_WEST with * Gdk::GRAVITY_SOUTH_WEST and vice versa if the menu extends beyond the * bottom edge of the monitor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_rect_anchor_dx(), * Gtk::Menu::property_rect_anchor_dy(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: Gdk::ANCHOR_FLIP_X | Gdk::ANCHOR_FLIP_Y | Gdk::ANCHOR_SLIDE_X | Gdk::ANCHOR_SLIDE_Y | Gdk::ANCHOR_RESIZE_X | Gdk::ANCHOR_RESIZE_Y * * @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< Gdk::AnchorHints > property_anchor_hints() const; /** Horizontal offset to apply to the menu, i.e.\ the rectangle or widget * anchor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dy(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: 0 * * @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_rect_anchor_dx() ; /** Horizontal offset to apply to the menu, i.e.\ the rectangle or widget * anchor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dy(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * 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< int > property_rect_anchor_dx() const; /** Vertical offset to apply to the menu, i.e.\ the rectangle or widget anchor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: 0 * * @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_rect_anchor_dy() ; /** Vertical offset to apply to the menu, i.e.\ the rectangle or widget anchor. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_menu_type_hint(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * 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< int > property_rect_anchor_dy() const; /** The Gdk::WindowTypeHint to use for the menu's Gdk::Window. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_rect_anchor_dy(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: Gdk::WINDOW_TYPE_HINT_POPUP_MENU * * @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< Gdk::WindowTypeHint > property_menu_type_hint() ; /** The Gdk::WindowTypeHint to use for the menu's Gdk::Window. * * See Gtk::Menu::popup_at_rect(), Gtk::Menu::popup_at_widget(), * Gtk::Menu::popup_at_pointer(), Gtk::Menu::property_anchor_hints(), * Gtk::Menu::property_rect_anchor_dx(), Gtk::Menu::property_rect_anchor_dy(), and Gtk::Menu::signal_popped_up(). * * @newin{3,22} * * Default value: Gdk::WINDOW_TYPE_HINT_POPUP_MENU * * @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< Gdk::WindowTypeHint > property_menu_type_hint() const; protected: //TODO: Remove this if it has never been used, at the next ABI break? //We can not wrap this as a slot because there is no data parameter, and no destroy callback to destroy that data. typedef void (*GtkMenuDetachFunc) (GtkWidget *attach_widget, GtkMenu *menu); /** Attaches the menu to the widget and provides a callback function * that will be invoked when the menu calls detach() during * its destruction. * * If the menu is attached to the widget then it will be destroyed * when the widget is destroyed, as if it was a child widget. * An attached menu will also move between screens correctly if the * widgets moves between screens. * * @param attach_widget The Gtk::Widget that the menu will be attached to. * @param detacher The user supplied callback function * that will be called when the menu calls detach(). */ void attach_to_widget(Widget& attach_widget, GtkMenuDetachFunc detacher); }; } // 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::Menu */ GTKMM_API Gtk::Menu* wrap(GtkMenu* object, bool take_copy = false); } //namespace Glib #endif /* _GTKMM_MENU_H */