Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.2--patch-15
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Thu May 19 02:18:51 MSD 2005
Standard-date: 2005-05-18 22:18:51 GMT
Modified-files: extra/xwem-mogu.el extra/xwem-rooticon.el
lisp/xwem-frame.el lisp/xwem-interactive.el
lisp/xwem-keydefs.el lisp/xwem-launcher.el
lisp/xwem-minibuffer.el lisp/xwem-misc.el
lisp/xwem-netwm.el lisp/xwem-rooter.el
lisp/xwem-transient.el utils/xwem-osd.el
New-patches: dev@xxxxxxxxxxxxxxxx/xwem--dev--2.2--patch-9
lg@xxxxxxxxxxxxxx/xwem--main--2.2--patch-15
Summary: rank fixes, minibuffer bug fix, addons
Keywords: rank, switch, minibuffer
* extra/xwem-mogu.el (xwem-mogu-create-grid): [fix] ranking
* extra/xwem-rooticon.el (xwem-rooticon-cl-state-change-hook): [fix]
ranking
* lisp/xwem-frame.el (xwem-frame-fast-switch): [new] Command for fast
frame switching.
* lisp/xwem-interactive.el (xwem-under-minibuffer): [bug fix] Do not
select minibuffer once again if it is already selected. This is fixes
bugo-feature that Steve was having with his sy-riece. It also fixes
deselecting bug when recursive minibuffer is enabled and two minibuffer
commands are executed, f.e. `H-:' and then `H-M-x'
* lisp/xwem-keydefs.el (H-C-<digit>): [new] Commands for fast frame
switching, switches to <digit> frame.
* lisp/xwem-minibuffer.el (xwem-minibuffer-emacs-frames-has-minibuffer):
[fix] Select xwem minibuffer only if reading occurs in frame that has
xwem minibuffer as minibuffer. This fix allows having frames with and
without their own minibuffers simultaneously.
* lisp/xwem-minibuffer.el: [fix] ranking
* lisp/xwem-misc.el (xwem-xwin-rank): [fix] Set if given RANK is number
and unset if given RANK is non-number.
* lisp/xwem-misc.el (xwem-turn-on-debug): [new]
* lisp/xwem-misc.el (xwem-turn-off-debug): [new]
* lisp/xwem-netwm.el: [fix] ranking
* lisp/xwem-rooter.el: [fix] ranking
* lisp/xwem-transient.el: [fix] ranking
* utils/xwem-osd.el: [fix] ranking
* added files
{arch}/xwem/xwem--dev/xwem--dev--2.2/dev@xxxxxxxxxxxxxxxx/patch-log/patch-9
{arch}/xwem/xwem--main/xwem--main--2.2/lg@xxxxxxxxxxxxxx/patch-log/patch-15
* modified files
--- orig/extra/xwem-mogu.el
+++ mod/extra/xwem-mogu.el
@@ -63,6 +63,7 @@
(require 'xwem-load)
(require 'xwem-interactive)
+(require 'xwem-misc)
(require 'xlib-xshape)
@@ -202,7 +203,7 @@
(XAllocColor (xwem-dpy)
(XDefaultColormap (xwem-dpy))
(xwem-make-color
xwem-mogu-grid-color)))))
;; XXX Setup stack rank
- (xwem-misc-set-xwin-always-on-top xwem-mogu-xwin 100)
+ (setf (xwem-xwin-rank xwem-mogu-xwin) 100)
;; Create mask pixmap
(setf (xwem-mogu-xmask xwem-mogu-xwin)
--- orig/extra/xwem-rooticon.el
+++ mod/extra/xwem-rooticon.el
@@ -291,9 +291,7 @@
;; Set always on top rank (if any)
(let ((rank (find cl xwem-rooticon-always-on-top-spec
:key 'car :test 'xwem-cl-match-p)))
- (when rank
- (xwem-misc-set-xwin-always-on-top
- (xwem-rooticon-xriwin ri) (cdr rank))))
+ (setf (xwem-xwin-rank (xwem-rooticon-xriwin ri)) (cdr rank)))
(xwem-rooticon-apply-state ri))))
--- orig/lisp/xwem-frame.el
+++ mod/lisp/xwem-frame.el
@@ -1240,6 +1240,13 @@
(xwem-select-frame frame)))
+;;;###autoload(autoload 'xwem-frame-fast-switch "xwem-frame" "Fast way to
switch frames." t)
+(define-xwem-command xwem-frame-fast-switch (key)
+ "Just switches to frame numbered after KEY.
+To be used by H-C-<digit> bindings."
+ (xwem-interactive (list (event-key xwem-last-event)))
+ (xwem-frame-switch-nth (- (char-to-int key) 48)))
+
;;;###autoload(autoload 'xwem-frame-switch-nth "xwem-frame" "" t)
(define-xwem-command xwem-frame-switch-nth (arg)
"Switch xwem frame.
--- orig/lisp/xwem-interactive.el
+++ mod/lisp/xwem-interactive.el
@@ -108,7 +108,8 @@
(defmacro xwem-under-minibuffer (&rest forms)
"Evaluate FORM under XWEM's minibuffer focus."
- `(progn
+ `(if (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
+ (progn ,@forms)
(xwem-client-set-property
(xwem-minib-cl xwem-minibuffer) 'skip-deselect t)
(xwem-select-client (xwem-minib-cl xwem-minibuffer))
--- orig/lisp/xwem-keydefs.el
+++ mod/lisp/xwem-keydefs.el
@@ -315,6 +315,17 @@
(define-key xwem-global-map (xwem-kbd "H-r v") 'xwem-window-enlarge-vertically)
;; Various commands
+(define-key xwem-global-map (xwem-kbd "H-C-0") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-1") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-2") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-3") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-4") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-5") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-6") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-7") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-8") 'xwem-frame-fast-switch)
+(define-key xwem-global-map (xwem-kbd "H-C-9") 'xwem-frame-fast-switch)
+
(define-key xwem-global-map (xwem-kbd "H-s") 'xwem-frame-switch-nth)
(define-key xwem-global-map (xwem-kbd "H-S") 'xwem-frame-switch-nth-linkage)
--- orig/lisp/xwem-launcher.el
+++ mod/lisp/xwem-launcher.el
@@ -654,9 +654,9 @@
(let* ((action (xwem-ladock-action (X-Event-win xwem-last-xevent)))
(atype (car action))
(acmd (cdr action)))
- (cond ((eq atype 'elisp) (eval (read acmd)))
- ((eq atype 'cmd) (xwem-execute-program acmd))
- (t (xwem-message 'warning "Unknown action type=`%s'" atype))))))
+ (ecase atype
+ (elisp (eval (read acmd)))
+ (cmd (xwem-execute-program acmd))))))
;;;###autoload(autoload 'xwem-launch-dock-menu "xwem-launcher" "" t)
(define-xwem-command xwem-launch-dock-menu (action)
--- orig/lisp/xwem-minibuffer.el
+++ mod/lisp/xwem-minibuffer.el
@@ -200,10 +200,8 @@
:set (lambda (sym value)
(set sym value)
(let ((xwin (xwem-minib-xwin xwem-minibiffer)))
- (when xwin
- (if value
- (xwem-misc-set-xwin-always-on-top xwin value)
- (xwem-misc-unset-always-on-top xwin)))))
+ (when (X-Win-p xwin)
+ (setf (xwem-xwin-rank xwin) value))))
:initialize 'custom-initialize-default
:group 'xwem-minibuffer)
@@ -227,9 +225,14 @@
(defadvice read-from-minibuffer (around xwem-minib-as-emacs-minib
activate)
"Make xwem minibuffer be conditionally selected, when its emacs
frame
selected.
-Used when `xwem-minibuffer-emacs-frames-has-minibuffer' is nil."
- (xwem-under-minibuffer
- ad-do-it))))
+Used when `xwem-minibuffer-emacs-frames-has-minibuffer' is nil.
+xwem minibuffer selected only if reading occurs in frame that has xwem
+minibuffer as minibuffer window."
+ (if (eq (window-frame (minibuffer-window (selected-frame)))
+ (xwem-minib-frame xwem-minibuffer))
+ (xwem-under-minibuffer
+ ad-do-it)
+ ad-do-it))))
:initialize 'custom-initialize-default
:group 'xwem-minibuffer)
@@ -429,9 +432,8 @@
(XMapWindow (xwem-dpy) (xwem-minib-xwin minib))
;; Set always on top rank (if any)
- (when xwem-minibiffer-always-on-top-rank
- (xwem-misc-set-xwin-always-on-top
- (xwem-minib-xwin minib) xwem-minibiffer-always-on-top-rank))
+ (setf (xwem-xwin-rank (xwem-minib-xwin minib))
+ xwem-minibiffer-always-on-top-rank)
;; Set default minibuffer, if not already set
(unless (xwem-cl-p (xwem-minib-cl xwem-minibuffer))
--- orig/lisp/xwem-misc.el
+++ mod/lisp/xwem-misc.el
@@ -1609,15 +1609,19 @@
(defmacro xwem-xwin-rank (xwin)
`(X-Win-get-prop ,xwin 'always-on-top-rank))
(defsetf xwem-xwin-rank (xwin) (rank)
- `(xwem-misc-set-xwin-always-on-top ,xwin ,rank))
+ `(if (numberp ,rank)
+ (xwem-misc-set-xwin-always-on-top ,xwin ,rank)
+ (xwem-misc-unset-always-on-top ,xwin)))
;;;###xwem-autoload
-(defun xwem-misc-set-xwin-always-on-top (xwin &optional rank)
+(defun xwem-misc-set-xwin-always-on-top (xwin rank)
"Mark xwin as always on top window.
-If number RANK is given, it denotes rank of always on top window.
-Higher RANK mean XWIN is above windows with lower RANK.
-By default RANK is 10."
- (X-Win-put-prop xwin 'always-on-top-rank (or rank 10))
+RANK number denotes rank of always on top window. Higher RANK mean
+XWIN is above windows with lower RANK."
+ (unless (numberp rank)
+ (error 'invalid-argument "RANK must be number" rank))
+
+ (X-Win-put-prop xwin 'always-on-top-rank rank)
;; Sort `xwem-misc-always-on-top-stack' by rank after adding XWIN,
;; higher rank are at the end.
@@ -1698,6 +1702,28 @@
(make-X-Conf :stackmode X-Below
:sibling bsib))))))
+;; Debug
+(defvar xwem-debug)
+
+;;;###autoload
+(defun xwem-turn-on-debug ()
+ "Turn on xwem debugging."
+ (interactive)
+
+ (setq xwem-debug t)
+ (when (X-Dpy-p (xwem-dpy))
+ (setf (X-Dpy-log-buffer (xwem-dpy)) "*xwem-debug*")
+ (X-Dpy-set-log-routines (xwem-dpy) xwem-debug-routines)))
+
+;;;###autoload
+(defun xwem-turn-off-debug ()
+ "Turn off xwem debugging."
+ (interactive)
+
+ (setq xwem-debug nil)
+ (when (X-Dpy-p (xwem-dpy))
+ (setf (X-Dpy-log-buffer (xwem-dpy)) nil)))
+
(provide 'xwem-misc)
--- orig/lisp/xwem-netwm.el
+++ mod/lisp/xwem-netwm.el
@@ -542,13 +542,13 @@
(when (xwem-cl-p cl)
(case (xwem-cl-state cl)
(active
- (xwem-misc-set-xwin-always-on-top
- (xwem-cl-xwin cl) (car xwem-fullscreen-ai-rank))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl))
+ (car xwem-fullscreen-ai-rank))
(XMapWindow (xwem-dpy) (xwem-cl-xwin cl)))
(inactive
- (xwem-misc-set-xwin-always-on-top
- (xwem-cl-xwin cl) (cdr xwem-fullscreen-ai-rank))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl))
+ (cdr xwem-fullscreen-ai-rank))
(when (and xwem-fullscreen-iconify-when-inactive
;; XXX skip dummy clients and special
(not (or (xwem-dummy-client-p (xwem-cl-selected))
@@ -556,8 +556,8 @@
(xwem-iconify cl)))
(iconified
- (xwem-misc-set-xwin-always-on-top
- (xwem-cl-xwin cl) (cdr xwem-fullscreen-ai-rank))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl))
+ (cdr xwem-fullscreen-ai-rank))
(XUnmapWindow (xwem-dpy) (xwem-cl-xwin cl))))))
(defun xwem-activate-fullscreen (cl &optional type)
--- orig/lisp/xwem-rooter.el
+++ mod/lisp/xwem-rooter.el
@@ -93,14 +93,10 @@
:key 'car :test 'xwem-cl-match-p)))
(case (xwem-cl-state cl)
(inactive
- (if (cadr rank)
- (xwem-misc-set-xwin-always-on-top (xwem-cl-xwin cl) (cadr rank))
- (xwem-misc-unset-always-on-top (xwem-cl-xwin cl)))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl)) (cadr rank))
(xwem-misc-lower-xwin (xwem-cl-xwin cl)))
(active
- (if (cddr rank)
- (xwem-misc-set-xwin-always-on-top (xwem-cl-xwin cl) (cddr rank))
- (xwem-misc-unset-always-on-top (xwem-cl-xwin cl)))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl)) (cddr rank))
(xwem-misc-raise-xwin (xwem-cl-xwin cl))))))
;;;; Manage methods
--- orig/lisp/xwem-transient.el
+++ mod/lisp/xwem-transient.el
@@ -105,8 +105,8 @@
(setf (xwem-cl-translist trc)
(cons cl (xwem-cl-translist trc)))
;; And inherit always on top rank
- (xwem-misc-set-xwin-always-on-top
- (xwem-cl-xwin cl) (xwem-xwin-rank (xwem-cl-xwin trc))))
+ (setf (xwem-xwin-rank (xwem-cl-xwin cl))
+ (xwem-xwin-rank (xwem-cl-xwin trc))))
;; Install transient local keymap
(xwem-use-local-map xwem-transient-keymap cl)
--- orig/utils/xwem-osd.el
+++ mod/utils/xwem-osd.el
@@ -85,6 +85,7 @@
(require 'xlib-tray)
(require 'xlib-xpm)
+(require 'xwem-misc)
(require 'xwem-diagram)
(defgroup xwem-osd nil
@@ -308,8 +309,8 @@
XM-ButtonRelease)
0)))))
;; Apply STACK-RANK
- (when stack-rank
- (xwem-misc-set-xwin-always-on-top (xwem-osd-xwin osd) stack-rank))
+ (when (numberp stack-rank)
+ (setf (xwem-xwin-rank (xwem-osd-xwin osd)) stack-rank))
;; Create gc
(setf (xwem-osd-gc osd)
|