Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.1--patch-29
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Thu Mar 3 02:03:33 MSK 2005
Standard-date: 2005-03-02 23:03:33 GMT
Modified-files: dockapp/xwem-battery.el
dockapp/xwem-pager.el extra/xwem-edprops.el
extra/xwem-keytt.el lisp/xwem-keymacro.el
lisp/xwem-minibuffer.el lisp/xwem-register.el
lisp/xwem-strokes.el lisp/xwem-tabbing.el
lisp/xwem-theme.el utils/xwem-worklog.el
New-patches: dev@xxxxxxxxxxxxxxxx/xwem--dev--2.1--patch-25
lg@xxxxxxxxxxxxxx/xwem--main--2.1--patch-29
Summary: Merge from ckent, fixes, addons
Keywords: battery, worklog, keymacro, themes, registers, pager
* dockapp/xwem-battery.el (main): [addon] Support for non-nil
`xwem-misc-turbo-mode' added.
* dockapp/xwem-pager.el (xwem-pager-redimentionize): [typo] fix.
* lisp/xwem-keymacro.el (xwem-keymacro-internal-play): [fix] Recursive
keymacros execution is allowed.
* lisp/xwem-minibuffer.el (xwem-manage-minibuffer): [addon] Apply state
immediately to avoid geometry breakage, when for example modeline is
enabled from xwemrc.el. From this time you are free to add
"(xwem-modeline-enable)" into your xwemrc!
* lisp/xwem-minibuffer.el (xwem-refit-minibuffer): [bug] Change Y
position only if xwem minibuffer is in active state.
* lisp/xwem-minibuffer.el (xwem-modeline-format): [fix addon] Minor modes
string formating fix. Client geometry printing added.
* lisp/xwem-minibuffer.el (xwem-modeline-enable): [sem] ARG removed.
* lisp/xwem-minibuffer.el (xwem-modeline-disable): [sem] ARG removed.
* lisp/xwem-register.el (register): [new] New client property -
'register. Having registers in client's property allow to keep
registers between sessions when running under xwem-agent.
* lisp/xwem-strokes.el (xwem-strokes-background-mode): [new] Saved
background mode when new stroke is started.
* lisp/xwem-tabbing.el (xwem-tabber-font:frame.selected-tab.selected):
[new] Custom interface to change tabber font.
* lisp/xwem-tabbing.el (xwem-tabber-font:frame.selected-tab.nonselected):
Ditto.
* lisp/xwem-tabbing.el (xwem-tabber-font:frame.nonselected-tab.selected):
Ditto.
* lisp/xwem-tabbing.el
(xwem-tabber-font:frame.nonselected-tab.nonselected): Ditto.
* lisp/xwem-theme.el (themes): Some improvements, still under
reconstruction.
* utils/xwem-worklog.el (dockapp): [addon] Support for non-nil
`xwem-misc-turbo-mode' added.
* added files
{arch}/xwem/xwem--dev/xwem--dev--2.1/dev@xxxxxxxxxxxxxxxx/patch-log/patch-25
{arch}/xwem/xwem--main/xwem--main--2.1/lg@xxxxxxxxxxxxxx/patch-log/patch-29
* modified files
--- orig/dockapp/xwem-battery.el
+++ mod/dockapp/xwem-battery.el
@@ -135,7 +135,7 @@
(defun xwem-batt-init (xdpy)
"On display XDPY create and return APM battery monitor window."
- (let (mgc tgc xwin xmask)
+ (let (xwin xmask xpix)
(setq xwin (XCreateWindow xdpy (XDefaultRootWindow xdpy)
0 0 xwem-batt-width xwem-batt-height 0
nil nil nil
@@ -146,43 +146,46 @@
(setq xmask (XCreatePixmap xdpy (make-X-Pixmap :dpy xdpy
:id (X-Dpy-get-id xdpy))
xwin 1 xwem-batt-width xwem-batt-height))
- (setq mgc (XCreateGC xdpy xmask
- (make-X-Gc :dpy xdpy :id (X-Dpy-get-id xdpy)
- :graphics-exposures X-False
- :foreground 0.0
- :background 1.0)))
- (setq tgc (XCreateGC xdpy xmask
- (make-X-Gc :dpy xdpy :id (X-Dpy-get-id xdpy)
- :graphics-exposures X-False
- :foreground 1.0
- :background 0.0)))
-
;; XXX Draw mask
- (XFillRectangle xdpy xmask mgc 0 0 xwem-batt-width xwem-batt-height)
- (XFillRectangle xdpy xmask tgc 0 2 xwem-batt-width (- xwem-batt-height 3))
- (XDrawSegments xdpy xmask tgc
+ (XFillRectangle xdpy xmask xwem-misc-mask-bgc
+ 0 0 xwem-batt-width xwem-batt-height)
+ (XFillRectangle xdpy xmask xwem-misc-mask-fgc
+ 0 2 xwem-batt-width (- xwem-batt-height 3))
+ (XDrawSegments xdpy xmask xwem-misc-mask-fgc
(list (cons (cons 3 0) (cons (- xwem-batt-width 4) 0))
(cons (cons 1 1) (cons (- xwem-batt-width 2) 1))
(cons (cons 1 (- xwem-batt-height 1))
(cons (- xwem-batt-width 2)
(- xwem-batt-height 1)))))
- (XFreeGC xdpy mgc)
- (XFreeGC xdpy tgc)
-
;; Set mask
(X-XShapeMask xdpy xwin X-XShape-Bounding X-XShapeSet 0 0 xmask)
(setf (xwem-batt-xmask xwin) xmask)
+ ;; Create pixmap for storer
+ (setq xpix (XCreatePixmap xdpy (make-X-Pixmap :dpy xdpy
+ :id (X-Dpy-get-id xdpy))
+ xwin (XDefaultDepth xdpy)
+ xwem-batt-width xwem-batt-height))
+ (setf (xwem-batt-pixmap xwin) xpix)
+ (xwem-batt-win-update xwin t)
+
xwin))
(defface xwem-batt-tmp-face
`((t (:foreground "black")))
"Temporary face used by apm battery dockapp.")
+(define-xwem-deffered xwem-batt-apply-pixmap (xwin)
+ "Apply pixmap storer to XWIN."
+ (XCopyArea (X-Win-dpy xwin) (xwem-batt-pixmap xwin) xwin
+ (XDefaultGC (X-Win-dpy xwin))
+ 0 0 xwem-batt-width xwem-batt-height 0 0))
+
(defun xwem-batt-win-update (xwin &optional force)
"Update contents of XWIN to reflect current APM battery state."
(let* ((xdpy (X-Win-dpy xwin))
+ (xpix (xwem-batt-pixmap xwin))
(as (apm-battery))
(ac-line-p (car as))
(cperc (caddr as))
@@ -197,13 +200,14 @@
(when (or force (not (eq dheight (xwem-batt-old-dheight xwin)))
(not (eq ac-line-p (xwem-batt-old-ac-line-p xwin))))
- (XClearArea xdpy xwin 0 0 xwem-batt-width xwem-batt-height nil)
+ (XFillRectangle xdpy xpix (XDefaultGC xdpy)
+ 0 0 xwem-batt-width xwem-batt-height)
;; Outline battery
- (XFillRectangle xdpy xwin (XDefaultGC xdpy)
+ (XFillRectangle xdpy xpix (XDefaultGC xdpy)
0 0 xwem-batt-width xwem-batt-height)
- (XDrawRectangle xdpy xwin (xwem-face-get-gc 'xwem-face-black)
+ (XDrawRectangle xdpy xpix (xwem-face-get-gc 'xwem-face-black)
1 2 (- xwem-batt-width 3) (- xwem-batt-height 4))
- (XDrawLine xdpy xwin (xwem-face-get-gc 'xwem-face-black)
+ (XDrawLine xdpy xpix (xwem-face-get-gc 'xwem-face-black)
3 1 (- xwem-batt-width 4) 1)
(setq force t))
@@ -215,11 +219,11 @@
(setq perc-cols (cdar perc-cols))
(xwem-set-face-foreground 'xwem-batt-tmp-face perc-cols)
- (XFillRectangle xdpy xwin (xwem-face-get-gc 'xwem-batt-tmp-face)
+ (XFillRectangle xdpy xpix (xwem-face-get-gc 'xwem-batt-tmp-face)
2 (- xwem-batt-height 2 dheight)
(- xwem-batt-width 4) dheight)
(when (< dheight (- xwem-batt-height 5))
- (XDrawLine xdpy xwin (xwem-face-get-gc 'xwem-face-black)
+ (XDrawLine xdpy xpix (xwem-face-get-gc 'xwem-face-black)
2 (- xwem-batt-height 2 dheight)
(- xwem-batt-width 2) (- xwem-batt-height 2 dheight)))
@@ -233,22 +237,25 @@
(let ((acgc (xwem-face-get-gc 'xwem-batt-tmp-face)))
(setf (X-Gc-line-width acgc) xwem-batt-ac-line-width)
(XChangeGC xdpy acgc)
- (XDrawLine xdpy xwin acgc
+ (XDrawLine xdpy xpix acgc
xwem-batt-width xwem-batt-ac-line-width
0 (- xwem-batt-height xwem-batt-ac-line-width))
(setf (X-Gc-line-width acgc) 0)
(XChangeGC xdpy acgc)))
(setf (xwem-batt-old-ac-line-p xwin) ac-line-p))
- ))
+
+ (xwem-batt-apply-pixmap xwin)))
(defun xwem-batt-win-remove (xwin &optional need-destroy)
"Remove battery dockapp."
(when (xwem-batt-itimer xwin)
(delete-itimer (xwem-batt-itimer xwin)))
- (XFreePixmap (xwem-dpy) (xwem-batt-xmask xwin))
+ (XFreePixmap (X-Win-dpy xwin) (xwem-batt-xmask xwin))
+ (XFreePixmap (X-Win-dpy xwin) (xwem-batt-pixmap xwin))
(setf (xwem-batt-itimer xwin) nil
(xwem-batt-xmask xwin) nil
+ (xwem-batt-pixmap xwin) nil
(xwem-batt-old-dheight xwin) nil
(xwem-batt-old-ac-line-p xwin) nil)
@@ -275,10 +282,11 @@
(defun xwem-batt-event-handler (xdpy win xev)
"Event handler for xwem battery monitor."
(X-Event-CASE xev
- ((:X-Expose :X-MapNotify) (xwem-batt-win-update win t))
+ (:X-MapNotify (xwem-batt-win-update win t))
+ (:X-Expose (xwem-batt-apply-pixmap win))
(:X-DestroyNotify (xwem-batt-win-remove win))
(:X-ButtonPress
- (let ((xwem-override-local-map xwem-battery-keymap))
+ (xwem-overriding-local-map xwem-battery-keymap
(xwem-dispatch-command-xevent xev)))))
;;;###autoload
@@ -289,6 +297,10 @@
(error "APM Battery module not loaded"))
(let ((bxwin (xwem-batt-init (xwem-dpy))))
+ ;; Enable turbo mode
+ (when xwem-misc-turbo-mode
+ (XSetWindowBackgroundPixmap (xwem-dpy) bxwin (xwem-batt-pixmap bxwin)))
+
(XSelectInput (xwem-dpy) bxwin
(Xmask-or XM-Exposure XM-StructureNotify
XM-ButtonPress XM-ButtonRelease))
--- orig/dockapp/xwem-pager.el
+++ mod/dockapp/xwem-pager.el
@@ -254,7 +254,7 @@
(XDefaultDepth (xwem-dpy))
w h))
(when xwem-misc-turbo-mode
- (XSetWindowBackgroundPixmap (xwem-dpy) xwin
+ (XSetWindowBackgroundPixmap (xwem-dpy) (xwem-pager-xwin xwin)
(xwem-pager-xpix xwin))))
(xwem-pager-redraw (xwem-pager-xwin xwin) t)))
--- orig/extra/xwem-edprops.el
+++ mod/extra/xwem-edprops.el
@@ -38,6 +38,10 @@
(defvar xwem-edprops-mode-hook nil
"*Hooks to call when entering xwem edprops mode.")
+(defvar xwem-edprops-allowed-values
+ '(numberp characterp stringp symbolp)
+ "List of allowed types of property value.")
+
(defvar xwem-edprops-client nil)
(make-variable-buffer-local 'xwem-client-edprops-client)
@@ -128,9 +132,8 @@
"(\n\n")
(save-excursion
(mapc (lambda (kv)
- (when (or (numberp (cdr kv))
- (symbolp (cdr kv))
- (stringp (cdr kv)))
+ (when (loop for tt in xwem-edprops-allowed-values
+ if (funcall tt (cdr kv)) return t)
(insert (format "%S %S\n" (car kv) (cdr kv)))))
(plist-to-alist (xwem-cl-plist cl)))
--- orig/extra/xwem-keytt.el
+++ mod/extra/xwem-keytt.el
@@ -267,7 +267,7 @@
;;; On-load actions:
-(xwem-add-minor-mode 'xwem-keytt-minor-mode "KeyTT " 'xwem-keytt-keymap)
+(xwem-add-minor-mode 'xwem-keytt-minor-mode "KeyTT" 'xwem-keytt-keymap)
(provide 'xwem-keytt)
--- orig/lisp/xwem-keymacro.el
+++ mod/lisp/xwem-keymacro.el
@@ -205,10 +205,6 @@
(xwem-dispatch-command-event
(aref xwem-keymacro-keys xwem-keymacro-keys-index))
(incf xwem-keymacro-keys-index))))
-; (enqueue-eval-event 'xwem-keymacro-start-executing-keys t)
-; (mapc 'xwem-unread-command-event keys)
-; (enqueue-eval-event 'xwem-keymacro-stop-executing-keys t)
-; )
(defun xwem-keymacro-start-recording ()
"Start recording Keys."
@@ -280,32 +276,30 @@
;;;###xwem-autoload
(defun xwem-keymacro-internal-play (keys &optional times)
"Play Emacs KEYS TIMES times."
- (unless (xwem-keymacro-executing-p)
- (unless times
- (setq times 1))
-
- ;; Unset some variables
- (setq xwem-this-command-keys [])
- (setq xwem-kbd-now-grabbing nil)
- (setq xwem-prefix-arg nil)
-
- (when xwem-keymacro-show-macro
- (xwem-message 'macro "Executing macro: '%s'%s"
- (key-description keys)
- (if (> times 1)
- (format " %d times" times)
- "")))
-
- ;; Force release of modifiers
- (xwem-kbd-force-mods-release)
-
- ;; Adjust KEYS acording to TIMES argument
- (let ((key-sequence []))
- (while (> times 0)
- (setq key-sequence (vconcat key-sequence keys))
- (decf times))
- ;; Finally execute keys
- (xwem-keymacro-execute-keys key-sequence))))
+ (unless times (setq times 1))
+
+ ;; Unset some variables
+ (setq xwem-this-command-keys [])
+ (setq xwem-kbd-now-grabbing nil)
+ (setq xwem-prefix-arg nil)
+
+ (when xwem-keymacro-show-macro
+ (xwem-message 'macro "Executing macro: '%s'%s"
+ (key-description keys)
+ (if (> times 1)
+ (format " %d times" times)
+ "")))
+
+ ;; Force release of modifiers
+ (xwem-kbd-force-mods-release)
+
+ ;; Adjust KEYS acording to TIMES argument
+ (let ((key-sequence []))
+ (while (> times 0)
+ (setq key-sequence (vconcat key-sequence keys))
+ (decf times))
+ ;; Finally execute keys
+ (xwem-keymacro-execute-keys key-sequence)))
;; Commands to be used in `xwem-keymacro-user-macros'
;;;###autoload(autoload 'xwem-keymacro-undefined "xwem-keymacro" nil t)
--- orig/lisp/xwem-minibuffer.el
+++ mod/lisp/xwem-minibuffer.el
@@ -393,7 +393,8 @@
(setq default-minibuffer-frame (xwem-minib-frame xwem-minibuffer))))
;; Now activate minibuffer
- (xwem-activate cl)))
+ (xwem-activate cl)
+ (xwem-minib-apply-state-1 minib )))
(define-xwem-deffered xwem-minib-apply-pxgeom (minib)
"Apply MINIB's parent geometry to life."
@@ -443,9 +444,10 @@
;; Check maybe parent need to be resized/moved?
(unless (= (X-Geom-height-with-borders cl-xgeom)
(X-Geom-height pxgeom))
- (decf (X-Geom-y pxgeom)
- (- (X-Geom-height-with-borders cl-xgeom)
- (X-Geom-height pxgeom)))
+ (when (eq (xwem-cl-state cl) 'active)
+ (decf (X-Geom-y pxgeom)
+ (- (X-Geom-height-with-borders cl-xgeom)
+ (X-Geom-height pxgeom))))
(setf (X-Geom-height pxgeom)
(X-Geom-height-with-borders cl-xgeom))
(xwem-minib-apply-pxgeom (xwem-cl-minibuffer cl)))))
@@ -488,6 +490,7 @@
(XMoveWindow (xwem-dpy) (xwem-minib-xwin minib)
(X-Geom-x (xwem-minib-xgeom minib))
(X-Geom-y (xwem-minib-xgeom minib)))
+ (XFlush (xwem-dpy))
(when param
(sit-for param t))
(setq i (1+ i)))
@@ -676,12 +679,17 @@
(" ")
;; Minor modes
("(")
- ((mapconcat #'(lambda (mm)
- (when (symbol-value (car mm))
- (cadr mm)))
- xwem-minor-mode-alist ""))
+ ((mapconcat 'identity
+ (delq nil (mapcar #'(lambda (mm)
+ (and (symbol-value (car mm))
+ (cadr mm)))
+ xwem-minor-mode-alist)) " "))
(")")
- ("--"))
+ ("----")
+ ((let ((usz (xwem-cl-get-usize cl)))
+ (format "%dx%d" (car usz) (cdr usz))))
+ ("--")
+ )
"Modeline format.")
(xwem-make-variable-client-local 'xwem-modeline-format)
@@ -708,9 +716,9 @@
)))
;;;###autoload(autoload 'xwem-modeline-enable "xwem-minibuffer" nil t)
-(define-xwem-command xwem-modeline-enable (arg)
+(define-xwem-command xwem-modeline-enable ()
"Enable modeline."
- (xwem-interactive "P")
+ (xwem-interactive)
(add-hook 'xwem-cl-change-hook 'xwem-modeline-redraw)
(add-hook 'xwem-client-select-hook 'xwem-modeline-redraw)
@@ -728,9 +736,9 @@
(xwem-minib-frame xwem-minibuffer)))))
;;;###autoload(autoload 'xwem-modeline-disable "xwem-minibuffer" nil t)
-(define-xwem-command xwem-modeline-disable (arg)
+(define-xwem-command xwem-modeline-disable ()
"Disable modeline."
- (xwem-interactive "P")
+ (xwem-interactive)
(remove-hook 'xwem-cl-change-hook 'xwem-modeline-redraw)
(remove-hook 'xwem-client-select-hook 'xwem-modeline-redraw)
--- orig/lisp/xwem-register.el
+++ mod/lisp/xwem-register.el
@@ -123,10 +123,7 @@
(define-xwem-command xwem-register-client (register)
"Store selected client to REGISTER."
(xwem-interactive "kClient to register: ")
-
- (let ((reg (event-key register)))
- (xwem-register-set reg (list 'XWEM-CLIENT
- (xwem-cl-selected)))))
+ (xwem-client-set-property (xwem-cl-selected) 'register (event-key register)))
;;;###autoload(autoload 'xwem-register-win-config "xwem-register" "" t)
(define-xwem-command xwem-register-win-config (register)
@@ -218,6 +215,28 @@
(not (xwem-register-get r))))
(xwem-register-set r (list 'XWEM-CLIENT cl)))))
+
+;;; Register as client property
+(defun xwem-client-set-register (cl rprop reg)
+ "Set CL's register property RPROP to REG."
+ ;; Remove REG from any other clients
+ (mapc #'(lambda (ocl)
+ (when (eq reg (xwem-cl-get-prop ocl rprop))
+ (xwem-cl-rem-prop ocl rprop)))
+ (xwem-clients-list))
+
+ ;; Save it in CL's plist
+ (xwem-cl-put-prop cl rprop reg)
+
+ ;; And finally register REG
+ (when reg
+ (xwem-register-set reg (list 'XWEM-CLIENT cl))))
+
+(define-xwem-client-property register nil
+ "CL's register."
+ :type 'char
+ :set 'xwem-client-set-register)
+
(provide 'xwem-register)
--- orig/lisp/xwem-strokes.el
+++ mod/lisp/xwem-strokes.el
@@ -133,6 +133,9 @@
(defvar xwem-strokes-defining nil
"Non-nil mean that we defining stroke now.")
+(defvar xwem-strokes-background-mode nil
+ "Saved background mode.")
+
(defvar xwem-strokes-cursor nil
"Cursor used while reading stroke.")
@@ -280,10 +283,11 @@
(defun xwem-strokes-start-new (x y)
"Start new stroke or new stick at X Y point."
(push (cons x y) xwem-strokes-curr)
+ (setq xwem-strokes-background-mode
+ (xwem-misc-xwin-background-mode (xwem-rootwin) x y))
(XDrawArc (xwem-dpy) (xwem-rootwin)
(xwem-face-get-gc 'xwem-strokes-face
- (list 'background 'begin
- (xwem-misc-xwin-background-mode (xwem-rootwin) x y)))
+ (list 'background 'begin xwem-strokes-background-mode))
x y 1 1 0 (* 360 64)))
(defun xwem-strokes-continue (x y)
@@ -294,7 +298,8 @@
(push (cons x y) xwem-strokes-curr)
(XDrawLine (xwem-dpy) (xwem-rootwin)
- (xwem-face-get-gc 'xwem-strokes-face)
+ (xwem-face-get-gc 'xwem-strokes-face
+ (list 'background xwem-strokes-background-mode))
old-x old-y x y)))
;;;###autoload(autoload 'xwem-strokes-define "xwem-strokes" "" t)
--- orig/lisp/xwem-tabbing.el
+++ mod/lisp/xwem-tabbing.el
@@ -133,6 +133,55 @@
:group 'xwem-tab
:group 'xwem-faces)
+;; Another interface to customize tabber fonts
+(defcustom xwem-tabber-font:frame.selected-tab.selected nil
+ "Font to be used in selected tab of selected frame."
+ :type '(restricted-sexp :match-alternatives (nil try-font-name))
+ :set (lambda (sym val)
+ (set sym val)
+ (xwem-set-face-font
+ 'xwem-tabber-face
+ (or val (xwem-face-font 'xwem-tabber-face '(default)))
+ '(frame-selected tab-selected)))
+ :initialize 'custom-initialize-default
+ :group 'xwem-tab)
+
+(defcustom xwem-tabber-font:frame.selected-tab.nonselected nil
+ "Font to be used in selected tab of selected frame."
+ :type '(restricted-sexp :match-alternatives (nil try-font-name))
+ :set (lambda (sym val)
+ (set sym val)
+ (xwem-set-face-font
+ 'xwem-tabber-face
+ (or val (xwem-face-font 'xwem-tabber-face '(default)))
+ '(frame-selected tab-nonselected)))
+ :initialize 'custom-initialize-default
+ :group 'xwem-tab)
+
+(defcustom xwem-tabber-font:frame.nonselected-tab.selected nil
+ "Font to be used in selected tab of selected frame."
+ :type '(restricted-sexp :match-alternatives (nil try-font-name))
+ :set (lambda (sym val)
+ (set sym val)
+ (xwem-set-face-font
+ 'xwem-tabber-face
+ (or val (xwem-face-font 'xwem-tabber-face '(default)))
+ '(frame-nonselected tab-selected)))
+ :initialize 'custom-initialize-default
+ :group 'xwem-tab)
+
+(defcustom xwem-tabber-font:frame.nonselected-tab.nonselected nil
+ "Font to be used in selected tab of selected frame."
+ :type '(restricted-sexp :match-alternatives (nil try-font-name))
+ :set (lambda (sym val)
+ (set sym val)
+ (xwem-set-face-font
+ 'xwem-tabber-face
+ (or val (xwem-face-font 'xwem-tabber-face '(default)))
+ '(frame-nonselected tab-nonselected)))
+ :initialize 'custom-initialize-default
+ :group 'xwem-tab)
+
;;; Internal variables
(defvar xwem-tabber-map
--- orig/lisp/xwem-theme.el
+++ mod/lisp/xwem-theme.el
@@ -313,28 +313,28 @@
(custom xwem-frame-cursor-background-color "black")))
(defconst xwem-cursor-ocean-theme
- `((custom xwem-cursor-help-foreground-color "#888888")
- (custom xwem-cursor-help-background-color "#080808")
- (custom xwem-root-cursor-foreground-color "black")
- (custom xwem-root-cursor-background-color "white")
- (custom xwem-frame-cursor-foreground-color "white")
- (custom xwem-frame-cursor-background-color "black")))
+ `((custom xwem-cursor-help-foreground-color "#009999")
+ (custom xwem-cursor-help-background-color "#006B6B")
+ (custom xwem-root-cursor-foreground-color "#005858")
+ (custom xwem-root-cursor-background-color "#AFFFFA")
+ (custom xwem-frame-cursor-foreground-color "#BFFFFB")
+ (custom xwem-frame-cursor-background-color "#006D66")))
(defconst xwem-cursor-spring-theme
- `((custom xwem-cursor-help-foreground-color "#888888")
- (custom xwem-cursor-help-background-color "#080808")
- (custom xwem-root-cursor-foreground-color "black")
- (custom xwem-root-cursor-background-color "white")
- (custom xwem-frame-cursor-foreground-color "white")
- (custom xwem-frame-cursor-background-color "black")))
+ `((custom xwem-cursor-help-foreground-color "#00B366")
+ (custom xwem-cursor-help-background-color "#007D48")
+ (custom xwem-root-cursor-foreground-color "#007B3D")
+ (custom xwem-root-cursor-background-color "#BFFFD6")
+ (custom xwem-frame-cursor-foreground-color "#80FFC9")
+ (custom xwem-frame-cursor-background-color "#007D48")))
(defconst xwem-cursor-winter-theme
- `((custom xwem-cursor-help-foreground-color "#888888")
- (custom xwem-cursor-help-background-color "#080808")
- (custom xwem-root-cursor-foreground-color "black")
- (custom xwem-root-cursor-background-color "white")
+ `((custom xwem-cursor-help-foreground-color "white")
+ (custom xwem-cursor-help-background-color "gray50")
+ (custom xwem-root-cursor-foreground-color "white")
+ (custom xwem-root-cursor-background-color "gray50")
(custom xwem-frame-cursor-foreground-color "white")
- (custom xwem-frame-cursor-background-color "black")))
+ (custom xwem-frame-cursor-background-color "gray50")))
(defvar xwem-cursor-themes
'((default . xwem-cursor-default-theme)
@@ -349,12 +349,16 @@
(defconst xwem-frame-default-theme
'((frame-property inner-border-width 8)
(frame-property inner-border-thickness 2)
- (frame-property title-height 18)))
+ (frame-property title-height 18)
+ (custom xwem-win-vertical-delim-width (8 . 1))
+ (custom xwem-win-horizontal-delim-width (6 . 1))))
(defconst xwem-frame-extrim-theme
'((frame-property inner-border-width 3)
(frame-property inner-border-thickness 1)
- (frame-property title-height 12)))
+ (frame-property title-height 12)
+ (custom xwem-win-vertical-delim-width (4 . 1))
+ (custom xwem-win-horizontal-delim-width (3 . 1))))
(defvar xwem-frame-themes
'((default . xwem-frame-default-theme)
@@ -366,8 +370,318 @@
(defvar xwem-managing-themes nil
"List of themes to manage clients.")
-
-(defvar xwem-face-themes nil
+(defconst xwem-face-default-theme
+ '((face xwem-tabber-face
+ (((frame-selected tab-selected)
+ (:foreground "white" :background "green4" :bold t))
+ ((delimiter-left frame-selected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-selected)
+ (:foreground "black"))
+
+ ((frame-selected tab-nonselected)
+ (:foreground "black" :background "gray80"))
+ ((delimiter-left frame-selected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-nonselected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-selected)
+ (:foreground "gray80" :background "DarkGreen" :bold t))
+ ((delimiter-left frame-nonselected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-selected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-nonselected)
+ (:foreground "black" :background "gray40"))
+ ((delimiter-left frame-nonselected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-nonselected)
+ (:foreground "black"))
+
+ (t (:foreground "white"))))
+
+ (face x-border-face
+ (((selected) (:foreground "green"))
+ (t (:foreground "gray80"))))
+
+ (face xwem-frame-inner-border-face
+ (((light nonselected)
+ (:foreground "gray80" :background "gray80"))
+ ((medium nonselected)
+ (:foreground "gray50" :background "gray50"))
+ ((dark nonselected)
+ (:foreground "gray20" :background "gray20"))
+ ((light selected)
+ (:foreground "cyan2" :background "cyan2"))
+ ((medium selected)
+ (:foreground "royalblue" :background "royalblue"))
+ ((dark selected)
+ (:foreground "blue4" :background "blue4"))))
+
+ (face xwem-launch-dock-face
+ (((medium) (:foreground "gray70"))
+ ((light) (:foreground "white"))
+ ((dark) (:foreground "black"))))
+
+ (face xwem-strokes-face
+ (((background light)
+ (:foreground "red4" :background "black"))
+ ((background dark)
+ (:foreground "red" :background "black"))
+ ((background begin light)
+ (:foreground "magenta4" :background "black"
+ :line-width 12 :cap-style X-CapRound))
+ ((background begin dark)
+ (:foreground "magenta" :background "black"
+ :line-width 12 :cap-style X-CapRound))))
+
+ (face xwem-tray-delimiter-face
+ (((background light)
+ (:foreground "gray40"))
+ ((background light shadow)
+ (:foreground "gray30"))
+ ((background dark)
+ (:foreground "gray70"))
+ ((background dark shadow)
+ (:foreground "gray80"))))
+
+ (face xwem-window-outline-face
+ (((frame-selected win-selected)
+ (:foreground "green" :background "green4" :line-width 4))
+ ((frame-selected win-nonselected)
+ (:foreground "gray70" :background "gray70" :line-width 4))
+ ((frame-nonselected win-selected)
+ (:foreground "green3" :background "green4" :line-width 4))
+ ((frame-nonselected win-nonselected)
+ (:foreground "gray60" :background "gray40" :line-width 4))))
+
+ (face xwem-window-delimiter-face
+ (((horizontal)
+ (:foreground "royalblue" :background "black"))
+ ((horizontal shadow)
+ (:foreground "blue4" :background "black"))
+ ((horizontal light shadow)
+ (:foreground "cyan" :background "black"))
+ ((vertical)
+ (:foreground "royalblue" :background "black"))
+ ((shadow vertical)
+ (:foreground "blue4" :background "black"))
+ ((light shadow vertical)
+ (:foreground "cyan" :background "black"))
+ (t (:foreground "gray20" :background "black")))))
+ "Default faces theme.")
+
+(defconst xwem-face-extrim-theme
+ `((face xwem-tabber-face
+ (((frame-selected tab-selected)
+ (:foreground "white" :background "gray20"
+ :font "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" :bold t))
+ ((delimiter-left frame-selected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-selected)
+ (:foreground "black"))
+
+ ((frame-selected tab-nonselected)
+ (:foreground "black" :background "gray80"
+ :font "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*"))
+ ((delimiter-left frame-selected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-nonselected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-selected)
+ (:foreground "gray80" :background "gray40"
+ :font "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*" :bold t))
+ ((delimiter-left frame-nonselected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-selected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-nonselected)
+ (:foreground "black" :background "gray40"
+ :font "-*-fixed-medium-r-*-*-12-*-*-*-*-*-*-*"))
+ ((delimiter-left frame-nonselected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-nonselected)
+ (:foreground "black"))))
+
+ (face x-border-face
+ (((selected) (:foreground "white"))
+ (t (:foreground "dark"))))
+
+ (face xwem-frame-inner-border-face
+ (((light nonselected)
+ (:foreground "gray80"))
+ ((medium nonselected)
+ (:foreground "gray50"))
+ ((dark nonselected)
+ (:foreground "gray20"))
+ ((light selected)
+ (:foreground "white"))
+ ((medium selected)
+ (:foreground "gray50"))
+ ((dark selected)
+ (:foreground "dark"))))
+
+ (face xwem-launch-dock-face
+ (((medium) (:foreground "gray70"))
+ ((light) (:foreground "white"))
+ ((dark) (:foreground "black"))))
+
+ (face xwem-strokes-face
+ (((background light)
+ (:foreground "dimgray" :background "black"))
+ ((background dark)
+ (:foreground "lightgray" :background "black"))
+ ((background begin light)
+ (:foreground "darkslategrey" :background "black"
+ :line-width 12 :cap-style X-CapRound))
+ ((background begin dark)
+ (:foreground "grey" :background "black"
+ :line-width 12 :cap-style X-CapRound))))
+
+ (face xwem-tray-delimiter-face
+ (((background light)
+ (:foreground "gray40"))
+ ((background light shadow)
+ (:foreground "gray30"))
+ ((background dark)
+ (:foreground "gray70"))
+ ((background dark shadow)
+ (:foreground "gray80"))))
+
+ (face xwem-window-outline-face
+ (((frame-selected win-selected)
+ (:foreground "dark" :background "dark"))
+ ((frame-selected win-nonselected)
+ (:foreground "gray50" :background "gray50"))
+ ((frame-nonselected win-selected)
+ (:foreground "gray20" :background "gray20"))
+ ((frame-nonselected win-nonselected)
+ (:foreground "gray60" :background "gray40"))))
+
+ (face xwem-window-delimiter-face
+ (((horizontal)
+ (:foreground "gray30" :background "black"))
+ ((horizontal shadow)
+ (:foreground "gray10" :background "black"))
+ ((horizontal light shadow)
+ (:foreground "gray80" :background "black"))
+ ((vertical)
+ (:foreground "gray10" :background "black"))
+ ((shadow vertical)
+ (:foreground "gray40" :background "black"))
+ ((light shadow vertical)
+ (:foreground "white" :background "black")))))
+ "Extrim face theme.")
+
+(defconst xwem-face-ocean-theme
+ '((face xwem-tabber-face
+ (((frame-selected tab-selected)
+ (:foreground "#7DC5C5" :background "#174D4D" :bold t))
+ ((delimiter-left frame-selected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-selected)
+ (:foreground "black"))
+
+ ((frame-selected tab-nonselected)
+ (:foreground "#102A2A" :background "#598080"))
+ ((delimiter-left frame-selected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-selected tab-nonselected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-selected)
+ (:foreground "#6BA0A0" :background "#406060" :bold t))
+ ((delimiter-left frame-nonselected tab-selected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-selected)
+ (:foreground "black"))
+
+ ((frame-nonselected tab-nonselected)
+ (:foreground "#123D3D" :background "#507070"))
+ ((delimiter-left frame-nonselected tab-nonselected)
+ (:foreground "white"))
+ ((delimiter-right frame-nonselected tab-nonselected)
+ (:foreground "black"))))
+
+ (face x-border-face
+ (((selected) (:foreground "#10BABA"))
+ (t (:foreground "#085580"))))
+
+ (face xwem-frame-inner-border-face
+ (((light nonselected)
+ (:foreground "gray80" :background "gray80"))
+ ((medium nonselected)
+ (:foreground "gray50" :background "gray50"))
+ ((dark nonselected)
+ (:foreground "gray20" :background "gray20"))
+ ((light selected)
+ (:foreground "#7DB3B3" :background "#7DB3B3"))
+ ((medium selected)
+ (:foreground "#176D6D" :background "#176D6D"))
+ ((dark selected)
+ (:foreground "#102A2A" :background "#102A2A"))))
+
+ (face xwem-launch-dock-face
+ (((medium) (:foreground "#176D6D"))
+ ((light) (:foreground "#7DB3B3"))
+ ((dark) (:foreground "#102A2A"))))
+
+ (face xwem-strokes-face
+ (((background light)
+ (:foreground "#176D6D" :background "black"))
+ ((background dark)
+ (:foreground "#7DB3B3" :background "black"))
+ ((background begin light)
+ (:foreground "#154C4C" :background "black"
+ :line-width 12 :cap-style X-CapRound))
+ ((background begin dark)
+ (:foreground "#6DA0A0" :background "black"
+ :line-width 12 :cap-style X-CapRound))))
+
+ (face xwem-tray-delimiter-face
+ (((background light)
+ (:foreground "gray40"))
+ ((background light shadow)
+ (:foreground "gray30"))
+ ((background dark)
+ (:foreground "gray70"))
+ ((background dark shadow)
+ (:foreground "gray80"))))
+
+ (face xwem-window-outline-face
+ (((frame-selected win-selected)
+ (:foreground "#10BABA" :background "green4" :line-width 4))
+ ((frame-selected win-nonselected)
+ (:foreground "gray70" :background "gray70" :line-width 4))
+ ((frame-nonselected win-selected)
+ (:foreground "#109898" :background "green4" :line-width 4))
+ ((frame-nonselected win-nonselected)
+ (:foreground "gray60" :background "gray40" :line-width 4))))
+
+ (face xwem-window-delimiter-face
+ (((horizontal)
+ (:foreground "#176D6D" :background "#176D6D"))
+ ((horizontal shadow)
+ (:foreground "#102A2A" :background "#102A2A"))
+ ((horizontal light shadow)
+ (:foreground "#7DB3B3" :background "#7DB3B3"))
+ ((vertical)
+ (:foreground "#176D6D" :background "#176D6D"))
+ ((shadow vertical)
+ (:foreground "#102A2A" :background "#102A2A"))
+ ((light shadow vertical)
+ (:foreground "#7DB3B3" :background "#7DB3B3")))))
+ "Ocean faces theme.")
+
+(defvar xwem-face-themes
+ '((default . xwem-face-default-theme)
+ (extrim . xwem-face-extrim-theme)
+ (ocean . xwem-face-ocean-theme)
+ )
"List of themes for xwem faces.")
(defvar xwem-frame-themes nil
--- orig/utils/xwem-worklog.el
+++ mod/utils/xwem-worklog.el
@@ -1385,6 +1385,7 @@
(defstruct xwem-worklog-dockapp
win ; X Window for dockapp
mask ; Mask Pixmap for dockapp
+ pixmap ; Pixmap for storer
update-itimer ; itimer to update worklog-dockapp
;; dockapp and sector geometry
@@ -1394,6 +1395,9 @@
(defconst xwem-worklog-dockapp-event-mask
(list XM-Exposure XM-StructureNotify XM-ButtonPress XM-ButtonRelease))
+(defvar xwem-worklog-default-dockapp nil
+ "Default worklog dockapp.")
+
(defun xwem-worklog-meaning-update-time ()
"Return seconds."
(if (> xwem-worklog-day-ends xwem-worklog-day-start)
@@ -1404,9 +1408,19 @@
;; TODO:
;; - Get rid of double call to `xwem-worklog-generate-percentage-spec'
;; - Implement separated update for current task brick
+(define-xwem-deffered xwem-worklog-dockapp-apply-pixmap (&optional dockapp)
+ "Apply DOCKAPP's pixmap storer to real window."
+ (unless dockapp (setq dockapp xwem-worklog-default-dockapp))
+ (XCopyArea (xwem-dpy) (xwem-worklog-dockapp-pixmap dockapp)
+ (xwem-worklog-dockapp-win dockapp) (XDefaultGC (xwem-dpy))
+ 0 0 (X-Pixmap-width (xwem-worklog-dockapp-pixmap dockapp))
+ (X-Pixmap-height (xwem-worklog-dockapp-pixmap dockapp))
+ 0 0))
-(define-xwem-deffered xwem-worklog-dockapp-update-task-brick (dockapp)
+(define-xwem-deffered xwem-worklog-dockapp-update-task-brick (&optional
dockapp)
"Update DOCKAPP's current task brick."
+ (unless dockapp (setq dockapp xwem-worklog-default-dockapp))
+
(when (and xwem-worklog-current-task
(xwem-worklog-lookup-description
(xwem-worklog-task-name xwem-worklog-current-task)))
@@ -1415,22 +1429,18 @@
(or (plist-get (cadr (xwem-worklog-lookup-description
(xwem-worklog-task-name xwem-worklog-current-task)))
:color) "black"))
- (XFillRectangle (xwem-dpy) (xwem-worklog-dockapp-win dockapp)
+ (XFillRectangle (xwem-dpy) (xwem-worklog-dockapp-pixmap dockapp)
(xwem-face-get-gc 'xwem-worklog-temp-face) 0 0 6 6)
- ))
- ;; Do we really need this?
-; (XFillRectangle (xwem-dpy) (xwem-worklog-dockapp-mask dockapp)
-; xwem-misc-mask-fgc 0 0 6 6)
-; (X-XShapeMask (xwem-dpy) (xwem-worklog-dockapp-win dockapp)
-; X-XShape-Bounding X-XShapeInt 0 0
-; (xwem-worklog-dockapp-mask dockapp))))
+ (xwem-worklog-dockapp-apply-pixmap dockapp)))
-(define-xwem-deffered xwem-worklog-dockapp-update (dockapp)
+(define-xwem-deffered xwem-worklog-dockapp-update (&optional dockapp)
"Update worklog dockapp."
+ (unless dockapp (setq dockapp xwem-worklog-default-dockapp))
(when (xwem-worklog-dockapp-p dockapp)
(let* ((win (xwem-worklog-dockapp-win dockapp))
- (mask (xwem-worklog-dockapp-mask dockapp))
(xdpy (X-Win-dpy win))
+ (pix (xwem-worklog-dockapp-pixmap dockapp))
+ (mask (xwem-worklog-dockapp-mask dockapp))
(w (xwem-worklog-dockapp-width dockapp))
(h (xwem-worklog-dockapp-height dockapp))
(sec-w (xwem-worklog-dockapp-sector-width dockapp))
@@ -1438,13 +1448,14 @@
(spec-copy (xwem-worklog-generate-percentage-spec sec-w t t))
td)
- (XClearArea xdpy win 0 0 (+ 1 w) (+ 1 h (* 2 sec-w)) nil)
- (XFillRectangle
- xdpy mask xwem-misc-mask-bgc 0 0 (+ 1 w) (+ 1 h (* 2 sec-w)))
+ (XFillRectangle xdpy pix (XDefaultGC xdpy)
+ 0 0 (X-Pixmap-width pix) (X-Pixmap-height pix))
+ (XFillRectangle xdpy mask xwem-misc-mask-bgc
+ 0 0 (+ 1 w) (+ 1 h (* 2 sec-w)))
(when spec
(xwem-diag-draw-percentage
xwem-worklog-dockapp-diagram-type
- spec win (xwem-face-get-gc 'default)
+ spec pix (xwem-face-get-gc 'default)
(/ sec-w 2) (/ sec-w 2) w h sec-w)
(xwem-diag-draw-percentage
@@ -1460,19 +1471,20 @@
(xwem-set-face-foreground 'xwem-worklog-temp-face
(or (plist-get (cadr td) :color) "black"))
(XFillRectangle
- xdpy win (xwem-face-get-gc 'xwem-worklog-temp-face) 0 0 6 6)
+ xdpy pix (xwem-face-get-gc 'xwem-worklog-temp-face) 0 0 6 6)
(XFillRectangle xdpy mask xwem-misc-mask-fgc 0 0 6 6))
;; Apply mask
- (X-XShapeMask xdpy win X-XShape-Bounding X-XShapeSet 0 0 mask))))
+ (X-XShapeMask xdpy win X-XShape-Bounding X-XShapeSet 0 0 mask)
+ (xwem-worklog-dockapp-apply-pixmap dockapp))))
(defun xwem-worklog-dockapp-event-handler (xdpy xwin xev)
"Event handler for worklog dockapp."
(let ((dockapp (X-Win-get-prop xwin 'xwem-worklog-dockapp)))
(when (xwem-worklog-dockapp-p dockapp)
(X-Event-CASE xev
- ((:X-Expose :X-MapNotify)
- (xwem-worklog-dockapp-update dockapp))
+ (:X-MapNotify (xwem-worklog-dockapp-update dockapp))
+ (:X-Expose (xwem-worklog-dockapp-apply-pixmap dockapp))
((:X-ButtonPress :X-ButtonRelease)
(xwem-overriding-local-map xwem-worklog-dockapp-map
@@ -1507,8 +1519,26 @@
(xwem-worklog-dockapp-win wd)
1 (+ 1 w) (+ 1 h (* 2 sw))))
+ ;; Create storer pixmap
+ (setf (xwem-worklog-dockapp-pixmap wd)
+ (XCreatePixmap (xwem-dpy) (make-X-Pixmap
+ :dpy (xwem-dpy)
+ :id (X-Dpy-get-id (xwem-dpy)))
+ (xwem-worklog-dockapp-win wd)
+ (XDefaultDepth (xwem-dpy))
+ (+ 1 w) (+ 1 (* 2 sw))))
+
(X-Win-put-prop (xwem-worklog-dockapp-win wd) 'xwem-worklog-dockapp wd)
+ ;; Draw initial contents
+ (xwem-worklog-dockapp-update wd)
+
+ ;; Install turbo mode
+ (when xwem-misc-turbo-mode
+ (XSetWindowBackgroundPixmap (xwem-dpy) (xwem-worklog-dockapp-win wd)
+ (xwem-worklog-dockapp-pixmap wd)))
+
+ ;; Select for incoming events
(XSelectInput (xwem-dpy) (xwem-worklog-dockapp-win wd)
(apply 'Xmask-or xwem-worklog-dockapp-event-mask))
(X-Win-EventHandler-add
@@ -1526,17 +1556,43 @@
(xwem-worklog-meaning-update-time)
(xwem-worklog-meaning-update-time)))
+ ;; Set default worklog dockapp
+ (unless xwem-worklog-default-dockapp
+ (setq xwem-worklog-default-dockapp wd))
+
+ ;; Add hooks
(add-hook 'xwem-worklog-task-start-hook
- `(lambda () (xwem-worklog-dockapp-update-task-brick ,wd)))
+ 'xwem-worklog-dockapp-apply-pixmap t)
+ (add-hook 'xwem-worklog-login-hook
+ 'xwem-worklog-dockapp-apply-pixmap t)
+ (add-hook 'xwem-worklog-logout-hook
+ 'xwem-worklog-dockapp-apply-pixmap t)
wd))
-(defun xwem-worklog-dockapp-stop (dockapp)
+(defun xwem-worklog-dockapp-stop (dockapp &optional need-destroy)
"Stop worklog dockapp."
(when (xwem-worklog-dockapp-p dockapp)
- (remove-hook 'xwem-worklog-task-start-hook
- `(lambda () (xwem-worklog-dockapp-update-task-brick
,dockapp)))
+ (when (eq dockapp xwem-worklog-default-dockapp)
+ (setq xwem-worklog-default-dockapp nil))
+
+ ;; XXX
+ (remove-hook 'xwem-worklog-task-start-hook 'xwem-worklog-dockapp-update)
+ (remove-hook 'xwem-worklog-login-hook 'xwem-worklog-dockapp-update)
+ (remove-hook 'xwem-worklog-logout-hook 'xwem-worklog-dockapp-update)
+
(delete-itimer (xwem-worklog-dockapp-update-itimer dockapp))
(X-Win-rem-prop (xwem-worklog-dockapp-win dockapp) 'xwem-worklog-dockapp)
+
+ ;; Release resources
+ (XFreePixmap (xwem-dpy) (xwem-worklog-dockapp-mask dockapp))
+ (XFreePixmap (xwem-dpy) (xwem-worklog-dockapp-pixmap dockapp))
+
+ ;; Remove events handler
+ (X-Win-EventHandler-rem (xwem-worklog-dockapp-win dockapp)
+ 'xwem-worklog-dockapp-event-handler)
+ (when need-destroy
+ (XDestroyWindow (xwem-dpy) (xwem-worklog-dockapp-win dockapp)))
+
(X-invalidate-cl-struct dockapp)))
(define-xwem-command xwem-worklog-task-info (task)
@@ -1567,9 +1623,10 @@
(vector "Pause" `(xwem-worklog-pause nil))
(vector "List tasks" `(xwem-worklog-task-list nil))
"---"
- (vector "Destroy" `(XDestroyWindow
- (xwem-dpy)
- ,(X-Event-xbutton-event xwem-last-xevent))))))
+ (vector "Destroy" `(xwem-worklog-dockapp-stop
+ (X-Win-get-prop
+ ,(X-Event-xbutton-event xwem-last-xevent)
+ 'xwem-worklog-dockapp) t)))))
;;; MISC
(defun xwem-worklog-on-select-cl (&optional cl)
|