From bc39c562d811635f48318f284405aeb19c0a4cd2 Mon Sep 17 00:00:00 2001 From: Lev Babiev Date: Mon, 28 Aug 2023 19:39:39 +0100 Subject: [PATCH] exprlib: implement WidgetId expression function --- src/config/layout.c | 3 +-- src/exprlib.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/config/layout.c b/src/config/layout.c index 5a27dcda..4bef9f74 100644 --- a/src/config/layout.c +++ b/src/config/layout.c @@ -418,8 +418,7 @@ void config_widget ( GScanner *scanner, GtkWidget *widget ) SEQ_OPT,G_TOKEN_STRING,NULL,&id,NULL, SEQ_OPT,'{',NULL,&curly,NULL, SEQ_END); - if(id) - base_widget_set_id(widget,id); + base_widget_set_id(widget,id); if(curly) { diff --git a/src/exprlib.c b/src/exprlib.c index cacb0588..3ef76fca 100644 --- a/src/exprlib.c +++ b/src/exprlib.c @@ -9,6 +9,7 @@ #include "module.h" #include "wintree.h" #include "expr.h" +#include "basewidget.h" /* extract a substring */ static void *expr_lib_mid ( void **params, void *widget, void *event ) @@ -276,6 +277,13 @@ static void *expr_lib_gtkevent ( void **params, void *base, void *event ) return result; } +static void *expr_lib_widget_id ( void **params, void *widget, void *event ) +{ + gchar *id = base_widget_get_id(widget); + + return g_strdup(id?id:""); +} + ModuleExpressionHandlerV1 mid_handler = { .flags = MODULE_EXPR_DETERMINISTIC, .name = "mid", @@ -367,6 +375,12 @@ ModuleExpressionHandlerV1 gtkevent_handler = { .function = expr_lib_gtkevent }; +ModuleExpressionHandlerV1 widget_id_handler = { + .name = "widgetid", + .parameters = "", + .function = expr_lib_widget_id +}; + ModuleExpressionHandlerV1 *expr_lib_handlers[] = { &mid_handler, &pad_handler, @@ -381,6 +395,7 @@ ModuleExpressionHandlerV1 *expr_lib_handlers[] = { &upper_handler, &lower_handler, >kevent_handler, + &widget_id_handler, NULL };