summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2007-01-24 20:32:54 +0000
committerMatthias Melcher <fltk@matthiasm.com>2007-01-24 20:32:54 +0000
commite36d3a07ce69b648b9157cf97c2aafb8f67461a9 (patch)
treea14bfe840d3631c3c719c4c79257301934c02064
parentecdd893933dfcca8466a4af8c75b88e526af2e4d (diff)
- Fluid avoids writing unsopported combinations of the
"when()" flags (STR #1501) - Fl_Browser_ would allow keyboard callbacks even though "when()" was set to "never" (STR #1501) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@5639 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CHANGES4
-rw-r--r--fluid/Fl_Widget_Type.cxx10
-rw-r--r--src/Fl_Browser_.cxx12
3 files changed, 18 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index f67dce44c..a48bdce45 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,9 @@
CHANGES IN FLTK 1.1.8
+ - Fluid avoids writing unsupported combinations of the
+ "when()" flags (STR #1501)
+ - Fl_Browser_ would allow keyboard callbacks even though
+ "when()" was set to "never" (STR #1501)
- Added automated little helpers to Sudoku
- Added example code for Wizard with the
Tabs demo (STR #1564)
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index 910f332d7..d7851f9c5 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -2223,9 +2223,15 @@ void Fl_Widget_Type::write_widget_code() {
if (i & FL_ALIGN_INSIDE) write_c("|FL_ALIGN_INSIDE");
write_c(");\n");
}
- if (o->when() != tplate->when() || subclass())
+ // avoid the unsupported combination of flegs when user sets
+ // "when" to "FL_WHEN_NEVER", but keeps the "no change" set.
+ // FIXME: This could be reflected in the GUI by graying out the button.
+ Fl_When ww = o->when();
+ if (ww==FL_WHEN_NOT_CHANGED)
+ ww = FL_WHEN_NEVER;
+ if (ww != tplate->when() || subclass())
write_c("%s%s->when(%s);\n", indent(), var,
- item_name(whensymbolmenu, o->when()));
+ item_name(whensymbolmenu, ww));
if (!o->visible() && o->parent())
write_c("%s%s->hide();\n", indent(), var);
if (!o->active())
diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx
index 852b25431..b64968055 100644
--- a/src/Fl_Browser_.cxx
+++ b/src/Fl_Browser_.cxx
@@ -578,32 +578,32 @@ int Fl_Browser_::handle(int event) {
if (type()==FL_HOLD_BROWSER) switch (Fl::event_key()) {
case FL_Down:
while ((l = item_next(l)))
- if (item_height(l)>0) {select_only(l, 1); break;}
+ if (item_height(l)>0) {select_only(l, when()); break;}
return 1;
case FL_Up:
while ((l = item_prev(l))) if (item_height(l)>0) {
- select_only(l, 1); break;}
+ select_only(l, when()); break;}
return 1;
} else switch (Fl::event_key()) {
case FL_Enter:
case FL_KP_Enter:
- select_only(l, 1);
+ select_only(l, when());
return 1;
case ' ':
selection_ = l;
- select(l, !item_selected(l), 1);
+ select(l, !item_selected(l), when());
return 1;
case FL_Down:
while ((l = item_next(l))) {
if (Fl::event_state(FL_SHIFT|FL_CTRL))
- select(l, l1 ? item_selected(l1) : 1, 1);
+ select(l, l1 ? item_selected(l1) : 1, when());
if (item_height(l)>0) goto J1;
}
return 1;
case FL_Up:
while ((l = item_prev(l))) {
if (Fl::event_state(FL_SHIFT|FL_CTRL))
- select(l, l1 ? item_selected(l1) : 1, 1);
+ select(l, l1 ? item_selected(l1) : 1, when());
if (item_height(l)>0) goto J1;
}
return 1;