aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dw/fltkui.cc6
-rw-r--r--src/form.cc16
2 files changed, 12 insertions, 10 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc
index ac3997ab..1ef9b61b 100644
--- a/dw/fltkui.cc
+++ b/dw/fltkui.cc
@@ -1287,10 +1287,10 @@ void FltkListResource::setItem (int index, bool selected)
if (item) {
itemsSelected.set (index, selected);
- if (mode == SELECTION_MULTIPLE)
- item->select(selected);
- else if (selected)
+ if (selected && mode != SELECTION_MULTIPLE)
tree->select_only(item);
+ else
+ item->select(selected);
queueResize (true);
}
}
diff --git a/src/form.cc b/src/form.cc
index d5bd71da..26ab8e0d 100644
--- a/src/form.cc
+++ b/src/form.cc
@@ -752,11 +752,12 @@ void Html_tag_open_select(DilloHtml *html, const char *tag, int tagsize)
type = DILLO_HTML_INPUT_SELECT;
res = factory->createOptionMenuResource ();
} else {
+ ListResource::SelectionMode mode;
+
type = DILLO_HTML_INPUT_SEL_LIST;
- res = factory->createListResource (multi ?
- ListResource::SELECTION_MULTIPLE :
- ListResource::SELECTION_EXACTLY_ONE,
- rows);
+ mode = multi ? ListResource::SELECTION_MULTIPLE
+ : ListResource::SELECTION_AT_MOST_ONE;
+ res = factory->createListResource (mode, rows);
}
Embed *embed = new Embed(res);
@@ -787,9 +788,10 @@ void Html_tag_close_select(DilloHtml *html)
DilloHtmlInput *input = Html_get_current_input(html);
DilloHtmlSelect *select = input->select;
- // BUG(?): should not do this for MULTI selections
- select->ensureSelection ();
-
+ if (input->type == DILLO_HTML_INPUT_SELECT) {
+ // option menu interface requires that something be selected */
+ select->ensureSelection ();
+ }
SelectionResource *res = (SelectionResource*)input->embed->getResource();
select->addOptionsTo (res);
}