;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gtk.lisp,v 1.87 2008-01-02 15:57:57 espen Exp $
+;; $Id: gtk.lisp,v 1.89 2008-01-11 14:44:28 espen Exp $
(in-package "GTK")
#?-(or (featurep :cmu) (sbcl< 1 0 6))
;; When running in Slime we need to hook into the Swank server
;; to handle events asynchronously.
- (if (find-package "SWANK")
- (let ((read-from-emacs (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK")))
- (stream (funcall (find-symbol "CONNECTION.SOCKET-IO" "SWANK") (symbol-value (find-symbol "*EMACS-CONNECTION*" "SWANK")))))
- (setf (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK"))
- #'(lambda ()
- (loop
- (case (socket-status (cons stream :input) 0 *event-poll-interval*)
- ((:input :eof) (return (funcall read-from-emacs)))
- (otherwise (main-iterate-all)))))))
+ (unless (and
+ (find-package "SWANK")
+ (let ((connection (symbol-value (find-symbol "*EMACS-CONNECTION*" "SWANK"))))
+ (when connection
+ (let ((read-from-emacs (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK")))
+ (stream (funcall (find-symbol "CONNECTION.SOCKET-IO" "SWANK") connection)))
+ (setf (symbol-function (find-symbol "READ-FROM-EMACS" "SWANK"))
+ #'(lambda ()
+ (loop
+ (case (socket-status (cons stream :input) 0
+ *event-poll-interval*)
+ ((:input :eof) (return (funcall read-from-emacs)))
+ (otherwise (main-iterate-all))))))))))
#-(and clisp readline)
(warn "Asynchronous event handling not supported on this platform. An explicit main loop has to be started."))
;;; Color selection
-(defbinding (color-selection-is-adjusting-p
- "gtk_color_selection_is_adjusting") () boolean
+(defbinding color-selection-is-adjusting-p () boolean
(colorsel color-selection))
+(defbinding (color-selection-previous-color
+ "gtk_color_selection_get_previous_color") () nil
+ (colorsel color-selection)
+ ((make-instance 'gdk:color) gdk:color :in/return))
;;; Color selection dialog -- no functions