chiark / gitweb /
Bug fixes
[clg] / gtk / gtkselection.lisp
index 6be70981a0a184e45d6cab98da2255918f96d68f..3a95cb521e7a59a3b6aa4bf32436d822003c69b1 100644 (file)
@@ -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.11 2007-12-12 15:47:29 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,7 @@ (define-callback %clipboard-clear-callback nil
   (declare (ignore clipboard))
   (funcall (cdr (find-user-data callback-ids))))
 
-;; Deprecated, use clipboard-set
+;; Deprecated, use clipboard-set-contents
 (defbinding clipboard-set-with-data (clipboard targets get-func clear-func) boolean
   (clipboard clipboard)
   (targets (vector (inlined target-entry)))
@@ -210,8 +210,8 @@ (defbinding clipboard-set-with-data (clipboard targets get-func clear-func) bool
   (%clipboard-clear-callback callback)
   ((register-user-data (cons get-func clear-func)) unsigned-int))
 
-(defun clipboard-set (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
@@ -227,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))
@@ -266,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)
@@ -300,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
@@ -458,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