mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 10:40:45 -08:00
fix regression on popup panel editor
This commit is contained in:
parent
546515f481
commit
fd2525076e
5 changed files with 54 additions and 39 deletions
|
|
@ -931,17 +931,18 @@ on an on-click event."))
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defgeneric set-on-mouse-double-click (clog-obj on-mouse-double-click-handler
|
(defgeneric set-on-mouse-double-click (clog-obj on-mouse-double-click-handler
|
||||||
&key one-time)
|
&key one-time cancel-event)
|
||||||
(:documentation "Set the ON-MOUSE-DOUBLE-CLICK-HANDLER for CLOG-OBJ. If
|
(:documentation "Set the ON-MOUSE-DOUBLE-CLICK-HANDLER for CLOG-OBJ. If
|
||||||
ON-MOUSE-DOUBLE-CLICK-HANDLER is nil unbind the event. Setting this event will
|
ON-MOUSE-DOUBLE-CLICK-HANDLER is nil unbind the event. Setting this event will
|
||||||
replace on an on-double-click event."))
|
replace on an on-double-click event."))
|
||||||
|
|
||||||
(defmethod set-on-mouse-double-click ((obj clog-obj) handler &key (one-time nil))
|
(defmethod set-on-mouse-double-click ((obj clog-obj) handler &key one-time cancel-event)
|
||||||
(set-event obj "dblclick"
|
(set-event obj "dblclick"
|
||||||
(when handler
|
(when handler
|
||||||
(lambda (data)
|
(lambda (data)
|
||||||
(funcall handler obj (parse-mouse-event data))))
|
(funcall handler obj (parse-mouse-event data))))
|
||||||
:one-time one-time
|
:one-time one-time
|
||||||
|
:cancel-event cancel-event
|
||||||
:call-back-script mouse-event-script))
|
:call-back-script mouse-event-script))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
@ -949,19 +950,20 @@ replace on an on-double-click event."))
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defgeneric set-on-mouse-right-click (clog-obj on-mouse-right-click-handler
|
(defgeneric set-on-mouse-right-click (clog-obj on-mouse-right-click-handler
|
||||||
&key one-time)
|
&key one-time cancel-event)
|
||||||
(:documentation "Set the ON-MOUSE-RIGHT-CLICK-HANDLER for CLOG-OBJ. If
|
(:documentation "Set the ON-MOUSE-RIGHT-CLICK-HANDLER for CLOG-OBJ. If
|
||||||
ON-MOUSE-RIGHT-CLICK-HANDLER is nil unbind the event. Setting this event will
|
ON-MOUSE-RIGHT-CLICK-HANDLER is nil unbind the event. Setting this event will
|
||||||
replace on an on-context-menu event."))
|
replace on an on-context-menu event."))
|
||||||
|
|
||||||
(defmethod set-on-mouse-right-click ((obj clog-obj) handler
|
(defmethod set-on-mouse-right-click ((obj clog-obj) handler
|
||||||
&key (one-time nil))
|
&key one-time cancel-event)
|
||||||
(set-event obj "contextmenu"
|
(set-event obj "contextmenu"
|
||||||
(when handler
|
(when handler
|
||||||
(lambda (data)
|
(lambda (data)
|
||||||
(funcall handler obj (parse-mouse-event data))))
|
(funcall handler obj (parse-mouse-event data))))
|
||||||
:one-time one-time
|
:one-time one-time
|
||||||
:call-back-script mouse-event-script
|
:call-back-script mouse-event-script
|
||||||
|
:cancel-event cancel-event
|
||||||
:cancel-event t))
|
:cancel-event t))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
@ -1315,16 +1317,17 @@ If ON-KEY-DOWN-HANDLER is nil unbind the event."))
|
||||||
;; set-on-key-up ;;
|
;; set-on-key-up ;;
|
||||||
;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defgeneric set-on-key-up (clog-obj on-key-up-handler &key one-time)
|
(defgeneric set-on-key-up (clog-obj on-key-up-handler &key one-time cancel-event)
|
||||||
(:documentation "Set the ON-KEY-UP-HANDLER for CLOG-OBJ. If
|
(:documentation "Set the ON-KEY-UP-HANDLER for CLOG-OBJ. If
|
||||||
ON-KEY-UP-HANDLER is nil unbind the event."))
|
ON-KEY-UP-HANDLER is nil unbind the event."))
|
||||||
|
|
||||||
(defmethod set-on-key-up ((obj clog-obj) handler &key (one-time nil))
|
(defmethod set-on-key-up ((obj clog-obj) handler &key one-time cancel-event)
|
||||||
(set-event obj "keyup"
|
(set-event obj "keyup"
|
||||||
(when handler
|
(when handler
|
||||||
(lambda (data)
|
(lambda (data)
|
||||||
(funcall handler obj (parse-keyboard-event data))))
|
(funcall handler obj (parse-keyboard-event data))))
|
||||||
:one-time one-time
|
:one-time one-time
|
||||||
|
:cancel-event cancel-event
|
||||||
:call-back-script keyboard-event-script))
|
:call-back-script keyboard-event-script))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
|
||||||
|
|
@ -526,13 +526,13 @@ If 0 element in tab index. If >0 sets order in tab index.
|
||||||
Normally index follows normal sequence of elements."))
|
Normally index follows normal sequence of elements."))
|
||||||
|
|
||||||
(defmethod tab-index ((obj clog-element))
|
(defmethod tab-index ((obj clog-element))
|
||||||
(property obj "tabindex"))
|
(attribute obj "tabindex"))
|
||||||
|
|
||||||
(defgeneric (setf tab-index) (value clog-element)
|
(defgeneric (setf tab-index) (value clog-element)
|
||||||
(:documentation "Set tab-index VALUE for CLOG-ELEMENT"))
|
(:documentation "Set tab-index VALUE for CLOG-ELEMENT"))
|
||||||
|
|
||||||
(defmethod (setf tab-index) (value (obj clog-element))
|
(defmethod (setf tab-index) (value (obj clog-element))
|
||||||
(setf (property obj "tabindex") value))
|
(setf (attribute obj "tabindex") value))
|
||||||
|
|
||||||
;;;;;;;;;;
|
;;;;;;;;;;
|
||||||
;; text ;;
|
;; text ;;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
(defun on-open-console (obj)
|
(defun on-open-console (obj)
|
||||||
(let ((app (connection-data-item obj "builder-app-data")))
|
(let ((app (connection-data-item obj "builder-app-data")))
|
||||||
|
(when app
|
||||||
(if (console-win app)
|
(if (console-win app)
|
||||||
(progn
|
(progn
|
||||||
(setf (hiddenp (console-win app)) nil)
|
(setf (hiddenp (console-win app)) nil)
|
||||||
|
|
@ -14,7 +15,7 @@
|
||||||
(set-on-window-can-close win (lambda (obj)
|
(set-on-window-can-close win (lambda (obj)
|
||||||
(setf (hiddenp obj) t)
|
(setf (hiddenp obj) t)
|
||||||
nil))
|
nil))
|
||||||
(setf (console-win app) win)))))
|
(setf (console-win app) win))))))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; console-out-stream ;;
|
;; console-out-stream ;;
|
||||||
|
|
|
||||||
|
|
@ -84,13 +84,13 @@
|
||||||
(let ((pop (connection-data-item obj "clog-popup")))
|
(let ((pop (connection-data-item obj "clog-popup")))
|
||||||
(when pop
|
(when pop
|
||||||
(close-window pop)
|
(close-window pop)
|
||||||
(window-focus win)))
|
(window-focus win))
|
||||||
(when regex
|
(when regex
|
||||||
(focus (window-param win))
|
(focus (window-param win))
|
||||||
(js-execute obj (format nil "~A.find({regExp:true,needle:'~A',caseSensitive:false})"
|
(js-execute obj (format nil "~A.find({regExp:true,needle:'~A',caseSensitive:false})"
|
||||||
(clog-ace::js-ace (window-param win)) (escape-string regex))))
|
(clog-ace::js-ace (window-param win)) (escape-string regex))))
|
||||||
(when show-find
|
(when show-find
|
||||||
(clog-ace:execute-command (window-param win) "find"))
|
(clog-ace:execute-command (window-param win) "find")))
|
||||||
win)
|
win)
|
||||||
(unless win
|
(unless win
|
||||||
(let* ((app (connection-data-item obj "builder-app-data"))
|
(let* ((app (connection-data-item obj "builder-app-data"))
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,8 @@
|
||||||
(get-control-list app panel-id))
|
(get-control-list app panel-id))
|
||||||
(let ((data
|
(let ((data
|
||||||
(create-child content "<data />"
|
(create-child content "<data />"
|
||||||
|
:auto-place :top
|
||||||
:html-id (format nil "I~A" (get-universal-time)))))
|
:html-id (format nil "I~A" (get-universal-time)))))
|
||||||
(place-inside-top-of content data)
|
|
||||||
(setf (attribute data "data-in-package")
|
(setf (attribute data "data-in-package")
|
||||||
(attribute content "data-in-package"))
|
(attribute content "data-in-package"))
|
||||||
(setf (attribute data "data-custom-slots")
|
(setf (attribute data "data-custom-slots")
|
||||||
|
|
@ -192,7 +192,8 @@
|
||||||
(do-drop-new-control app content data :win win))))))
|
(do-drop-new-control app content data :win win))))))
|
||||||
|
|
||||||
(defun do-drop-new-control (app content data &key win custom-query)
|
(defun do-drop-new-control (app content data &key win custom-query)
|
||||||
"Create new control dropped at event DATA on CONTENT of WIN)"
|
"Create new control dropped at event DATA on CONTENT of WIN,
|
||||||
|
return t on success"
|
||||||
;; create control
|
;; create control
|
||||||
(let* ((control-record (control-info (value (select-tool app))))
|
(let* ((control-record (control-info (value (select-tool app))))
|
||||||
(control-type-name (getf control-record :name))
|
(control-type-name (getf control-record :name))
|
||||||
|
|
@ -247,7 +248,7 @@
|
||||||
(touch-y 0)
|
(touch-y 0)
|
||||||
(placer (create-div control
|
(placer (create-div control
|
||||||
:class "placer"
|
:class "placer"
|
||||||
:style "position:absolute;box-sizing:content-box;tabindex:0"
|
:style "position:absolute;box-sizing:content-box;"
|
||||||
:html-id (format nil "p-~A" (html-id control)))))
|
:html-id (format nil "p-~A" (html-id control)))))
|
||||||
(add-to-control-list app panel-id control)
|
(add-to-control-list app panel-id control)
|
||||||
(setf (attribute placer "data-panel-id") panel-id)
|
(setf (attribute placer "data-panel-id") panel-id)
|
||||||
|
|
@ -256,12 +257,12 @@
|
||||||
:left (position-left control)
|
:left (position-left control)
|
||||||
:width (client-width control)
|
:width (client-width control)
|
||||||
:height (client-height control))
|
:height (client-height control))
|
||||||
(place-after control placer)
|
|
||||||
(jquery-execute placer (format nil "draggable({snap:'.placer',snapMode:'inner',cursor:'crosshair'})~
|
(jquery-execute placer (format nil "draggable({snap:'.placer',snapMode:'inner',cursor:'crosshair'})~
|
||||||
.resizable({alsoResize:'#~A',autoHide:true})"
|
.resizable({alsoResize:'#~A',autoHide:true})"
|
||||||
(html-id control)))
|
(html-id control)))
|
||||||
;; setup placer events
|
;; setup placer events
|
||||||
(setf (tab-index placer) "-1") ; must have a tab-index to accept keyboard input
|
(setf (tab-index placer) "-1") ; must have a tab-index to accept keyboard input
|
||||||
|
(place-after control placer)
|
||||||
(set-on-key-down placer
|
(set-on-key-down placer
|
||||||
(lambda (obj data)
|
(lambda (obj data)
|
||||||
(declare (ignore obj))
|
(declare (ignore obj))
|
||||||
|
|
@ -303,7 +304,8 @@
|
||||||
(set-on-touch-start placer (lambda (obj data)
|
(set-on-touch-start placer (lambda (obj data)
|
||||||
(declare (ignore obj))
|
(declare (ignore obj))
|
||||||
(setf touch-x (getf data :X))
|
(setf touch-x (getf data :X))
|
||||||
(setf touch-y (getf data :Y))))
|
(setf touch-y (getf data :Y)))
|
||||||
|
:cancel-event t)
|
||||||
(set-on-touch-move placer (lambda (obj data)
|
(set-on-touch-move placer (lambda (obj data)
|
||||||
(declare (ignore obj))
|
(declare (ignore obj))
|
||||||
(set-geometry control :top (+ (position-top control)
|
(set-geometry control :top (+ (position-top control)
|
||||||
|
|
@ -311,7 +313,8 @@
|
||||||
:left (+ (position-left control)
|
:left (+ (position-left control)
|
||||||
(- (getf data :x) touch-x)))
|
(- (getf data :x) touch-x)))
|
||||||
(setf touch-x (getf data :X))
|
(setf touch-x (getf data :X))
|
||||||
(setf touch-y (getf data :Y))))
|
(setf touch-y (getf data :Y)))
|
||||||
|
:cancel-event t)
|
||||||
(set-on-touch-end placer (lambda (obj data)
|
(set-on-touch-end placer (lambda (obj data)
|
||||||
(declare (ignore obj data))
|
(declare (ignore obj data))
|
||||||
(set-geometry placer :units ""
|
(set-geometry placer :units ""
|
||||||
|
|
@ -319,7 +322,8 @@
|
||||||
:left (left control))
|
:left (left control))
|
||||||
(select-control control)
|
(select-control control)
|
||||||
(jquery-execute placer "trigger('clog-builder-snap-shot')")
|
(jquery-execute placer "trigger('clog-builder-snap-shot')")
|
||||||
(set-properties-after-geomentry-change control)))
|
(set-properties-after-geomentry-change control))
|
||||||
|
:cancel-event t)
|
||||||
(set-on-mouse-up placer (lambda (obj data)
|
(set-on-mouse-up placer (lambda (obj data)
|
||||||
(declare (ignore obj data))
|
(declare (ignore obj data))
|
||||||
(set-geometry control :units ""
|
(set-geometry control :units ""
|
||||||
|
|
@ -330,7 +334,8 @@
|
||||||
:left (left control))
|
:left (left control))
|
||||||
(select-control control)
|
(select-control control)
|
||||||
(jquery-execute placer "trigger('clog-builder-snap-shot')")
|
(jquery-execute placer "trigger('clog-builder-snap-shot')")
|
||||||
(set-properties-after-geomentry-change control)))
|
(set-properties-after-geomentry-change control))
|
||||||
|
:cancel-event t)
|
||||||
(set-on-mouse-down placer
|
(set-on-mouse-down placer
|
||||||
(lambda (obj data)
|
(lambda (obj data)
|
||||||
(declare (ignore obj))
|
(declare (ignore obj))
|
||||||
|
|
@ -369,7 +374,8 @@
|
||||||
(lambda (obj data)
|
(lambda (obj data)
|
||||||
(declare (ignore obj data))
|
(declare (ignore obj data))
|
||||||
(setf (hiddenp placer) t)
|
(setf (hiddenp placer) t)
|
||||||
(on-populate-control-list-win content :win win)))
|
(on-populate-control-list-win content :win win))
|
||||||
|
:cancel-event t)
|
||||||
(set-on-event placer "resize"
|
(set-on-event placer "resize"
|
||||||
(lambda (obj)
|
(lambda (obj)
|
||||||
(set-properties-after-geomentry-change obj)))
|
(set-properties-after-geomentry-change obj)))
|
||||||
|
|
@ -414,12 +420,13 @@ manipulation of the control's location and size."
|
||||||
(when control
|
(when control
|
||||||
(clog::make-clog-element (clog::connection-id control)
|
(clog::make-clog-element (clog::connection-id control)
|
||||||
(format nil "p-~A" (html-id control))
|
(format nil "p-~A" (html-id control))
|
||||||
:clog-type 'clog-element)))
|
:clog-type 'clog::clog-element)))
|
||||||
|
|
||||||
(defun deselect-current-control (app)
|
(defun deselect-current-control (app)
|
||||||
"Remove selection on current control and remove visual ques on its placer."
|
"Remove selection on current control and remove visual ques on its placer."
|
||||||
(when (current-control app)
|
(when (current-control app)
|
||||||
(set-border (get-placer (current-control app)) (unit "px" 0) :none :blue)
|
(let ((placer (get-placer (current-control app))))
|
||||||
|
(set-border placer (unit "px" 0) :none :blue))
|
||||||
(setf (current-control app) nil)))
|
(setf (current-control app) nil)))
|
||||||
|
|
||||||
(defun delete-current-control (app panel-id html-id)
|
(defun delete-current-control (app panel-id html-id)
|
||||||
|
|
@ -444,6 +451,7 @@ not a temporarily attached one when using select-control."
|
||||||
:height (client-height control))
|
:height (client-height control))
|
||||||
(setf (current-control app) control)
|
(setf (current-control app) control)
|
||||||
(set-border placer (unit "px" 2) :solid :blue)
|
(set-border placer (unit "px" 2) :solid :blue)
|
||||||
|
(focus placer)
|
||||||
(on-populate-control-properties-win control))))
|
(on-populate-control-properties-win control))))
|
||||||
|
|
||||||
(defun add-sub-controls (parent content &key win paste)
|
(defun add-sub-controls (parent content &key win paste)
|
||||||
|
|
@ -649,6 +657,9 @@ not a temporarily attached one when using select-control."
|
||||||
:specs "width=640,height=480"))
|
:specs "width=640,height=480"))
|
||||||
(open-clog-popup obj :specs "width=640,height=480"))
|
(open-clog-popup obj :specs "width=640,height=480"))
|
||||||
(when pop
|
(when pop
|
||||||
|
(load-script (html-document (connection-body pop)) "/builder-js/beautify.js" :load-only-once t)
|
||||||
|
(load-script (html-document (connection-body pop)) "/builder-js/beautify-css.js" :load-only-once t)
|
||||||
|
(load-script (html-document (connection-body pop)) "/builder-js/beautify-html.js" :load-only-once t)
|
||||||
(let ((msg (create-button content :content "Panel is external. Click to bring to front.")))
|
(let ((msg (create-button content :content "Panel is external. Click to bring to front.")))
|
||||||
(set-geometry msg :units "%" :height 100 :width 100)
|
(set-geometry msg :units "%" :height 100 :width 100)
|
||||||
(set-on-click content
|
(set-on-click content
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue