From ccca7337ecc8992df65728b2faca9b2daad73f9f Mon Sep 17 00:00:00 2001 From: Dmitry Kalyanov Date: Sat, 28 Mar 2009 20:39:52 +0300 Subject: [PATCH] Added some support for adding widget into text view --- gtk/gtk.demo.lisp | 8 ++++++++ gtk/gtk.text.lisp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/gtk/gtk.demo.lisp b/gtk/gtk.demo.lisp index 87d813f..f517183 100644 --- a/gtk/gtk.demo.lisp +++ b/gtk/gtk.demo.lisp @@ -198,6 +198,7 @@ (defun test-text-view () (using* ((window (make-instance 'gtk-window :type :toplevel :title "Testing text view" :width-request 400 :height-request 300)) (button (make-instance 'button :label "Do")) + (button-insert (make-instance 'button :label "Insert a button!")) (bold-btn (make-instance 'button :label "Bold")) (buffer (make-instance 'text-buffer :text "Some text buffer with some text inside")) (v (make-instance 'text-view :buffer buffer :wrap-mode :word)) @@ -225,6 +226,12 @@ (if (text-iter-has-tag start tag) (text-buffer-remove-tag buffer tag start end) (text-buffer-apply-tag buffer tag start end))))))) + (g-signal-connect button-insert "clicked" (lambda (b) (declare (ignore b)) + (let* ((iter (text-buffer-get-iter-at-mark buffer (text-buffer-get-mark buffer "insert"))) + (anchor (text-buffer-insert-child-anchor buffer iter)) + (button (make-instance 'button :label "A button!"))) + (widget-show button) + (text-view-add-child-at-anchor v button anchor)))) (let ((tag (make-instance 'text-tag :name "bold" :weight 700))) (text-tag-table-add (text-buffer-tag-table buffer) tag) (g-signal-connect tag "event" @@ -237,6 +244,7 @@ (container-add window box) (container-add scrolled v) (box-pack-start box button :expand nil) + (box-pack-start box button-insert :expand nil) (box-pack-start box bold-btn :expand nil) (box-pack-start box scrolled) (widget-show window) diff --git a/gtk/gtk.text.lisp b/gtk/gtk.text.lisp index c02344f..b697e10 100644 --- a/gtk/gtk.text.lisp +++ b/gtk/gtk.text.lisp @@ -991,6 +991,14 @@ ;; void gtk_text_view_add_child_at_anchor (GtkTextView *text_view, ;; GtkWidget *child, ;; GtkTextChildAnchor *anchor); + +(defcfun (text-view-add-child-at-anchor "gtk_text_view_add_child_at_anchor") :void + (text-view g-object) + (child g-object) + (anchor g-object)) + +(export 'text-view-add-child-at-anchor) + ;; GtkTextChildAnchor; ;; GtkTextChildAnchor* gtk_text_child_anchor_new (void); ;; GList* gtk_text_child_anchor_get_widgets (GtkTextChildAnchor *anchor); -- 1.7.10.4