X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/a1bba49eb92d0c365adbe49bb625a70c01d43a1e..fad6d6a9bc32da2f7837b97474587b711f06637b:/gtk/gtkselection.lisp diff --git a/gtk/gtkselection.lisp b/gtk/gtkselection.lisp index 3a39683..3a95cb5 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.10 2007-12-12 15:10:04 espen Exp $ +;; $Id: gtkselection.lisp,v 1.15 2008-04-11 18:38:56 espen Exp $ (in-package "GTK") @@ -45,7 +45,7 @@ (defbinding target-list-add (target-list target &optional flags info) nil (target-list target-list) ((gdk:atom-intern target) gdk:atom) (flags target-flags) - (info unsigned-int)) + ((or info 0) unsigned-int)) (defbinding target-list-add-table (target-list targets) nil (target-list target-list) @@ -60,19 +60,19 @@ (defbinding target-list-add-table (target-list targets) nil #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (progn - (defbinding target-list-add-text-targets (target-list info &optional writable-p) nil + (defbinding target-list-add-text-targets (target-list &optional info writable-p) nil (target-list target-list) - (info unsigned-int) + ((or info 0) unsigned-int) (writable-p boolean)) - (defbinding target-list-add-image-targets (target-list info &optional writable-p) nil + (defbinding target-list-add-image-targets (target-list &optional info writable-p) nil (target-list target-list) - (info unsigned-int) + ((or info 0) unsigned-int) (writable-p boolean)) - (defbinding target-list-add-uri-targets (target-list info &optional writable-p) nil + (defbinding target-list-add-uri-targets (target-list &optional info writable-p) nil (target-list target-list) - (info unsigned-int) + ((or info 0) unsigned-int) (writable-p boolean))) (defbinding target-list-remove (target-list target) nil @@ -169,7 +169,7 @@ (defun selection-data-get-targets (selection-data) (multiple-value-bind (valid-p targets) (%selection-data-get-targets selection-data) (when valid-p - (map-into targets #'gdk:atom-name targets)))) + (map 'vector #'gdk:atom-name targets)))) #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (defbinding selection-data-targets-include-image-p (selection-data &optional writable-p) boolean @@ -201,7 +201,8 @@ (define-callback %clipboard-clear-callback nil (declare (ignore clipboard)) (funcall (cdr (find-user-data callback-ids)))) -(defbinding %clipboard-set-with-data (clipboard targets get-func clear-func) boolean +;; Deprecated, use clipboard-set-contents +(defbinding clipboard-set-with-data (clipboard targets get-func clear-func) boolean (clipboard clipboard) (targets (vector (inlined target-entry))) ((length targets) unsigned-int) @@ -209,8 +210,8 @@ (defbinding %clipboard-set-with-data (clipboard targets get-func clear-func) boo (%clipboard-clear-callback callback) ((register-user-data (cons get-func clear-func)) unsigned-int)) -(defun clipboard-set-with-data (clipboard targets get-func &optional clear-func) - (%clipboard-set-with-data clipboard (ensure-target-table targets) +(defun clipboard-set-contents (clipboard targets get-func &optional clear-func) + (clipboard-set-with-data clipboard (ensure-target-table targets) get-func (or clear-func #'(lambda ())))) (defbinding clipboard-clear () nil @@ -226,11 +227,14 @@ (defbinding clipboard-set-image () nil (clipboard clipboard) (pixbuf gdk:pixbuf)) -(defun clipboard-set (clipboard object) - (etypecase object - (string (clipboard-set-text clipboard object)) - #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") - (gdk:pixbuf (clipboard-set-image clipboard object)))) +(defgeneric clipboard-set (clipboard object)) + +(defmethod clipboard-set ((clipboard clipboard) (text string)) + (clipboard-set-text clipboard text)) + +#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") +(defmethod clipboard-set ((clipboard clipboard) (image gdk:pixbuf)) + (clipboard-set-image clipboard image)) (define-callback-marshal %clipboard-receive-callback nil ((:ignore clipboard) selection-data)) @@ -265,7 +269,7 @@ (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)) - (funcall (find-user-data callback-id) (map-into atoms #'gdk:atom-name atoms))) + (funcall (find-user-data callback-id) (map 'vector #'gdk:atom-name atoms))) (defbinding clipboard-request-targets (clipboard callback) nil (clipboard clipboard) @@ -299,7 +303,7 @@ (defun clipboard-wait-for-targets (clipboard) (multiple-value-bind (valid-p targets) (%clipboard-wait-for-targets clipboard) (when valid-p - (map-into targets #'gdk:atom-name targets)))) + (map 'vector #'gdk:atom-name targets)))) #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") (defbinding clipboard-wait-is-target-available-p (clipboard target) boolean @@ -457,7 +461,7 @@ (defbinding %drag-source-set-icon-pixbuf () nil (defbinding %drag-source-set-icon-stock () nil (widget widget) - (pixbuf gdk:pixbuf)) + (stock-id string)) (defun drag-source-set-icon (widget icon) (etypecase icon