Window close and window menu improvements

This commit is contained in:
David Botton 2021-02-14 21:37:06 -05:00
parent 84559b57c5
commit 43c4f7adf8
3 changed files with 31 additions and 12 deletions

View file

@ -516,11 +516,7 @@ on-window-resize-done at end of resize."))
(set-on-click (closer win) (lambda (obj)
(declare (ignore obj))
(when (fire-on-window-can-close win)
(remhash (format nil "~A" html-id)
(windows app))
(remove-from-dom win)
(fire-on-window-change nil app)
(fire-on-window-close win))))
(window-close win))))
(cond (client-movement
(jquery-execute win
(format nil "draggable({handle:'#~A-title-bar'})" html-id))
@ -594,6 +590,21 @@ on-window-resize-done at end of resize."))
(setf (z-index obj) (incf (last-z app)))
(fire-on-window-change obj app)))
;;;;;;;;;;;;;;;;;;
;; window-close ;;
;;;;;;;;;;;;;;;;;;
(defgeneric window-close (clog-gui-window)
(:documentation "Close CLOG-GUI-WINDOW. on-window-can-close is not called."))
(defmethod window-close ((obj clog-gui-window))
(let ((app (connection-data-item obj "clog-gui")))
(remhash (format nil "~A" (html-id obj)) (windows app))
(remove-from-dom (window-select-item obj))
(remove-from-dom obj)
(fire-on-window-change nil app)
(fire-on-window-close obj)))
;;;;;;;;;;;;;;;;;;;;;
;; window-maximize ;;
;;;;;;;;;;;;;;;;;;;;;
@ -613,14 +624,15 @@ on-window-resize-done at end of resize."))
(setf (left obj) (unit :px 0))
(setf (width obj) (unit :vw 100))
(setf (height obj)
(- (inner-height (window (body app))) menu-bar-height)))))
(- (inner-height (window (body app))) menu-bar-height))
(fire-on-window-size-done obj))))
;;;;;;;;;;;;;;;;;;;;;;
;; window-normalize ;;
;;;;;;;;;;;;;;;;;;;;;;
(defgeneric window-normalize (clog-gui-window)
(:documentation "Set CLOG-GUI-WINDOW as maximize window."))
(:documentation "Set CLOG-GUI-WINDOW as normalized window."))
(defmethod window-normalize ((obj clog-gui-window))
(window-focus obj)
@ -629,14 +641,15 @@ on-window-resize-done at end of resize."))
(setf (height obj) (last-height obj))
(setf (top obj) (last-y obj))
(setf (left obj) (last-x obj))
(setf (last-width obj) nil)))
(setf (last-width obj) nil)
(fire-on-window-size-done obj)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; window-toggle-maximize ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defgeneric window-toggle-maximize (clog-gui-window)
(:documentation "Set CLOG-GUI-WINDOW as maximize window."))
(:documentation "Toggle CLOG-GUI-WINDOW as maximize window."))
(defmethod window-toggle-maximize ((obj clog-gui-window))
(let ((app (connection-data-item obj "clog-gui")))
@ -656,8 +669,8 @@ on-window-resize-done at end of resize."))
(setf (left obj) (unit :px 0))
(setf (width obj) (unit :vw 100))
(setf (height obj)
(- (inner-height (window (body app))) menu-bar-height))))))
(- (inner-height (window (body app))) menu-bar-height))))
(fire-on-window-size-done obj)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; set-on-window-can-close ;;

View file

@ -676,6 +676,7 @@ embedded in a native template application.)"
(window-title generic-function)
(window-content generic-function)
(window-focus generic-function)
(window-close generic-function)
(window-maximize generic-function)
(window-normalize generic-function)
(window-toggle-maximize generic-function)

View file

@ -42,7 +42,7 @@
(ok (create-button form :content "OK")))
(set-on-click ok (lambda (obj)
(declare (ignore obj))
(remove-from-dom win)
(window-close win)
(funcall on-file-name (value input))))))
(defun capture-eval (form)
@ -63,6 +63,9 @@
(set-on-window-size win (lambda (obj)
(js-execute obj
(format nil "editor_~A.resize()" (html-id win)))))
(set-on-window-size-done win (lambda (obj)
(js-execute obj
(format nil "editor_~A.resize()" (html-id win)))))
(create-child win
(format nil
"<script>
@ -174,6 +177,7 @@
(file (create-gui-menu-drop-down menu :content "File"))
(edit (create-gui-menu-drop-down menu :content "Edit"))
(lisp (create-gui-menu-drop-down menu :content "Lisp"))
(wind (create-gui-menu-drop-down menu :content "Window"))
(help (create-gui-menu-drop-down menu :content "Help")))
(declare (ignore icon))
(create-gui-menu-item file :content "New" :on-click #'do-ide-file-new)
@ -184,6 +188,7 @@
(create-gui-menu-item edit :content "Cut" :on-click #'do-ide-edit-cut)
(create-gui-menu-item edit :content "Paste" :on-click #'do-ide-edit-paste)
(create-gui-menu-item lisp :content "Eval File" :on-click #'do-ide-lisp-eval-file)
(create-gui-menu-window-select wind)
(create-gui-menu-item help :content "About" :on-click #'do-ide-help-about)
(create-gui-menu-full-screen menu))
(run body))