summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fluid/Fl_Window_Type.cxx2
-rw-r--r--fluid/code.cxx14
2 files changed, 13 insertions, 3 deletions
diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx
index 5d05ecd5d..26ff04580 100644
--- a/fluid/Fl_Window_Type.cxx
+++ b/fluid/Fl_Window_Type.cxx
@@ -1342,7 +1342,7 @@ void Fl_Widget_Class_Type::write_code1() {
write_h(" void _%s();\n", name());
write_h("public:\n");
write_h(" %s(int X, int Y, int W, int H, const char *L = 0);\n", name());
- write_h(" %s(int W, int H, const char *L = 0);\n");
+ write_h(" %s(int W, int H, const char *L = 0);\n", name());
write_c("%s::%s(int X, int Y, int W, int H, const char *L)\n", name(), name());
write_c(" : %s(X, Y, W, H, L) {\n", c);
diff --git a/fluid/code.cxx b/fluid/code.cxx
index d04d390fd..bbac3cbeb 100644
--- a/fluid/code.cxx
+++ b/fluid/code.cxx
@@ -254,14 +254,24 @@ static Fl_Type* write_code(Fl_Type* p) {
// Handle widget classes specially
for (q = p->next; q && q->level > p->level;) {
if (strcmp(q->type_name(), "Function")) q = write_code(q);
- else q = q->next;
+ else {
+ int level = q->level;
+ do {
+ q = q->next;
+ } while (q && q->level > level);
+ }
}
p->write_code2();
for (q = p->next; q && q->level > p->level;) {
if (!strcmp(q->type_name(), "Function")) q = write_code(q);
- else q = q->next;
+ else {
+ int level = q->level;
+ do {
+ q = q->next;
+ } while (q && q->level > level);
+ }
}
write_h("};\n");