aboutsummaryrefslogtreecommitdiffstats
path: root/src/gwin/list.c
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2013-10-23 16:26:34 +0200
committerinmarket <andrewh@inmarket.com.au>2013-10-24 09:14:27 +1000
commit8fce1a6fcef51f171d5fd9ed381583507b361210 (patch)
treed2bf04fe2692c438d047a99c0561bbed565f6edb /src/gwin/list.c
parent6cc80926f00ce8d6533298cbb5ea061c1446287b (diff)
downloaduGFX-8fce1a6fcef51f171d5fd9ed381583507b361210.tar.gz
uGFX-8fce1a6fcef51f171d5fd9ed381583507b361210.tar.bz2
uGFX-8fce1a6fcef51f171d5fd9ed381583507b361210.zip
Added gwinListSetScroll
Diffstat (limited to 'src/gwin/list.c')
-rw-r--r--src/gwin/list.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/gwin/list.c b/src/gwin/list.c
index cf0bebc4..fe903c16 100644
--- a/src/gwin/list.c
+++ b/src/gwin/list.c
@@ -37,6 +37,7 @@
// Flags for the GListObject
#define GLIST_FLG_MULTISELECT (GWIN_FIRST_CONTROL_FLAG << 0)
#define GLIST_FLG_HASIMAGES (GWIN_FIRST_CONTROL_FLAG << 1)
+#define GLIST_FLG_SCROLLALWAYS (GWIN_FIRST_CONTROL_FLAG << 2)
// Flags on a ListItem.
#define GLIST_FLG_SELECTED 0x0001
@@ -93,7 +94,7 @@ static void gwinListDefaultDraw(GWidgetObject* gw, void* param) {
x = 1;
// the scroll area
- if (gw2obj->cnt > (gw->g.height-2) / iheight) {
+ if (gw2obj->cnt > (gw->g.height-2) / iheight || gw->g.flags & GLIST_FLG_SCROLLALWAYS) {
iwidth = gw->g.width - (SCROLLWIDTH+3);
gdispFillArea(gw->g.x+iwidth+2, gw->g.y+1, SCROLLWIDTH, gw->g.height-2, gdispBlendColor(ps->fill, gw->pstyle->background, 128));
gdispDrawLine(gw->g.x+iwidth+1, gw->g.y+1, gw->g.x+iwidth+1, gw->g.y+gw->g.height-2, ps->edge);
@@ -327,12 +328,29 @@ GHandle gwinListCreate(GListObject* gobj, GWidgetInit* pInit, bool_t multiselect
gobj->top = 0;
if (multiselect)
gobj->w.g.flags |= GLIST_FLG_MULTISELECT;
+ gobj->w.g.flags |= GLIST_FLG_SCROLLALWAYS;
gwinSetVisible(&gobj->w.g, pInit->g.show);
return (GHandle)gobj;
}
+void gwinListSetScroll(GHandle gh, scroll_t flag) {
+ // is it a valid handle?
+ if (gh->vmt != (gwinVMT *)&listVMT)
+ return 0;
+
+ switch (flag) {
+ case scrollAlways:
+ ((GListObject*)gh)->w.g.flags |= GLIST_FLG_SCROLLALWAYS;
+ break;
+
+ case scrollAuto:
+ ((GListObject*)gh)->w.g.flags &=~ GLIST_FLG_SCROLLALWAYS;
+ break;
+ }
+}
+
int gwinListAddItem(GHandle gh, const char* item_name, bool_t useAlloc) {
ListItem *newItem;