From e31e795e8587a40d75d997b16fc7bac66916218b Mon Sep 17 00:00:00 2001 From: corvid Date: Wed, 28 Nov 2012 17:59:40 +0000 Subject: 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. --- dw/fltkui.cc | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'dw/fltkui.cc') 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); + } } } -- cgit v1.2.3