Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/
Revision: xwem--main--2.2--patch-13
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Sat May 14 19:15:38 MSD 2005
Standard-date: 2005-05-14 15:15:38 GMT
Modified-files: lisp/xwem-minibuffer.el
New-patches: lg@xxxxxxxxxxxxxx/xwem--main--2.2--patch-13
Summary: try to fix recent problems with minibuffer
Keywords: minibuffer, resize
* lisp/xwem-minibuffer.el (xwem-minibuffer-emacs-frames-has-minibuffer):
[fix] :initialize added. Changed method to conditionally select
xwem-minibuffer. From this time it is done by advicing
`read-from-minibuffer' rather then intalling `select-frame-hook'. It
should make nil valued `xwem-minibuffer-emacs-frames-has-minibuffer' be
better. From this time i started using nil valued
`xwem-minibuffer-emacs-frames-has-minibuffer' :)
* lisp/xwem-minibuffer.el (xwem-emacs-frame-select-hook): Removed.
* lisp/xwem-minibuffer.el (xwem-minib-apply-specifiers): [fix] Use xwem
minibuffer Emacs window for vertical motion.
* lisp/xwem-minibuffer.el (xwem-minib-rsz-resize): [fix] Do not resize to
lesser height then original, even if `xwem-minib-resize-exact' is
non-nil. Also `xwem-minib-rsz-resize' does not relies on
xwem-minib-cl-xgeom value, rather it fetches geometry info from X
server, using `XGetGeometry'.
* lisp/xwem-minibuffer.el (xwem-modeline-disable): [fix] Unset
top-gutter-visible-p specifier as well as top-gutter.
* added files
{arch}/xwem/xwem--main/xwem--main--2.2/lg@xxxxxxxxxxxxxx/patch-log/patch-13
* modified files
--- orig/lisp/xwem-minibuffer.el
+++ mod/lisp/xwem-minibuffer.el
@@ -221,10 +221,16 @@
(progn
(setq default-x-frame-plist
(plist-remprop default-x-frame-plist 'minibuffer))
- (remove-hook 'select-frame-hook 'xwem-emacs-frame-select-hook))
+ (ad-remove-advice 'read-from-minibuffer 'around
'xwem-minib-as-emacs-minib))
(setq default-x-frame-plist
(plist-put default-x-frame-plist 'minibuffer nil))
- (add-hook 'select-frame-hook 'xwem-emacs-frame-select-hook)))
+ (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))))
+ :initialize 'custom-initialize-default
:group 'xwem-minibuffer)
(defcustom xwem-minibuffer-set-default-minibuffer-frame t
@@ -301,17 +307,6 @@
"Keymap used while in xwem.")
-(defun xwem-emacs-frame-select-hook ()
- "Select or deselect xwem minibuffer.
-Make xwem minibuffer be conditionally selected, when its emacs frame
-selected.
-Used when `xwem-minibuffer-emacs-frames-has-minibuffer' is nil."
- (if (eq (selected-frame) (xwem-minib-frame xwem-minibuffer))
- (xwem-select-client (xwem-minib-cl xwem-minibuffer))
- (when (and (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
- (not (eq (xwem-last-client) (xwem-minib-cl xwem-minibuffer))))
- (xwem-select-client (xwem-last-client)))))
-
(defun xwem-minib-apply-specifiers (frame)
"Apply `xwem-minib-specifiers' to FRAME."
(mapc #'(lambda (spc)
@@ -657,24 +652,29 @@
(save-excursion
(goto-char (point-min))
;; XXX
- (vertical-motion-pixels (X-Geom-height (xwem-rootgeom))))))
+ (vertical-motion-pixels
+ (X-Geom-height (xwem-rootgeom))
+ (frame-selected-window (xwem-minib-frame xwem-minibuffer))))))
+
+(defvar xwem-minib-rsz-saved-height nil)
(define-xwem-deffered xwem-minib-rsz-resize (&optional new-height)
"Resize xwem minibuffer to fit either NEW-HEIGHT.
-If NEW-HEIGHT is ommited, current window height considered."
+If NEW-HEIGHT is ommited, current window height considered.
+`xwem-minib-rsz-resize' won't ever shrink height to less then original
+height stored in `xwem-minib-rsz-saved-height'."
(when (xwem-cl-selected-p (xwem-minib-cl xwem-minibuffer))
- (let ((height (window-text-area-pixel-height
+ (let* ((height (window-text-area-pixel-height
(frame-selected-window (xwem-minib-frame xwem-minibuffer))))
(lines (or new-height (+ (face-height 'default (xwem-minib-frame
xwem-minibuffer))
- (xwem-minib-rsz-count-window-lines)))))
- (cond ((or new-height xwem-minib-resize-exact (> lines height))
- ;; Adjust xwem minibuffer cl height
- (xwem-client-resize (xwem-minib-cl xwem-minibuffer) nil
- (+ (X-Geom-height-with-borders
- (xwem-minib-cl-xgeom xwem-minibuffer))
- (- lines height))))))))
-
-(defvar xwem-minib-rsz-saved-height nil)
+ (xwem-minib-rsz-count-window-lines))))
+ (mg (XGetGeometry (xwem-dpy) (xwem-cl-xwin (xwem-minib-cl
xwem-minibuffer))))
+ (rh (or new-height (+ (X-Geom-height mg) (- lines height)))))
+ (when (< rh xwem-minib-rsz-saved-height)
+ (setq rh xwem-minib-rsz-saved-height))
+ (when (or new-height xwem-minib-resize-exact)
+ ;; Adjust xwem minibuffer cl height
+ (xwem-client-resize (xwem-minib-cl xwem-minibuffer) nil rh)))))
(define-xwem-deffered xwem-minib-rsz-setup ()
"Setup xwem resize minibuffer mode for xwem minibuffer."
@@ -774,8 +774,7 @@
(let* ((str (xwem-modeline-regenerate))
(mw (frame-width (xwem-minib-frame xwem-minibuffer))))
(set-specifier top-gutter (substring str 0 (and (> (length str) mw) mw))
- (xwem-minib-frame xwem-minibuffer))
- )))
+ (xwem-minib-frame xwem-minibuffer)))))
;;;###autoload(autoload 'xwem-modeline-enable "xwem-minibuffer" nil t)
(define-xwem-command xwem-modeline-enable ()
@@ -817,6 +816,8 @@
(specifier-instance top-gutter-border-width
(xwem-minib-frame xwem-minibuffer))))
;; Stop showing gutter
+ (set-specifier top-gutter-visible-p nil
+ (xwem-minib-frame xwem-minibuffer))
(set-specifier top-gutter nil
(xwem-minib-frame xwem-minibuffer)))
|