summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>1998-10-21 15:42:05 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>1998-10-21 15:42:05 +0000
commiteada39df34c50d3f8b95bd479cc548f1dd056e35 (patch)
treeb329bd66b84ffc63671e6211dc3e399d1ab45a55
parent7657a2e4a536a9ee50a9277c2662dc49362ae341 (diff)
Added fluid patch from Bill Spitzak; this moves the callback code down
before the widgets that use them so that include files will get included properly. git-svn-id: file:///fltk/svn/fltk/trunk@29 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--fluid/Fl_Function_Type.cxx2
-rw-r--r--fluid/code.cxx10
2 files changed, 9 insertions, 3 deletions
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx
index 21bdb5b37..3576e837b 100644
--- a/fluid/Fl_Function_Type.cxx
+++ b/fluid/Fl_Function_Type.cxx
@@ -208,7 +208,7 @@ void Fl_Function_Type::write_code2() {
if (ismain()) {
if (havewidgets) write_c(" w->show(argc, argv);\n");
write_c(" return Fl::run();\n");
- } else if (havewidgets && !constructor)
+ } else if (havewidgets && !constructor && !return_type)
write_c(" return w;\n");
write_c("}\n");
indentation = 0;
diff --git a/fluid/code.cxx b/fluid/code.cxx
index a8028acc1..5a5312528 100644
--- a/fluid/code.cxx
+++ b/fluid/code.cxx
@@ -243,8 +243,14 @@ int write_code(const char *s, const char *t) {
if (t && include_H_from_C)
write_c("#include \"%s\"\n", filename_name(t));
- for (p = Fl_Type::first; p; p = p->next) p->write_static();
- for (p = Fl_Type::first; p;) p = write_code(p);
+ for (p = Fl_Type::first; p;) {
+ // write all static data for this & all children first
+ p->write_static();
+ for (Fl_Type* q = p->next; q && q->level > p->level; q = q->next)
+ q->write_static();
+ // then write the nested code:
+ p = write_code(p);
+ }
if (!s) return 1;
int x = fclose(code_file);