aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--widget_icon.c18
-rw-r--r--widget_icon.h1
2 files changed, 14 insertions, 5 deletions
diff --git a/widget_icon.c b/widget_icon.c
index 83afbac..c785389 100644
--- a/widget_icon.c
+++ b/widget_icon.c
@@ -101,11 +101,18 @@ void widget_icon_update(void *Self)
/* evaluate properties */
property_eval(&Icon->speed);
property_eval(&Icon->visible);
-
- /* rotate icon bitmap */
- Icon->curmap++;
- if (Icon->curmap >= Icon->maxmap)
- Icon->curmap = 0;
+ property_eval(&Icon->frame);
+
+ int frame = P2N(&Icon->frame);
+ if ( (frame >= 0) && (frame <= Icon->maxmap) ) {
+ /* select icon bitmap by evaluated frame number */
+ Icon->curmap = frame;
+ } else {
+ /* rotate icon bitmap */
+ Icon->curmap++;
+ if (Icon->curmap >= Icon->maxmap)
+ Icon->curmap = 0;
+ }
}
/* finally, draw it! */
@@ -140,6 +147,7 @@ int widget_icon_init(WIDGET * Self)
/* load properties */
property_load(section, "speed", "100", &Icon->speed);
property_load(section, "visible", "1", &Icon->visible);
+ property_load(section, "frame", "-1", &Icon->frame);
/* read bitmap */
widget_icon_read_bitmap(section, Icon);
diff --git a/widget_icon.h b/widget_icon.h
index 72df8be..2eb2f08 100644
--- a/widget_icon.h
+++ b/widget_icon.h
@@ -33,6 +33,7 @@
typedef struct WIDGET_ICON {
PROPERTY speed; /* update interval (msec) */
PROPERTY visible; /* icon visible? */
+ PROPERTY frame; /* evaluated expression of frame number (optional) */
int ascii; /* ascii code of icon (depends on the driver) */
int curmap; /* current bitmap sequence */
int prvmap; /* previous bitmap sequence */