summaryrefslogtreecommitdiff
path: root/dw/fltkui.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2012-11-28 17:59:40 +0000
committercorvid <corvid@lavabit.com>2012-11-28 17:59:40 +0000
commite31e795e8587a40d75d997b16fc7bac66916218b (patch)
tree231bb36826aa27c9bf2f70bd6f2112e9c0a4f598 /dw/fltkui.cc
parent0540833d0b276713b2cdc98116e076fb09dcde6f (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.cc22
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);
+ }
}
}