diff options
author | corvid <corvid@lavabit.com> | 2012-11-28 17:59:40 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2012-11-28 17:59:40 +0000 |
commit | e31e795e8587a40d75d997b16fc7bac66916218b (patch) | |
tree | 231bb36826aa27c9bf2f70bd6f2112e9c0a4f598 /dw/fltkui.cc | |
parent | 0540833d0b276713b2cdc98116e076fb09dcde6f (diff) |
selection resource reset rm queueRedraws
...and do list selection through tree to get draw() calls. Selection through
the item just toggles a flag, which makes sense, but I didn't particularly
expect the distinction.
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r-- | dw/fltkui.cc | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc index 86a3af3f..f12306fa 100644 --- a/dw/fltkui.cc +++ b/dw/fltkui.cc @@ -1138,10 +1138,8 @@ void FltkOptionMenuResource::addItem (const char *str, void FltkOptionMenuResource::setItem (int index, bool selected) { - if (selected) { + if (selected) ((Fl_Choice *)widget)->value(menu+index); - queueResize (true); - } } void FltkOptionMenuResource::pushGroup (const char *name, bool enabled) @@ -1286,13 +1284,19 @@ void FltkListResource::setItem (int index, bool selected) item = item->next(); if (item) { + bool do_callback = false; itemsSelected.set (index, selected); - if (selected && mode != SELECTION_MULTIPLE) { - const bool do_callback = true; - tree->select_only(item, do_callback); - } else - item->select(selected); - queueResize (true); + if (selected) { + if (mode == SELECTION_MULTIPLE) { + tree->select(item, do_callback); + } else { + /* callback to deselect other selected item */ + do_callback = true; + tree->select_only(item, do_callback); + } + } else { + tree->deselect(item, do_callback); + } } } |