patch added by anonymous on Fri Oct 20 23:28:19 2017

diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/main.cpp qt-light-0.991-1/main.cpp
--- qt-light-0.991/main.cpp     2017-10-20 20:50:21.625190966 +0200
+++ qt-light-0.991-1/main.cpp   2017-10-20 23:27:37.870270372 +0200
@@ -64,6 +64,7 @@
 #define qtapplication     QApplication *
 #define qtreceiver        SimpleReceiver *
 #define qtwidget          QWidget *
+#define qtlayout          QLayout *
 #define qtpixmap           QPixmap *
 #define qttimer           QTimer *
 #define qtsound           QSound *
@@ -98,7 +99,6 @@
   return w;
 }
 
-
 ___bool qt_run(___bool once)
 {
   if(once) {
@@ -114,7 +114,7 @@
 void qt_deleteobject(QObject *o) { delete o; }
 void qt_deletepixmap(QPixmap *o) { delete o; }
 ___bool qt_connect(QWidget *w1, char *sig, QObject *w2, char *slot) { return QObject::connect(w1, sig, w2, slot); }
-QWidget *qt_find(QWidget *parent, char *name) { return parent->findChild(QString(name)); }
+QObject *qt_find(QObject *parent, char *name) { return parent->findChild(QString(name)); }
 QObject *qt_receiver(char *name, C_word proc) { return new SimpleReceiver(name, proc); }
 
 
@@ -413,6 +413,7 @@
 void qt_clearlistwidget(qtwidget w) { ((QListWidget *)w)->clear(); }
 void qt_addcomboboxitem(qtwidget w, char *s) { ((QComboBox *)w)->addItem(s); }
 void qt_addlistwidgetitem(qtwidget w, char *s) { ((QListWidget *)w)->addItem(s); }
+void qt_layoutaddwidget(qtlayout l, qtwidget w) { ((QLayout *)l)->addWidget(w); }
 
 void qt_addtreewidgetitem(qtwidget w, char *s)
 { 
diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/prototypes.h qt-light-0.991-1/prototypes.h
--- qt-light-0.991/prototypes.h 2017-10-20 20:50:21.625190966 +0200
+++ qt-light-0.991-1/prototypes.h       2017-10-20 23:27:29.739226833 +0200
@@ -10,7 +10,7 @@
 void qt_deletepixmap(qtpixmap widget);
 qtpixmap qt_pixmap(char *filename);
 ___bool qt_connect(qtwidget w1, char *sig, qtobject w2, char *slot);
-qtwidget qt_find(qtwidget parent, char *name);
+qtobject qt_find(qtobject parent, char *name);
 qtobject qt_receiver(char *name, C_word proc);
 int qt_message(char *caption, char *text, qtwidget parent, char *b0, char *b1, char *b2);
 const char *qt_classname(qtobject w);
@@ -49,6 +49,7 @@
 void qt_addcomboboxitem(qtwidget w, char *s);
 void qt_addlistwidgetitem(qtwidget w, char *s);
 void qt_addtreewidgetitem(qtwidget w, char *s);
+void qt_layoutaddwidget(qtlayout l, qtwidget w);
 char *qt_listwidgetitem(qtwidget w, int i);
 char *qt_getexistingdirectory(qtwidget p, char *cap, char *dir, int opts);
 char *qt_getopenfilename(qtwidget p, char *cap, char *dir, char *filter, int opts);
diff -ur -x '*compile*' -x '*.setup' qt-light-0.991/qt-light.scm qt-light-0.991-1/qt-light.scm
--- qt-light-0.991/qt-light.scm 2017-10-20 20:50:21.625190966 +0200
+++ qt-light-0.991-1/qt-light.scm       2017-10-20 22:31:25.674833006 +0200
@@ -3,11 +3,11 @@
 
 (module qt-light (qt:init 
                  qt:widget qt:show qt:hide qt:run
-                 qt:delete qt:message qt:connect qt:find
+                 qt:delete qt:message qt:connect qt:find-widget qt:find-layout qt:find qt:pointer->widget
                  qt:widget qt:receiver qt:pixmap qt:timer
                  qt:property qt:gl qt:update qt:start qt:stop
-                 qt:clear qt:add qt:item  qt:classname
-                    
+                 qt:clear qt:add qt:item  qt:classname qt:layout-add-widget
+                     
                     
                  
                  qt:get-open-filename qt:get-save-filename qt:get-directory
@@ -33,6 +33,7 @@
 (define  (%  (class 'qt-object)))
 (define  (%  (class 'qt-sound)))
 (define  (%  (class 'qt-widget)))
+(define  (%  (class 'qt-layout)))
 (define  (%  (class 'qt-application)))
 (define  (%  (class 'qt-pixmap)))
 (define  (%  (class 'qt-receiver)))
@@ -42,6 +43,7 @@
 
 (define (qt:->pointer i) (and i (? i pointer)))
 (define (qt:pointer->widget p) (and p (%  (pointer p))))
+(define (qt:pointer->layout p) (and p (%  (pointer p))))
 (define (qt:pointer->object p) (and p (%  (pointer p))))
 (define (qt:pointer->timer p) (and p (%  (pointer p))))
 (define (qt:pointer->application p) (and p (%  (pointer p))))
@@ -54,6 +56,7 @@
 #>?
 ___declare(substitute, "qt_;qt:")
 ___declare(type, "qtwidget;c-pointer;qt:->pointer;qt:pointer->widget")
+___declare(type, "qtlayout;c-pointer;qt:->pointer;qt:pointer->layout")
 ___declare(type, "qtapplication;c-pointer;qt:->pointer;qt:pointer->application")
 ___declare(type, "qtpixmap;c-pointer;qt:->pointer;qt:pointer->pixmap")
 ___declare(type, "qtobject;c-pointer;qt:->pointer;qt:pointer->object")
@@ -171,6 +174,19 @@
        ((string=? "QTreeWidget" (qt:classname w)) (qt:addtreewidgetitem w x))
        (else (error 'qt:add "invalid widget" w x)) ) )
 
+(define (qt:layout-add-widget l w)
+  (if (string=? "QLayout" (qt:classname l))
+      (if (string=? "QWidget" (qt:classname w))
+          (qt:layoutaddwidget l w)
+          (error 'qt-layout-add-widget "invalid widget"))
+      (error 'qt:layout-add-widget "invalid layout") ) )
+
+(define (qt:find-layout o s)
+  (qt:pointer->layout (qt:find o s)) )
+
+(define (qt:find-widget o s)
+  (qt:pointer->widget (qt:find o s)) )
+
 (define (qt:item w i) (and (positive? i) (qt:listwidgetitem w i)))
 (define qt:clear qt:clearlistwidget)