X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/8b70d56024b8c55a52e045c0ec29352a63c12d32..25d755bb92d7a70ce26cc4df27f6779dc24889e8:/gtk/gtkselection.lisp diff --git a/gtk/gtkselection.lisp b/gtk/gtkselection.lisp index 7e7f52c..8b72f49 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.8 2006-04-10 18:54:47 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) @@ -114,7 +97,8 @@ (defbinding (selection-set-owner "gtk_selection_owner_set_for_display") boolean (display gdk:display) (widget widget) - ((gdk:atom-intern selection) gdk:atom)) + ((gdk:atom-intern selection) gdk:atom) + (time (unsigned 32))) (defbinding selection-add-target () nil (widget widget) @@ -188,7 +172,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 +184,23 @@ (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)) + (declare (ignore clipboard)) + (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)) + (declare (ignore clipboard)) + (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 +222,44 @@ (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)) + (declare (ignore clipboard n-atoms)) + (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 +299,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