From: Chris Hanson Date: Sun, 1 Aug 1993 06:10:37 +0000 (+0000) Subject: Disallow selection of a deleted screen. Unfortunately this can happen X-Git-Tag: 20090517-FFI~8154 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=67ff489c77421f47ab9cabb0d58bc9fe803811bf;p=mit-scheme.git Disallow selection of a deleted screen. Unfortunately this can happen because MWM generates these two events in sequence when the "close" window menu entry is selected: 1. WM_DELETE_WINDOW event on the given screen. 2. FocusIn event on the given screen. Yuck! Side effect of selecting the menu button on the screen. --- diff --git a/v7/src/edwin/curren.scm b/v7/src/edwin/curren.scm index 1831b0123..a24b8799d 100644 --- a/v7/src/edwin/curren.scm +++ b/v7/src/edwin/curren.scm @@ -1,6 +1,6 @@ ;;; -*-Scheme-*- ;;; -;;; $Id: curren.scm,v 1.107 1993/08/01 05:27:38 cph Exp $ +;;; $Id: curren.scm,v 1.108 1993/08/01 06:10:37 cph Exp $ ;;; ;;; Copyright (c) 1986, 1989-93 Massachusetts Institute of Technology ;;; @@ -93,19 +93,20 @@ (define (select-screen screen) (without-interrupts (lambda () - (let ((screen* (selected-screen))) - (if (not (eq? screen screen*)) - (let ((message (current-message))) - (clear-current-message!) - (screen-exit! screen*) - (let ((window (screen-selected-window screen))) - (undo-leave-window! window) - (change-selected-buffer window (window-buffer window) true - (lambda () - (set-editor-selected-screen! current-editor screen)))) - (set-current-message! message) - (screen-enter! screen) - (update-screen! screen false))))))) + (if (not (screen-deleted? screen)) + (let ((screen* (selected-screen))) + (if (not (eq? screen screen*)) + (let ((message (current-message))) + (clear-current-message!) + (screen-exit! screen*) + (let ((window (screen-selected-window screen))) + (undo-leave-window! window) + (change-selected-buffer window (window-buffer window) true + (lambda () + (set-editor-selected-screen! current-editor screen)))) + (set-current-message! message) + (screen-enter! screen) + (update-screen! screen false)))))))) (define (update-screens! display-style) (let loop ((screens (screen-list)))