35#define GEANY_MENU_BUTTON_ACTION_GET_PRIVATE(obj) (GEANY_MENU_BUTTON_ACTION(obj)->priv)
66 g_object_unref(
priv->menu);
67 g_free(
priv->tooltip_arrow);
69 (* G_OBJECT_CLASS(geany_menu_button_action_parent_class)->finalize)(
object);
80 const GValue *value, GParamSpec *pspec)
87 g_free(
priv->tooltip_arrow);
88 priv->tooltip_arrow = g_value_dup_string(value);
92 G_OBJECT_WARN_INVALID_PROPERTY_ID(
object, prop_id, pspec);
103 toolitem = g_object_new(GTK_TYPE_MENU_TOOL_BUTTON,
NULL);
104 gtk_menu_tool_button_set_arrow_tooltip_text(GTK_MENU_TOOL_BUTTON(toolitem),
priv->tooltip_arrow);
112 GtkActionClass *action_class = GTK_ACTION_CLASS(klass);
113 GObjectClass *g_object_class = G_OBJECT_CLASS(klass);
120 action_class->toolbar_item_type = GTK_TYPE_MENU_TOOL_BUTTON;
124 g_object_class_install_property(g_object_class,
129 "A special tooltip for the arrow button",
134 G_TYPE_FROM_CLASS(klass),
139 g_cclosure_marshal_VOID__VOID,
148 action->
priv = G_TYPE_INSTANCE_GET_PRIVATE(action,
159 const gchar *tooltip,
160 const gchar *tooltip_arrow,
161 const gchar *stock_id)
167 "tooltip-arrow", tooltip_arrow,
168 "stock-id", stock_id,
179 g_return_val_if_fail(action !=
NULL,
NULL);
193 g_return_if_fail(action !=
NULL);
198 GList *children = gtk_container_get_children(GTK_CONTAINER(
priv->menu));
200 enable = (g_list_length(children) > 0);
201 g_list_free(children);
211 if (! GTK_IS_MENU_TOOL_BUTTON(l->data))
216 if (gtk_menu_tool_button_get_menu(GTK_MENU_TOOL_BUTTON(l->data)) ==
NULL)
217 gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(l->data),
priv->menu);
220 gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(l->data),
NULL);
229 g_return_if_fail(action !=
NULL);
static GeanyProjectPrivate priv
General utility functions, non-GTK related.
#define foreach_slist(node, list)
Iterates all the nodes in list.