Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.2--patch-46
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Fri Jan 13 03:50:00 MSK 2006
Standard-date: 2006-01-13 00:50:00 GMT
Modified-files: dockapp/xwem-battery.el
dockapp/xwem-time.el lisp/xwem-clients.el
lisp/xwem-events.el lisp/xwem-keyboard.el
lisp/xwem-keymacro.el lisp/xwem-main.el
lisp/xwem-misc.el lisp/xwem-netwm.el
lisp/xwem-selections.el lisp/xwem-tray.el
utils/xwem-osd.el utils/xwem-worklog.el
New-patches: lg@xxxxxxxxxxxxxx/xwem--main--2.2--patch-46
Summary: First version that works with ffi-xlib
Keywords: porting, ffi-xlib
Apart from fixing xwem to support ffi-xlib there are some non-related
fixes/addons.
* dockapp/xwem-battery.el: [fix] Get and draw AC-Line status properly.
* dockapp/xwem-time.el: [fix] Some xpm format fixes.
* lisp/xwem-clients.el: [fix] Support ffi-xlib when about to do
XSendEvent
* lisp/xwem-keyboard.el: [fix] Support ffi-xlib when about to do
XSendEvent
* lisp/xwem-keymacro.el (xwem-keymacro-init): [fix] Do not signal error
if XTEST or XRECORD extension is missing.
* lisp/xwem-main.el (xwem-init): [fix] Properly select xwem minibuffer
frame, do not error even if xwem minibuffer is not yet alive/created.
* lisp/xwem-misc.el (xwem-misc-find-emacs-frame): [rewrote] Experimental
* lisp/xwem-selections.el (xwem-selection): [semchg] Supports typed
selections.
* lisp/xwem-selections.el (xwem-copy-cutbuffer): [fix] Deactivate region
after H-w
* utils/xwem-osd.el (xwem-osd-instance-change): [fix] Proper use of
`XChangeGC'
* utils/xwem-worklog.el: [typo] breaks -> bricks
* added files
{arch}/xwem/xwem--main/xwem--main--2.2/lg@xxxxxxxxxxxxxx/patch-log/patch-46
* modified files
--- orig/dockapp/xwem-battery.el
+++ mod/dockapp/xwem-battery.el
@@ -196,10 +196,10 @@
(when (or force (not (eq dheight (xwem-batt-old-dheight xwin)))
(not (eq ac-line-p (xwem-batt-old-ac-line-p xwin))))
- (XFillRectangle xdpy xpix (XDefaultGC xdpy)
+ (XFillRectangle xdpy xpix (xwem-face-get-gc 'xwem-face-white)
0 0 xwem-batt-width xwem-batt-height)
;; Outline battery
- (XFillRectangle xdpy xpix (XDefaultGC xdpy)
+ (XFillRectangle xdpy xpix (xwem-face-get-gc 'xwem-face-white)
0 0 xwem-batt-width xwem-batt-height)
(XDrawRectangle xdpy xpix (xwem-face-get-gc 'xwem-face-black)
1 2 (- xwem-batt-width 3) (- xwem-batt-height 4))
@@ -339,26 +339,30 @@
;;;; In case there is no battery.ell
(unless (fboundp 'apm-battery)
(defvar apm-program "apm")
- (defvar apm-state-percent-arguments "-bl")
+ (defvar apm-acline-status-percent-arguments "-abl")
(defvar apm-status-alist
'((0 . high) (1 . low) (2 . critical) (3 . charging)))
(defun apm-battery ()
"Return battery status."
- (let (state percents)
+ (let (acline status percents)
(with-temp-buffer
(call-process apm-program nil (current-buffer)
- nil apm-state-percent-arguments)
+ nil apm-acline-status-percent-arguments)
(goto-char (point-min))
- (setq state (cdr (assq (string-to-int
- (buffer-substring (point-at-bol)
- (point-at-eol)))
- apm-status-alist)))
+ (setq acline (= (string-to-int
+ (buffer-substring (point-at-bol)
+ (point-at-eol))) 1))
+ (forward-line)
+ (setq status (cdr (assq (string-to-int
+ (buffer-substring (point-at-bol)
+ (point-at-eol)))
+ apm-status-alist)))
(forward-line)
(setq percents (string-to-int
(buffer-substring (point-at-bol)
(point-at-eol)))))
- (list (eq state 'charging) state percents))))
+ (list acline status percents))))
(provide 'xwem-battery)
--- orig/dockapp/xwem-time.el
+++ mod/dockapp/xwem-time.el
@@ -484,10 +484,10 @@
"\"..........\"\n"
"};\n"))
-(defconst xwem-time-xpm-load05 (concat "/* XPM */\n"
+(defconst xwem-time-xpm-load05 (concat "/* XPM */"
"static char *noname[] = {\n"
"/* width height ncolors chars_per_pixel
*/\n"
- "\"10 13 3 1,\"\n"
+ "\"10 13 3 1\",\n"
"\/* colors \*/\n"
"\"` s None c None\",\n"
"\"a c #0AB224\",\n"
@@ -780,7 +780,8 @@
"\" XoXXXXXXXXXoXoo\",\n"
"\" .XXXXXXXXXXX.oo\",\n"
"\" ooooooooooooo\",\n"
- "\" ooooooooooooo\"};\n"))
+ "\" ooooooooooooo\"\n"
+ "};\n"))
(defconst xwem-time-xpm-no-letter (concat "/* XPM */\n"
"static char * jmail_xpm[] = {\n"
@@ -801,8 +802,8 @@
"\" o.x .ox \",\n"
"\" ooooooooooooox \",\n"
"\" xxxxxxxxxxxxxx \",\n"
- "\" \"};\n"))
-
+ "\" \"\n"
+ "};\n"))
;;; Huge amount of macroses
--- orig/lisp/xwem-clients.el
+++ mod/lisp/xwem-clients.el
@@ -662,23 +662,38 @@
"Send config info to window."
(let ((clgeom (xwem-cl-xgeom cl))
(win (xwem-cl-xwin cl)))
- (XSendEvent (xwem-dpy) win nil XM-StructureNotify
- (X-Create-message
- (list [1 X-ConfigureNotify] ;type
- [1 nil] ;detail
- [2 2806] ;seq
- [4 (X-Win-id win)] ;event
- [4 (X-Win-id win)] ;window
- [4 X-None] ;above sibling
- (vector 2 (X-Geom-x clgeom)) ; shutup compiler
- [2 (X-Geom-y clgeom)]
- [2 (X-Geom-width clgeom)]
- [2 (X-Geom-height clgeom)]
- [2 (X-Geom-border-width clgeom)] ;XXX
- [1 nil] ;pad override
- [1 nil] ;pad
- )))
- ))
+ (if (featurep 'ffi-xlib)
+ ;; TODO: Remove `eval'
+ (eval '(XSendEvent (xwem-dpy) win nil XM-StructureNotify
+ (let ((xev (make-ffi-object 'XConfigureEvent)))
+ (setf (XConfigureEvent->type xev) X-ConfigureNotify
+ (XConfigureEvent->event xev) (X-Win-id win)
+ (XConfigureEvent->window xev) (X-Win-id win)
+ (XConfigureEvent->above xev) X-None
+ (XConfigureEvent->x xev) (X-Geom-x clgeom)
+ (XConfigureEvent->y xev) (X-Geom-y clgeom)
+ (XConfigureEvent->width xev) (X-Geom-width clgeom)
+ (XConfigureEvent->height xev) (X-Geom-height
clgeom)
+ (XConfigureEvent->border_width xev) (X-Geom-width
clgeom))
+ (ffi-address-of xev))))
+
+ (XSendEvent (xwem-dpy) win nil XM-StructureNotify
+ (X-Create-message
+ (list [1 X-ConfigureNotify] ;type
+ [1 nil] ;detail
+ [2 2806] ;seq
+ [4 (X-Win-id win)] ;event
+ [4 (X-Win-id win)] ;window
+ [4 X-None] ;above sibling
+ (vector 2 (X-Geom-x clgeom)) ; shutup compiler
+ [2 (X-Geom-y clgeom)]
+ [2 (X-Geom-width clgeom)]
+ [2 (X-Geom-height clgeom)]
+ [2 (X-Geom-border-width clgeom)] ;XXX
+ [1 nil] ;pad override
+ [1 nil] ;pad
+ )))
+ )))
;;;###xwem-autoload
@@ -1142,24 +1157,37 @@
;;;###xwem-autoload
(defun xwem-client-sendmsg-atom (cl atom &optional time)
"Send Client message to client CL."
- (XSendEvent (xwem-dpy) (xwem-cl-xwin cl) nil 0
- (X-Create-message
- (list [1 X-ClientMessage] ; type
- [1 X-format-32] ; format
- [2 1000] ; XXX seq
- [4 (X-Win-id (xwem-cl-xwin cl))] ; window
- [4 (X-Atom-id (X-Atom-find-by-name (xwem-dpy)
"WM_PROTOCOLS"))]
- [4 (X-Atom-id atom)]
- [4 (or time X-CurrentTime)]
- [4 nil]))))
+ (if (featurep 'ffi-xlib)
+ ;; TODO: Remove `eval'
+ (eval '(XSendEvent (xwem-dpy) (xwem-cl-xwin cl) nil 0
+ (let ((xev (make-ffi-object 'XClientMessageEvent)))
+ (setf (XClientMessageEvent->type xev) X-ClientMessage
+ (XClientMessageEvent->format xev) X-format-32
+ (XClientMessageEvent->window xev) (X-Win-id
(xwem-cl-xwin cl))
+ (XClientMessageEvent->message_type xev) (X-Atom-id
(X-Atom-find-by-name (xwem-dpy) "WM_PROTOCOLS")))
+ (ffi-store xev (ffi-slot-offset 'XClientMessageEvent
'data) 'long (X-Atom-id atom))
+ (ffi-store xev (+ (ffi-slot-offset 'XClientMessageEvent
'data) 4)
+ 'long (or time X-CurrentTime))
+ (ffi-address-of xev))))
+
+ (XSendEvent (xwem-dpy) (xwem-cl-xwin cl) nil 0
+ (X-Create-message
+ (list [1 X-ClientMessage] ; type
+ [1 X-format-32] ; format
+ [2 1000] ; XXX seq
+ [4 (X-Win-id (xwem-cl-xwin cl))] ; window
+ [4 (X-Atom-id (X-Atom-find-by-name (xwem-dpy)
"WM_PROTOCOLS"))]
+ [4 (X-Atom-id atom)]
+ [4 (or time X-CurrentTime)]
+ [4 nil])))))
(defun xwem-client-delete-window (cl)
"Close xwem client CL in safe manner.
Return non-nil, if CL supports WM_DELETE_WINDOW."
- (when (XWMProtocol-set-p (xwem-dpy)
- (xwem-hints-wm-protocols (xwem-cl-hints cl))
"WM_DELETE_WINDOW")
- (xwem-client-sendmsg-atom cl
- (X-Atom-find-by-name (xwem-dpy)
"WM_DELETE_WINDOW"))
+ (when (XWMProtocol-set-p
+ (xwem-dpy) (xwem-hints-wm-protocols (xwem-cl-hints cl))
"WM_DELETE_WINDOW")
+ (xwem-client-sendmsg-atom
+ cl (X-Atom-find-by-name (xwem-dpy) "WM_DELETE_WINDOW"))
t))
(define-xwem-deffered xwem-client-apply-state (cl)
--- orig/lisp/xwem-events.el
+++ mod/lisp/xwem-events.el
@@ -95,7 +95,6 @@
(if (xwem-cl-p cl)
;; Transition from Withdrawn->Normal/Iconic state
(xwem-cl-honour-init-state cl)
-
;; Initial window manage
(xwem-xwin-try-to-manage (X-Event-xmaprequest-window xev)))))
--- orig/lisp/xwem-keyboard.el
+++ mod/lisp/xwem-keyboard.el
@@ -856,23 +856,40 @@
(setq keymods (nconc keymods (cdr keycode)))
(setq keycode (car keycode))
- (XSendEvent (xwem-dpy) (xwem-cl-xwin client)
- nil XM-KeyPress
- (X-Create-message
- (list [1 X-KeyPress] ;type
- [1 keycode] ;detail
- [2 2806] ; XXX seq
- [4 X-CurrentTime] ; time
- [4 (X-Win-id (xwem-rootwin))] ; root
- [4 (X-Win-id (xwem-cl-xwin client))] ; event
- [4 X-None] ; child
- [2 0] ; root-x
- [2 0] ; root-y
- [2 0] ; event-x
- [2 0] ; event-y
- [2 (xwem-kbd-emods->xmodmask keymods)] ;
state
- [1 t] ; same-screen
- [1 nil]))))
+ (if (featurep 'ffi-xlib)
+ (eval '(XSendEvent (xwem-dpy) (xwem-cl-xwin client)
+ nil XM-KeyPress
+ (let ((xev (make-ffi-object 'XEvent)))
+ (setf (XKeyEvent->type xev) X-KeyPress
+ (XKeyEvent->keycode xev) keycode
+ (XKeyEvent->time xev) X-CurrentTime
+ (XKeyEvent->root xev) (X-Win-id
(xwem-rootwin))
+ (XKeyEvent->window xev) (X-Win-id
(xwem-cl-xwin client))
+ (XKeyEvent->state xev)
(xwem-kbd-emods->xmodmask keymods)
+ (XKeyEvent->same_screen xev) 1
+ (XKeyEvent->x xev) 0
+ (XKeyEvent->y xev) 0
+ (XKeyEvent->x_root xev) 0
+ (XKeyEvent->y_root xev) 0)
+ (ffi-address-of xev))))
+
+ (XSendEvent (xwem-dpy) (xwem-cl-xwin client)
+ nil XM-KeyPress
+ (X-Create-message
+ (list [1 X-KeyPress] ;type
+ [1 keycode] ;detail
+ [2 2806] ; XXX seq
+ [4 X-CurrentTime] ; time
+ [4 (X-Win-id (xwem-rootwin))] ; root
+ [4 (X-Win-id (xwem-cl-xwin client))] ;
event
+ [4 X-None] ; child
+ [2 0] ; root-x
+ [2 0] ; root-y
+ [2 0] ; event-x
+ [2 0] ; event-y
+ [2 (xwem-kbd-emods->xmodmask keymods)] ;
state
+ [1 t] ; same-screen
+ [1 nil])))))
keys))))
;;;###xwem-autoload
--- orig/lisp/xwem-keymacro.el
+++ mod/lisp/xwem-keymacro.el
@@ -151,36 +151,35 @@
;; events.
(let ((xrec-ext (X-XRecordQueryVersion (xwem-dpy)))
(xtest-ext (XQueryExtension (xwem-dpy) "XTEST")))
- (when (or (null (car xrec-ext))
- (null (car xtest-ext)))
- ;; No XRECORD or XTEST extension support
- (error 'xwem-error "RECORD or XTEST extension missing"))
-
- ;; (xwem-dpy) supports XRECORD extension
- (setq xwem-keymacro-rcontext (make-X-RecordContext
- :dpy (xwem-dpy)
- :id (X-Dpy-get-id (xwem-dpy))))
- (setq xwem-keymacro-rranges
- ;; We are only interested in KeyPrees/KeyRelease events
- (list (make-X-RecordRange
- :device-events (cons X-KeyPress X-KeyRelease))))
-
- (setq xwem-keymacro-rclient (float X-XRecordAllClients))
- (setq xwem-keymacro-rcontext (X-XRecordCreateContext
- (xwem-dpy) xwem-keymacro-rcontext 0
- (list xwem-keymacro-rclient)
- xwem-keymacro-rranges))
- (X-XRecordRegisterClients (xwem-dpy) xwem-keymacro-rcontext 0
- (list xwem-keymacro-rclient)
- xwem-keymacro-rranges)
-
- (setq xwem-keymacro-dpy (XOpenDisplay
- (format "%s:%d" (X-Dpy-name (xwem-dpy))
- (X-Dpy-default-screen (xwem-dpy)))))
- (when xwem-keymacro-debug
- (setf (X-Dpy-log-buffer xwem-keymacro-dpy) "XREC.log"))
+ (if (or (null (car xrec-ext)) (null (car xtest-ext)))
+ ;; No XRECORD or XTEST extension support
+ (xwem-message 'error "RECORD or XTEST extension missing")
+
+ ;; (xwem-dpy) supports XRECORD extension
+ (setq xwem-keymacro-rcontext (make-X-RecordContext
+ :dpy (xwem-dpy)
+ :id (X-Dpy-get-id (xwem-dpy))))
+ (setq xwem-keymacro-rranges
+ ;; We are only interested in KeyPrees/KeyRelease events
+ (list (make-X-RecordRange
+ :device-events (cons X-KeyPress X-KeyRelease))))
+
+ (setq xwem-keymacro-rclient (float X-XRecordAllClients))
+ (setq xwem-keymacro-rcontext (X-XRecordCreateContext
+ (xwem-dpy) xwem-keymacro-rcontext 0
+ (list xwem-keymacro-rclient)
+ xwem-keymacro-rranges))
+ (X-XRecordRegisterClients (xwem-dpy) xwem-keymacro-rcontext 0
+ (list xwem-keymacro-rclient)
+ xwem-keymacro-rranges)
+
+ (setq xwem-keymacro-dpy (XOpenDisplay
+ (format "%s:%d" (X-Dpy-name (xwem-dpy))
+ (X-Dpy-default-screen (xwem-dpy)))))
+ (when xwem-keymacro-debug
+ (setf (X-Dpy-log-buffer xwem-keymacro-dpy) "XREC.log"))
- (setq xwem-keymacro-initialized t)))
+ (setq xwem-keymacro-initialized t))))
(defun xwem-keymacro-extract (xevs &optional cutlen)
"Extract keyboard macro from X-Events list XEVS.
--- orig/lisp/xwem-main.el
+++ mod/lisp/xwem-main.el
@@ -299,8 +299,10 @@
;; When XEmacs frame deselects, select xwem minibuffer
(add-hook 'deselect-frame-hook
#'(lambda ()
- (unless (eq (xwem-minib-frame xwem-minibuffer)
- (selected-frame))
+ (when (and (xwem-minib-p xwem-minibuffer)
+ (framep (xwem-minib-frame xwem-minibuffer))
+ (not (eq (xwem-minib-frame xwem-minibuffer)
+ (selected-frame))))
(select-frame (xwem-minib-frame xwem-minibuffer)))))
;; Raise/lower minibuffer
--- orig/lisp/xwem-misc.el
+++ mod/lisp/xwem-misc.el
@@ -654,25 +654,27 @@
HACK, DO NOT USE."
(let ((fr (xwem-cl-get-sys-prop cl 'emacs-frame)))
(if fr
- (if (framep fr) fr nil)
-
+ (and (framep fr) fr)
;; Not yet in cl's plist
- (let ((frames (frame-list))
- xtr)
-
- (setq xtr (XQueryTree (xwem-dpy) (xwem-cl-xwin cl)))
- (if (car xtr)
- (setq xtr (mapcar 'X-Win-id (cdr (cdr (cdr (cdr xtr))))))
- (setq xtr nil))
-
+ (let ((frames (frame-list)))
(while (and frames
- (not (member
- (float (- (string-to-int
- (or (frame-property
- (car frames) 'window-id) "0")) 2))
- xtr)))
+ (not (= (- (string-to-int
+ (or (frame-property
+ (car frames) 'window-id) "0")) 3)
+ (X-Win-id (xwem-cl-xwin cl)))))
(setq frames (cdr frames)))
-
+; (xtr (XQueryTree (xwem-dpy) (xwem-cl-xwin cl))))
+; (if (car xtr)
+; (setq xtr (mapcar 'X-Win-id (cdr (cdr (cdr (cdr xtr))))))
+; (setq xtr nil))
+; (while (and frames
+; (not (member*
+; (- (string-to-int
+; (or (frame-property
+; (car frames) 'window-id) "0")) 2)
+; xtr :test #'=)))
+; (setq frames (cdr frames)))
+
(if (framep (car frames))
(xwem-cl-put-sys-prop cl 'emacs-frame (car frames))
(xwem-cl-put-sys-prop cl 'emacs-frame 'no-emacs-frame))
@@ -1032,12 +1034,12 @@
BUGS: prefix ARG might not work if region is active or some cutbuffer
is selected."
(xwem-interactive
- (list (or (xwem-selection)
+ (list (or (xwem-selection 'local)
(xwem-read-from-minibuffer (if xwem-prefix-arg
"XWEM (insert) Calc: "
"XWEM Calc: ")))
xwem-prefix-arg))
- (zmacs-deactivate-region)
+ (zmacs-deactivate-region) ; XXX
(let ((result (calc-eval expr)))
(if arg
(xwem-kbd-add-pending-keys result)
@@ -1393,38 +1395,42 @@
(defun xwem-misc-xwin-background-mode (xwin x y &optional width height)
"Return XWIN's background mode in rectange WIDTHxHEIGHT+X+y.
Background mode is one of `light' or `dark'."
- (let ((xgeom (XGetGeometry (xwem-dpy) xwin)))
- ;; Adjust x/y/width/height
- (when (< x 0)
- (setq x 0))
- (when (< y 0)
- (setq y 0))
- (when (and width (< width 0))
- (setq width nil))
- (when (and height (< height 0))
- (setq height nil))
-
- (unless width
- (setq width 10))
- (unless height
- (setq height 10))
- (when (> width (X-Geom-width xgeom))
- (setq width (X-Geom-width xgeom)))
- (when (> height (X-Geom-height xgeom))
- (setq height (X-Geom-height xgeom)))
- (when (> x (X-Geom-width xgeom))
- (setq x (- (X-Geom-width xgeom) width)))
- (when (> y (X-Geom-height xgeom))
- (setq y (- (X-Geom-height xgeom) height))))
-
- (let* ((ximg (XImageGet (xwem-dpy) xwin x y width height))
- (cv (nth 3 (XQueryColors (xwem-dpy) (XDefaultColormap (xwem-dpy))
- (mapcan 'identity (X-Image-get-prop ximg
'px-layout)))))
- (vv (/ (apply '+ (apply 'nconc cv)) (length cv))))
-
- (XDestroyImage ximg)
- (if (< vv xwem-background-mode-bound)
- 'dark 'light)))
+ (condition-case nil
+ (progn
+ (let ((xgeom (XGetGeometry (xwem-dpy) xwin)))
+ ;; Adjust x/y/width/height
+ (when (< x 0)
+ (setq x 0))
+ (when (< y 0)
+ (setq y 0))
+ (when (and width (< width 0))
+ (setq width nil))
+ (when (and height (< height 0))
+ (setq height nil))
+
+ (unless width
+ (setq width 10))
+ (unless height
+ (setq height 10))
+ (when (> width (X-Geom-width xgeom))
+ (setq width (X-Geom-width xgeom)))
+ (when (> height (X-Geom-height xgeom))
+ (setq height (X-Geom-height xgeom)))
+ (when (> x (X-Geom-width xgeom))
+ (setq x (- (X-Geom-width xgeom) width)))
+ (when (> y (X-Geom-height xgeom))
+ (setq y (- (X-Geom-height xgeom) height))))
+
+ (let* ((ximg (XImageGet (xwem-dpy) xwin x y width height))
+ (cv (nth 3 (XQueryColors (xwem-dpy) (XDefaultColormap
(xwem-dpy))
+ (mapcan 'identity (X-Image-get-prop
ximg 'px-layout)))))
+ (vv (/ (apply '+ (apply 'nconc cv)) (length cv))))
+
+ (XDestroyImage ximg)
+ (if (< vv xwem-background-mode-bound)
+ 'dark 'light)))
+ ;; XXX maybe introduce `xwem-background-mode-default' ?
+ (t 'light)))
;;;###xwem-autoload
(defun xwem-misc-completing-read-using-iswitchb
--- orig/lisp/xwem-netwm.el
+++ mod/lisp/xwem-netwm.el
@@ -365,11 +365,12 @@
XA-window X-format-32 X-PropModeReplace
(list (xwem-minib-xwin xwem-minibuffer)))
- (XChangeProperty (xwem-dpy) (xwem-minib-xwin xwem-minibuffer)
- (XInternAtom (xwem-dpy) _NET_WM_NAME)
- (XInternAtom (xwem-dpy) UTF8_STRING)
- X-format-32 X-PropModeReplace
- (list xwem-version)))
+; (XChangeProperty (xwem-dpy) (xwem-minib-xwin xwem-minibuffer)
+; (XInternAtom (xwem-dpy) _NET_WM_NAME)
+; (XInternAtom (xwem-dpy) UTF8_STRING)
+; X-format-32 X-PropModeReplace
+; (list xwem-version))
+ )
(defun xwem-nwm-set-client-list (&rest notused)
"Set _NET_CLIENT_LIST and _NET_CLIENT_LIST_STACKING."
--- orig/lisp/xwem-selections.el
+++ mod/lisp/xwem-selections.el
@@ -108,11 +108,22 @@
)))
;;;###xwem-autoload
-(defun xwem-selection ()
- "Return either active region or active PRIMARY selection."
- (or (and (region-active-p)
- (buffer-substring (region-beginning) (region-end)))
- (ignore-errors (get-selection))))
+(defun xwem-selection (&optional type)
+ "Return text selection of given TYPE.
+TYPE is one of:
+ 'local - Active Emacs region.
+ 'x - PRIMARY X selection.
+ 'any - Either active region or PRIMARY X selection.
+
+Default TYPE is 'local."
+ (unless type (setq type 'local))
+ (ecase type
+ (local (when (region-active-p)
+ (with-current-buffer (zmacs-region-buffer)
+ (buffer-substring (region-beginning) (region-end)))))
+ (x (ignore-errors (get-selection)))
+ (any (or (xwem-selection 'local)
+ (xwem-selection 'x)))))
;;;###autoload(autoload 'xwem-help-cutbuffers "xwem-selections" "Display help
about cutbuffers." t)
(define-xwem-command xwem-help-cutbuffers ()
@@ -148,8 +159,9 @@
cutbuffer."
(xwem-interactive "p")
- (let ((sel (or (xwem-selection)
+ (let ((sel (or (xwem-selection 'any)
(x-get-cutbuffer which-one))))
+ (zmacs-deactivate-region) ; XXX
(if (not sel)
(xwem-message 'note "No active selection")
(push sel xwem-selections)
--- orig/lisp/xwem-tray.el
+++ mod/lisp/xwem-tray.el
@@ -811,7 +811,7 @@
(xwem-debug 'xwem-tray "Creating new dockapp ..")
(xwem-tray-new-dapp mes-win))
(t (xwem-message
- 'warning "Unknown data-type %d in clientmessage."
+ 'warning "Unknown data-type %d in client message."
data-type))))
(t (xwem-message 'warning "Unknown mes-type %d" mes-type)))))
--- orig/utils/xwem-osd.el
+++ mod/utils/xwem-osd.el
@@ -671,10 +671,9 @@
(let ((xdpy (xwem-osd-instance-xdpy osin))
(xgc (xwem-osd-instance-xgc osin))
(font (xwem-osd-instance-get-prop osin :font)))
- (setf (X-Gc-line-width xgc) (xwem-osd-instance-get-prop osin :line-width))
+ (XChangeGC xdpy xgc :line-width (xwem-osd-instance-get-prop osin
:line-width))
(when font
- (setf (X-Gc-font xgc) (X-Font-get xdpy font)))
- (XChangeGC xdpy xgc))
+ (XChangeGC xdpy xgc :font (X-Font-get xdpy font))))
;; And redraw whole OSD
(xwem-osd-redraw (xwem-osd-instance-osd osin)))
--- orig/utils/xwem-worklog.el
+++ mod/utils/xwem-worklog.el
@@ -757,15 +757,14 @@
(xwem-kbd-stop-grabbing)
(xwem-kbd-start-grabbing xwem-worklog-pause-cursor)
- (pushnew 'xwem-worklog-post-command
- xwem-post-command-hook)
+ (pushnew 'xwem-worklog-post-command xwem-post-command-hook)
(xwem-unwind-protect
(while xwem-worklog-pause-p
(setq xev (xwem-next-event 1))
(if (not xev)
;; Timeout
(let ((xwem-worklog-pause-window-update-hook
- 'xwem-worklog-show-color-breaks))
+ 'xwem-worklog-show-color-bricks))
(xwem-worklog-pause-update))
;; Event arrived
@@ -787,9 +786,9 @@
(let ((xwem-worklog-pause-window-update-hook
(if xwem-worklog-use-diagram
- (list 'xwem-worklog-show-color-breaks
+ (list 'xwem-worklog-show-color-bricks
'xwem-worklog-draw-today-diagram)
- (list 'xwem-worklog-show-color-breaks))))
+ (list 'xwem-worklog-show-color-bricks))))
(xwem-worklog-pause arg 'list)))
(define-xwem-command xwem-worklog-continue (arg)
@@ -1309,8 +1308,8 @@
`((t (:foreground "black")))
"Temporary face used by worklog.")
-(defun xwem-worklog-show-color-breaks ()
- "Show color breaks."
+(defun xwem-worklog-show-color-bricks ()
+ "Show color bricks."
(when (eq (xwem-worklog-pause-type xwem-worklog-pause-p) 'list)
;; Do it only in listing
(let* ((face-height (font-height (face-font 'default)))
|