Skip to content

Commit

Permalink
gui/menuitem: implement support for veriable tooltips
Browse files Browse the repository at this point in the history
  • Loading branch information
LBCrion committed Feb 9, 2025
1 parent adfceec commit c66ca3c
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/config/menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ static gboolean config_menu_item_props ( GScanner *scanner, GtkWidget *item )
menu_item_set_action(item, config_assign_action(scanner, "action"));
break;
case G_TOKEN_TOOLTIP:
menu_item_set_tooltip(item, config_assign_string(scanner, "tooltip"));
menu_item_set_tooltip(item, config_assign_expr(scanner, "tooltip"));
break;
case G_TOKEN_INDEX:
menu_item_set_sort_index(item, config_assign_number(scanner, "index"));
Expand Down
7 changes: 5 additions & 2 deletions src/gui/menuitem.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,14 +191,15 @@ void menu_item_set_icon ( GtkWidget *self, const gchar *icon )
priv->flags |= MI_ICON;
}

void menu_item_set_tooltip ( GtkWidget *self, gchar *tooltip )
void menu_item_set_tooltip ( GtkWidget *self, GBytes *code )
{
MenuItemPrivate *priv;

priv = g_object_get_data(G_OBJECT(self), "menu_item_private");
g_return_if_fail(priv);

gtk_widget_set_tooltip_text(self, tooltip);
g_clear_pointer(&priv->tooltip_expr, expr_cache_free);
priv->tooltip_expr = expr_cache_new_with_code(code);
priv->flags |= MI_TOOLTIP;
}

Expand Down Expand Up @@ -347,6 +348,8 @@ void menu_item_label_update ( GtkWidget *self )

if(expr_cache_eval(priv->label_expr))
menu_item_set_label(self, priv->label_expr->cache);
if(expr_cache_eval(priv->tooltip_expr))
gtk_widget_set_tooltip_text(self, priv->tooltip_expr->cache);
}

void menu_item_insert ( GtkWidget *menu, GtkWidget *item )
Expand Down
3 changes: 2 additions & 1 deletion src/gui/menuitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ typedef struct _MenuItemPrivate {
GtkWidget *menu;
GBytes *action;
expr_cache_t *label_expr;
expr_cache_t *tooltip_expr;
} MenuItemPrivate;

enum {
Expand All @@ -35,7 +36,7 @@ void menu_item_set_label ( GtkWidget *self, const gchar *label );
void menu_item_set_label_expr ( GtkWidget *self, GBytes *code );
void menu_item_set_icon ( GtkWidget *self, const gchar *icon );
void menu_item_set_action ( GtkWidget *self, GBytes *action );
void menu_item_set_tooltip ( GtkWidget *self, gchar *tooltip );
void menu_item_set_tooltip ( GtkWidget *self, GBytes *tooltip );
void menu_item_set_sort_index ( GtkWidget *self, gint index );
gint menu_item_get_sort_index ( GtkWidget *self );
void menu_item_set_submenu ( GtkWidget *self, gchar *subname );
Expand Down

0 comments on commit c66ca3c

Please sign in to comment.