/** * _gtk_action_sync_menu_visible: * @action: (allow-none): a #GtkAction, or %NULL to determine the action from @proxy * @proxy: a proxy menu item * @empty: whether the submenu attached to @proxy is empty * * Updates the visibility of @proxy from the visibility of @action * according to the following rules: * <itemizedlist> * <listitem><para>if @action is invisible, @proxy is too * </para></listitem> * <listitem><para>if @empty is %TRUE, hide @proxy unless the "hide-if-empty" * property of @action indicates otherwise * </para></listitem> * </itemizedlist> * * This function is used in the implementation of #GtkUIManager. **/ void _gtk_action_sync_menu_visible (GtkAction *action, GtkWidget *proxy, gboolean empty) { gboolean visible = TRUE; gboolean hide_if_empty = TRUE; g_return_if_fail (GTK_IS_MENU_ITEM (proxy)); g_return_if_fail (action == NULL || GTK_IS_ACTION (action)); if (action == NULL) action = gtk_activatable_get_related_action (GTK_ACTIVATABLE (proxy)); if (action) { /* a GtkMenu for a <popup/> doesn't have to have an action */ visible = gtk_action_is_visible (action); hide_if_empty = action->private_data->hide_if_empty; } if (visible && !(empty && hide_if_empty)) gtk_widget_show (proxy); else gtk_widget_hide (proxy); }
static void gtk_switch_update (GtkActivatable *activatable, GtkAction *action, const gchar *property_name) { G_GNUC_BEGIN_IGNORE_DEPRECATIONS; if (strcmp (property_name, "visible") == 0) { if (gtk_action_is_visible (action)) gtk_widget_show (GTK_WIDGET (activatable)); else gtk_widget_hide (GTK_WIDGET (activatable)); } else if (strcmp (property_name, "sensitive") == 0) { gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action)); } else if (strcmp (property_name, "active") == 0) { gtk_action_block_activate (action); gtk_switch_set_active (GTK_SWITCH (activatable), gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))); gtk_action_unblock_activate (action); } G_GNUC_END_IGNORE_DEPRECATIONS; }
static void gtk_tool_item_update (GtkActivatable *activatable, GtkAction *action, const gchar *property_name) { if (strcmp (property_name, "visible") == 0) { if (gtk_action_is_visible (action)) gtk_widget_show (GTK_WIDGET (activatable)); else gtk_widget_hide (GTK_WIDGET (activatable)); } else if (strcmp (property_name, "sensitive") == 0) gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action)); else if (strcmp (property_name, "tooltip") == 0) gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (activatable), gtk_action_get_tooltip (action)); else if (strcmp (property_name, "visible-horizontal") == 0) gtk_tool_item_set_visible_horizontal (GTK_TOOL_ITEM (activatable), gtk_action_get_visible_horizontal (action)); else if (strcmp (property_name, "visible-vertical") == 0) gtk_tool_item_set_visible_vertical (GTK_TOOL_ITEM (activatable), gtk_action_get_visible_vertical (action)); else if (strcmp (property_name, "is-important") == 0) gtk_tool_item_set_is_important (GTK_TOOL_ITEM (activatable), gtk_action_get_is_important (action)); }
void GtkPopupMenu::appendItem(GtkAction* action) { GtkWidget* menuItem = gtk_action_create_menu_item(action); gtk_widget_set_tooltip_text(menuItem, gtk_action_get_tooltip(action)); g_signal_connect(menuItem, "select", G_CALLBACK(GtkPopupMenu::selectItemCallback), this); gtk_menu_shell_append(GTK_MENU_SHELL(m_popup.get()), menuItem); if (gtk_action_is_visible(action)) gtk_widget_show(menuItem); }
static void gtk_switch_sync_action_properties (GtkActivatable *activatable, GtkAction *action) { if (!action) return; if (gtk_action_is_visible (action)) gtk_widget_show (GTK_WIDGET (activatable)); else gtk_widget_hide (GTK_WIDGET (activatable)); gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action)); gtk_action_block_activate (action); gtk_switch_set_active (GTK_SWITCH (activatable), gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action))); gtk_action_unblock_activate (action); }
void WebPopupMenuProxyGtk::populatePopupMenu(const Vector<WebPopupItem>& items) { int itemIndex = 0; for (const auto& item : items) { if (item.m_type == WebPopupItem::Separator) { GtkWidget* menuItem = gtk_separator_menu_item_new(); gtk_menu_shell_append(GTK_MENU_SHELL(m_popup), menuItem); gtk_widget_show(menuItem); } else { GRefPtr<GtkAction> action = adoptGRef(createGtkActionForMenuItem(item, itemIndex)); GtkWidget* menuItem = gtk_action_create_menu_item(action.get()); gtk_widget_set_tooltip_text(menuItem, gtk_action_get_tooltip(action.get())); g_signal_connect(menuItem, "select", G_CALLBACK(selectItemCallback), this); gtk_menu_shell_append(GTK_MENU_SHELL(m_popup), menuItem); if (gtk_action_is_visible(action.get())) gtk_widget_show(menuItem); } itemIndex++; } }
static void gtk_tool_item_sync_action_properties (GtkActivatable *activatable, GtkAction *action) { if (!action) return; if (gtk_action_is_visible (action)) gtk_widget_show (GTK_WIDGET (activatable)); else gtk_widget_hide (GTK_WIDGET (activatable)); gtk_widget_set_sensitive (GTK_WIDGET (activatable), gtk_action_is_sensitive (action)); gtk_tool_item_set_tooltip_text (GTK_TOOL_ITEM (activatable), gtk_action_get_tooltip (action)); gtk_tool_item_set_visible_horizontal (GTK_TOOL_ITEM (activatable), gtk_action_get_visible_horizontal (action)); gtk_tool_item_set_visible_vertical (GTK_TOOL_ITEM (activatable), gtk_action_get_visible_vertical (action)); gtk_tool_item_set_is_important (GTK_TOOL_ITEM (activatable), gtk_action_get_is_important (action)); }
static VALUE rg_is_visible_p(VALUE self) { return CBOOL2RVAL(gtk_action_is_visible(_SELF(self))); }