;; 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.80 2007-07-12 13:13:34 espen Exp $
+;; $Id: gtk.lisp,v 1.83 2007-09-06 14:18:56 espen Exp $
(in-package "GTK")
(find-package "SWANK")
(not (eq (symbol-value (find-symbol "*COMMUNICATION-STYLE*" "SWANK")) :spawn)))
(error "When running clg in Slime, the communication style :spawn must be used in combination with multi threaded event handling. See the README file and <http://common-lisp.net/project/slime/doc/html/slime_45.html> for more information."))
+ (gdk:threads-init)
(let ((main-running (sb-thread:make-waitqueue)))
(gdk:with-global-lock
(setf *main-thread*
(sb-thread:make-thread
#'(lambda ()
- (gdk:threads-init)
(gdk:with-global-lock
(gdk:display-open display)
#+win32(gdk:timeout-add-with-lock (/ *event-poll-interval* 1000)
;; This will *only* protect code entered directly in the REPL.
(when (find-package "SWANK")
(push #'(lambda (form)
- (within-main-loop (eval form)))
- swank::*slime-repl-eval-hooks*))))
+ (within-main-loop (eval form)))
+ (symbol-value (find-symbol "*SLIME-REPL-EVAL-HOOKS*" "SWANK"))))))
#-sb-thread
(defmacro within-main-loop (&body body)
(define-callback-marshal %assistant-page-func-callback int
((current-page int)))
- (defbinding assistant-set-forward-func (assistant function) nil
+ (defbinding assistant-set-forward-page-func (assistant function) nil
(assistant assistant)
(%assistant-page-func-callback callback)
((register-callback-function function) pointer-data)
(defmethod shared-initialize ((dialog message-dialog) names &rest initargs
- &key buttons text
+ &key message-type buttons button text
#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
secondary-text)
(declare (ignore names))
#?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0")
(when secondary-text
(message-dialog-format-secondary-markup dialog secondary-text))
+ (when (and (not buttons) (not button))
+ (loop
+ for (key value) on initargs by #'cddr
+ when (and (eq key :signal) (eq (first value) :close))
+ do (warn "Default button configuration changed from ~A to ~A" :close
+ (if (eq message-type :question) :yes-no :ok))
+ (loop-finish)))
(if (typep buttons 'buttons-type)
(apply #'call-next-method dialog names (plist-remove :buttons initargs))
(call-next-method)))