diff options
author | corvid <corvid@lavabit.com> | 2011-01-29 06:24:08 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2011-01-29 06:24:08 +0000 |
commit | 6ce6ea48b6a5980e3d286a6759a29aaf3327a635 (patch) | |
tree | aede7b1139e052866d565347fc1160b0b7dbe616 /dw/fltkui.cc | |
parent | 6ff4ba2afed396681731303ed6d929579a913c27 (diff) |
push/pop for List
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r-- | dw/fltkui.cc | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc index 686429ca..66461b09 100644 --- a/dw/fltkui.cc +++ b/dw/fltkui.cc @@ -1042,6 +1042,8 @@ Fl_Widget *FltkListResource::createNewWidget (core::Allocation *allocation) // tree->clear_flag (SHORTCUT_LABEL); tree->callback(widgetCallback,this); tree->when(FL_WHEN_CHANGED); + + currParent = tree->root(); return tree; } @@ -1058,27 +1060,49 @@ void FltkListResource::widgetCallback (Fl_Widget *widget, void *data) } } -void FltkListResource::addItem (const char *str, bool enabled, bool selected) +void *FltkListResource::newItem (const char *str, bool enabled) { Fl_Tree *tree = (Fl_Tree *) widget; - Fl_Tree_Item *item = tree->add(tree->root(), str); - int index = itemsSelected.size (); + Fl_Tree_Item *parent = (Fl_Tree_Item *)currParent; + Fl_Tree_Item *item = tree->add(parent, str); + enabled &= parent->is_active(); item->activate(enabled); - itemsSelected.increase (); - itemsSelected.set (index,selected); + + return item; +} + +void FltkListResource::addItem (const char *str, bool enabled, bool selected) +{ + Fl_Tree *tree = (Fl_Tree *) widget; + Fl_Tree_Item *item = (Fl_Tree_Item *) newItem(str, enabled); + + itemsSelected.set (itemsSelected.size() - 1, selected); if (selected) { if (mode == SELECTION_MULTIPLE) item->select(selected); else - ((Fl_Tree *)widget)->select_only(item, 0); + tree->select_only(item, 0); } + queueResize (true); +} +void FltkListResource::pushGroup (const char *name, bool enabled) +{ + currParent = (Fl_Tree_Item *) newItem(name, enabled); queueResize (true); } +void FltkListResource::popGroup () +{ + Fl_Tree_Item *p = (Fl_Tree_Item *)currParent; + + if (p->parent()) + currParent = p->parent(); +} + int FltkListResource::getMaxItemWidth() { Fl_Tree *tree = (Fl_Tree *)widget; |