chiark
/
gitweb
/
~mdw
/
clg
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added *REENTRANT-MAIN-ITERATION* to control if MAIN-ITERATE-ALL can be
[clg]
/
gtk
/
gtkcontainer.lisp
diff --git
a/gtk/gtkcontainer.lisp
b/gtk/gtkcontainer.lisp
index 89634c1d154b119250f2e2d921e4ce8a8e3ecb44..8cb62b7d5cb4e6a5cde6f6fc82f1e5912befbc9c 100644
(file)
--- a/
gtk/gtkcontainer.lisp
+++ b/
gtk/gtkcontainer.lisp
@@
-20,13
+20,14
@@
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gtkcontainer.lisp,v 1.2
2 2007/01/07 20:23:22
espen Exp $
+;; $Id: gtkcontainer.lisp,v 1.2
4 2007/07/04 14:24:54
espen Exp $
(in-package "GTK")
(defgeneric container-add (container widget &rest args))
(defgeneric container-remove (container widget))
(in-package "GTK")
(defgeneric container-add (container widget &rest args))
(defgeneric container-remove (container widget))
-(defgeneric container-children (container))
+(defgeneric container-all-children (container))
+(defgeneric container-internal-children (container))
(defgeneric (setf container-children) (children container))
(defgeneric (setf container-children) (children container))
@@
-78,15
+79,19
@@
(defbinding %container-add () nil
(container container)
(widget widget))
(container container)
(widget widget))
-(defmethod container-add ((container container) (widget widget) &rest args)
- (%container-add container widget)
+(defun init-child-slots (container child args)
(when args
(setf
(when args
(setf
- (slot-value
widget
'child-properties)
+ (slot-value
child
'child-properties)
(apply
#'make-instance
(gethash (class-of container) *container-to-child-class-mappings*)
(apply
#'make-instance
(gethash (class-of container) *container-to-child-class-mappings*)
- :parent container :child widget args))))
+ :parent container :child child args))))
+
+(defmethod container-add ((container container) (widget widget) &rest args)
+ (%container-add container widget)
+ (init-child-slots container widget args)
+ widget)
(defmethod container-add ((container container) (widgets list) &rest args)
(dolist (widget widgets)
(defmethod container-add ((container container) (widgets list) &rest args)
(dolist (widget widgets)
@@
-165,11
+170,11
@@
(defmethod container-all-children ((container container))
(nreverse internal)))
(defmethod container-internal-children ((container container))
(nreverse internal)))
(defmethod container-internal-children ((container container))
- (let ((
public
-children (container-children container))
+ (let ((
external
-children (container-children container))
(all-children (container-all-children container)))
(loop
for child in all-children
(all-children (container-all-children container)))
(loop
for child in all-children
- unless (find child
public
-children)
+ unless (find child
external
-children)
collect child)))
(defmethod (setf container-children) (children (container container))
collect child)))
(defmethod (setf container-children) (children (container container))