[graphic-forms-cvs] r135 - in trunk/src: tests/uitoolkit uitoolkit/widgets
junrue at common-lisp.net
junrue at common-lisp.net
Tue May 16 16:37:08 UTC 2006
Author: junrue
Date: Tue May 16 12:37:07 2006
New Revision: 135
Modified:
trunk/src/tests/uitoolkit/windlg.lisp
trunk/src/uitoolkit/widgets/dialog.lisp
trunk/src/uitoolkit/widgets/top-level.lisp
Log:
fixed a bug in top-level initialize-instance that interfered with :text initarg; bit more work on re-enabling top-levels when modal dialog is dismissed
Modified: trunk/src/tests/uitoolkit/windlg.lisp
==============================================================================
--- trunk/src/tests/uitoolkit/windlg.lisp (original)
+++ trunk/src/tests/uitoolkit/windlg.lisp Tue May 16 12:37:07 2006
@@ -80,20 +80,20 @@
(declare (ignore disp item time rect))
(let ((window (make-instance 'gfw:top-level :dispatcher (make-instance 'test-mini-events)
:owner *main-win*
+ :text "Mini Frame"
:style '(:miniframe))))
(setf (gfw:location window) (gfs:make-point :x 250 :y 150))
(setf (gfw:size window) (gfs:make-size :width 150 :height 225))
- (setf (gfw:text window) "Mini Frame")
(gfw:show window t)))
(defun create-palette-win (disp item time rect)
(declare (ignore disp item time rect))
(let ((window (make-instance 'gfw:top-level :dispatcher (make-instance 'test-mini-events)
:owner *main-win*
+ :text "Palette"
:style '(:palette))))
(setf (gfw:location window) (gfs:make-point :x 250 :y 150))
(setf (gfw:size window) (gfs:make-size :width 150 :height 225))
- (setf (gfw:text window) "Palette")
(gfw:show window t)))
(defun open-file-dlg (disp item time rect)
Modified: trunk/src/uitoolkit/widgets/dialog.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/dialog.lisp (original)
+++ trunk/src/uitoolkit/widgets/dialog.lisp Tue May 16 12:37:07 2006
@@ -51,6 +51,21 @@
gfs::+color-btnface+
+dlgwindowextra+))
+(defun disable-top-levels (hdlg)
+ (let ((hutility (utility-hwnd (thread-context))))
+ (setf *disabled-top-levels* nil)
+ (maptoplevels (lambda (win)
+ (unless (or (cffi:pointer-eq (gfs:handle win) hdlg)
+ (cffi:pointer-eq (gfs:handle win) hutility))
+ (if (enabled-p win)
+ (push win *disabled-top-levels*))
+ (enable win nil))))))
+
+(defun reenable-top-levels ()
+ (loop for win in *disabled-top-levels*
+ do (enable win t))
+ (setf *disabled-top-levels* nil))
+
;;;
;;; methods
;;;
@@ -136,6 +151,7 @@
(gfs::send-message hwnd gfs::+bm-setstyle+ style 1)))
(defmethod gfs:dispose ((self dialog))
+ (reenable-top-levels)
(if (visible-p self)
(show self nil))
(call-next-method))
@@ -163,25 +179,15 @@
(show dlg nil))
(defmethod show ((self dialog) flag)
- (let* ((tc (thread-context))
- (hutility (utility-hwnd tc))
- (app-modal (find :application-modal (style-of self)))
- (owner-modal (find :owner-modal (style-of self)))
- (owner (owner self))
- (hdlg (gfs:handle self)))
+ (let ((app-modal (find :application-modal (style-of self)))
+ (owner-modal (find :owner-modal (style-of self)))
+ (owner (owner self))
+ (hdlg (gfs:handle self)))
(cond
((and app-modal flag)
- (setf *disabled-top-levels* nil)
- (maptoplevels (lambda (win)
- (unless (or (cffi:pointer-eq (gfs:handle win) hdlg)
- (cffi:pointer-eq (gfs:handle win) hutility))
- (if (enabled-p win)
- (push win *disabled-top-levels*))
- (enable win nil)))))
+ (disable-top-levels hdlg))
((and app-modal (null flag))
- (loop for win in *disabled-top-levels*
- do (enable win t))
- (setf *disabled-top-levels* nil))
+ (reenable-top-levels))
((and owner-modal owner)
(enable owner (null flag))))
(gfs::show-window hdlg (if flag gfs::+sw-shownormal+ gfs::+sw-hide+))
Modified: trunk/src/uitoolkit/widgets/top-level.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/top-level.lisp (original)
+++ trunk/src/uitoolkit/widgets/top-level.lisp Tue May 16 12:37:07 2006
@@ -124,18 +124,18 @@
(remove-widget (thread-context) (gfs:handle m))))
(call-next-method))
-(defmethod initialize-instance :after ((win top-level) &key owner title &allow-other-keys)
+(defmethod initialize-instance :after ((win top-level) &key owner text &allow-other-keys)
(unless (null owner)
(if (gfs:disposed-p owner)
(error 'gfs:disposed-error)))
- (if (null title)
- (setf title +default-window-title+))
+ (if (null text)
+ (setf text +default-window-title+))
(let ((classname +toplevel-noerasebkgnd-window-classname+)
(register-func #'register-toplevel-noerasebkgnd-window-class))
(when (find :workspace (style-of win))
(setf classname +toplevel-erasebkgnd-window-classname+)
(setf register-func #'register-toplevel-erasebkgnd-window-class))
- (init-window win classname register-func owner title)))
+ (init-window win classname register-func owner text)))
(defmethod menu-bar :before ((win top-level))
(if (gfs:disposed-p win)
More information about the Graphic-forms-cvs
mailing list