X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/8b70d56024b8c55a52e045c0ec29352a63c12d32..5a87235c32cbd38d00d39bc6ae6f2981f20bcfc5:/gtk/gtkselection.lisp diff --git a/gtk/gtkselection.lisp b/gtk/gtkselection.lisp index 7e7f52c..56d86e7 100644 --- a/gtk/gtkselection.lisp +++ b/gtk/gtkselection.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtkselection.lisp,v 1.1 2006-02-06 11:57:27 espen Exp $ +;; $Id: gtkselection.lisp,v 1.6 2006-02-19 19:31:15 espen Exp $ (in-package "GTK") @@ -28,20 +28,6 @@ (in-package "GTK") ;;;; Selection -(defbinding %selection-data-copy () pointer - (location pointer)) - -(defbinding %selection-data-free () nil - (location pointer)) - -(defmethod reference-foreign ((class (eql (find-class 'selection-data))) location) - (declare (ignore class)) - (%selection-data-copy location)) - -(defmethod unreference-foreign ((class (eql (find-class 'selection-data))) location) - (declare (ignore class)) - (%selection-data-free location)) - (defbinding %target-list-ref () pointer (location pointer)) @@ -60,13 +46,10 @@ (defbinding %target-list-new () pointer (targets (vector (inlined target-entry))) ((length targets) int)) -(defmethod initialize-instance ((target-list target-list) &key targets) - (setf - (slot-value target-list 'location) - (%target-list-new targets)) - (call-next-method)) +(defmethod allocate-foreign ((target-list target-list) &key targets) + (%target-list-new targets)) -(defbinding target-list-add (target-list targets &optional flags info) nil +(defbinding target-list-add (target-list target &optional flags info) nil (target-list target-list) (target gdk:atom) (flags unsigned-int) @@ -188,7 +171,7 @@ (defbinding selection-data-targets-include-image-p (selection-data &optional wri (defbinding selection-data-targets-include-text-p (selection-data) boolean (selection-data selection-data)) -(defbinding selection-remove-all (selection-data) boolean +(defbinding selection-remove-all () boolean (widget widget)) @@ -200,22 +183,21 @@ (defbinding (clipboard-get "gtk_clipboard_get_for_display") ((gdk:atom-intern selection) gdk:atom)) -(defcallback %clipboard-get-func (nil (clipboard pointer) - (selection-data selection-data) - (info int) - (user-data unsigned-int)) - (funcall (car (find-user-data user-data)) selection-data info)) +(define-callback %clipboard-get-callback nil + ((clipboard pointer) (selection-data selection-data) + (info int) (callback-ids unsigned-int)) + (funcall (car (find-user-data callback-ids)) selection-data info)) -(defcallback %clipboard-clear-func (nil (clipboard pointer) - (user-data unsigned-int)) - (funcall (cdr (find-user-data user-data)))) +(define-callback %clipboard-clear-callback nil + ((clipboard pointer) (callback-ids unsigned-int)) + (funcall (cdr (find-user-data callback-ids)))) (defbinding clipboard-set-with-data (clipboard targets get-func clear-func) gobject (clipboard clipboard) - (targets (vector target-entry)) + (targets (vector (inlined target-entry))) ((length targets) unsigned-int) - (%clipboard-get-func callback) - (%clipboard-clear-func callback) + (%clipboard-get-callback callback) + (%clipboard-clear-callback callback) ((register-user-data (cons get-func clear-func)) unsigned-int)) (defbinding clipboard-clear () nil @@ -237,50 +219,43 @@ (defun clipboard-set (clipboard object) #+gtk2.6 (gdk:pixbuf (clipboard-set-image clipboard object)))) -(defcallback %clipboard-receive-func (nil (clipboard pointer) - (selection-data selection-data) - (user-data unsigned-int)) - (funcall (find-user-data user-data) selection-data)) +(define-callback-marshal %clipboard-receive-callback nil + ((:ignore clipboard) selection-data)) (defbinding clipboard-request-contents (clipboard target callback) nil (clipboard clipboard) ((gdk:atom-intern target) gdk:atom) - (%clipboard-receive-func callback) + (%clipboard-receive-callback callback) ((register-callback-function callback) unsigned-int)) -(defcallback %clipboard-text-receive-func (nil (clipboard pointer) - (text (copy-of string)) - (user-data unsigned-int)) - (funcall (find-user-data user-data) text)) +(define-callback-marshal %clipboard-text-receive-callback nil + ((:ignore clipboard) (text string))) + (defbinding clipboard-request-text (clipboard callback) nil (clipboard clipboard) - (%clipboard-text-receive-func callback) + (%clipboard-text-receive-callback callback) ((register-callback-function callback) unsigned-int)) #+gtk2.6 (progn - (defcallback %clipboard-image-receive-func (nil (clipboard pointer) - (image gdk:pixbuf) - (user-data unsigned-int)) - (funcall (find-user-data user-data) image)) + (define-callback-marshal %clipboard-image-receive-callback nil + ((:ignore clipboard) (image gdk:pixbuf))) (defbinding clipboard-request-image (clipboard callback) nil (clipboard clipboard) - (%clipboard-image-receive-func callback) + (%clipboard-image-receive-callback callback) ((register-callback-function callback) unsigned-int))) -(defcallback %clipboard-targets-receive-func - (nil (clipboard pointer) - (atoms (vector gdk:atom n-atoms)) - (n-atoms unsigned-int) - (user-data unsigned-int)) - (funcall (find-user-data user-data) atoms)) +(define-callback %clipboard-targets-receive-callback nil + ((clipboard pointer) (atoms (vector gdk:atom n-atoms)) + (n-atoms unsigned-int) (callback-id unsigned-int)) + (funcall (find-user-data callback-id) atoms)) (defbinding clipboard-request-targets (clipboard callback) nil (clipboard clipboard) - (%clipboard-targets-receive-func callback) + (%clipboard-targets-receive-callback callback) ((register-callback-function callback) unsigned-int)) (defbinding clipboard-wait-for-contents () selection-data @@ -320,6 +295,7 @@ (defbinding clipboard-set-can-store () nil (defbinding clipboard-store () nil (clipboard clipboard)) + ;;;; Drag and Drop (defbinding drag-dest-set (widget flags targets actions) nil