xwem-patches
[Top] [All Lists]

Summary for xwem--main--2.2--patch-33

From: Zajcev Evgeny <lg@xxxxxxxx>
Subject: Summary for xwem--main--2.2--patch-33
Date: Sun, 25 Sep 2005 02:51:59 +0400
Location: lg@xxxxxxxxxxxxxx http://arch.xwem.org/2005/

Revision: xwem--main--2.2--patch-33
Archive: lg@xxxxxxxxxxxxxx
Creator: Zajcev Evgeny <lg@xxxxxxxx>
Date: Sun Sep 25 02:51:54 MSD 2005
Standard-date: 2005-09-24 22:51:54 GMT
Modified-files: extra/xwem-frametrans.el
    lisp/xwem-clients.el lisp/xwem-focus.el
    lisp/xwem-netwm.el lisp/xwem-tabbing.el
New-patches: lg@xxxxxxxxxxxxxx/xwem--main--2.2--patch-33
Summary: Another bunch of fixes, enhances
Keywords: follow-mouse, fullscreen

* lisp/xwem-clients.el (on-kill): New default method.  Switch to other
  client if selected client has been destroyed.

* lisp/xwem-focus.el (follow-mouse): More careful handling for
  leave/enter.  Ignore entering for client if this client just leaved ..

* lisp/xwem-netwm.el (xwem-toggle-fullscreen): [fix] Do things in more
  intelligent way.

* lisp/xwem-tabbing.el (xwem-tabber-draw-format): Draw outliner around
  tab.

* added files

    {arch}/xwem/xwem--main/xwem--main--2.2/lg@xxxxxxxxxxxxxx/patch-log/patch-33

* modified files

--- orig/extra/xwem-frametrans.el
+++ mod/extra/xwem-frametrans.el
@@ -108,24 +108,25 @@
 
 (defun xwem-ft-mask-init (frame &optional ft-properties)
   "Initialize transparency mask for FRAME."
-  (let* ((xpx (XCreatePixmap (xwem-dpy) (xwem-frame-xwin frame) 1
-                             (xwem-frame-width frame) (xwem-frame-height 
frame)))
-         (gc xwem-misc-mask-fgc)
-         (bgc xwem-misc-mask-bgc))
-
-    (XFillRectangle (xwem-dpy) xpx gc 0 0
-                    (xwem-frame-width frame)
-                    (xwem-frame-height frame))
-    (xwem-frame-put-prop frame 'xwem-frame-ft
-      (make-xwem-frame-ft :frame frame
-                          :mask xpx
-                          :gc gc
-                          :bgc bgc
-                          :saved-height (xwem-frame-height frame)
-                          :saved-width (xwem-frame-width frame)
-                          :plist ft-properties))
-
-    (xwem-ft-fill-mask frame)))
+  (unless (and (xwem-frame-p frame)
+               (xwem-frame-get-prop frame 'xwem-frame-ft))
+    (let* ((xpx (XCreatePixmap (xwem-dpy) (xwem-frame-xwin frame) 1
+                               (xwem-frame-width frame) (xwem-frame-height 
frame)))
+           (gc xwem-misc-mask-fgc)
+           (bgc xwem-misc-mask-bgc))
+
+      (XFillRectangle (xwem-dpy) xpx gc 0 0
+                      (xwem-frame-width frame)
+                      (xwem-frame-height frame))
+      (xwem-frame-put-prop frame 'xwem-frame-ft
+        (make-xwem-frame-ft :frame frame
+                            :mask xpx
+                            :gc gc
+                            :bgc bgc
+                            :saved-height (xwem-frame-height frame)
+                            :saved-width (xwem-frame-width frame)
+                            :plist ft-properties))
+      (xwem-ft-fill-mask frame))))
 
 (define-xwem-deffered xwem-ft-mask-resize (frame)
   "Resize FRAME's transparency mask."
@@ -152,9 +153,10 @@
   "Denitialize transparency mask for FRAME."
   (let* ((xff (and (xwem-frame-p frame)
                   (xwem-frame-get-prop frame 'xwem-frame-ft)))
-        (xpx (xwem-frame-ft-mask xff)))
+        (xpx (and xff (xwem-frame-ft-mask xff))))
     (xwem-frame-rem-prop frame 'xwem-frame-ft)
-    (XFreePixmap (xwem-dpy) xpx)
+    (when xpx
+      (XFreePixmap (xwem-dpy) xpx))
     (X-XShapeMask (xwem-dpy) (xwem-frame-xwin frame)
                   X-XShape-Bounding X-XShapeSet 0 0 nil)))
 


--- orig/lisp/xwem-clients.el
+++ mod/lisp/xwem-clients.el
@@ -2302,6 +2302,9 @@
   "Default other-client method."
   (xwem-cl-other cl))
 
+(define-xwem-method on-kill default (cl)
+  (xwem-select-last-or-other-client cl))
+
 
 ;;; Dummy client, used, when selecting `nil' client.
 (defvar xwem-dummy-client nil


--- orig/lisp/xwem-focus.el
+++ mod/lisp/xwem-focus.el
@@ -171,6 +171,8 @@
                           (quote ,fun))))))
 (put 'define-xwem-focus-mode 'lisp-indent-function 'defun)
 
+(defvar xwem-focus-last-client-leaved nil)
+
 ;;;###xwem-autoload
 (defun xwem-focus-mode-invoke (cl &rest args)
   "Invoke CL's focus mode function with ARGS.
@@ -187,10 +189,18 @@
   'after-keymap-change  - After CL's local map changed.
 "
   (when (xwem-cl-p cl)
-    (let* ((mode (xwem-client-property cl 'xwem-focus-mode))
-           (fun (get mode 'xwem-focus-mode)))
-      (when fun
-        (apply fun cl args)))))
+    (let ((ignore-invoke nil)
+          fun)
+      (when (eq (car args) 'leave)
+        (setq xwem-focus-last-client-leaved cl))
+      (when (and (eq (car args) 'enter)
+                 (eq cl xwem-focus-last-client-leaved))
+        (setq ignore-invoke t))
+
+      (unless ignore-invoke
+        (setq fun (get (xwem-client-property cl 'xwem-focus-mode) 
'xwem-focus-mode))
+        (when fun
+          (apply fun cl args))))))
 
 ;;;###xwem-autoload
 (defun xwem-focus-mode-set (cl &optional mode)
@@ -204,9 +214,8 @@
 (define-xwem-focus-mode follow-mouse (cl action &optional xev)
   "Focus follow mouse"
   (cond ((and (eq action 'enter)
-              (eq (X-Event-xcrossing-mode xev) X-NotifyNormal))
-         (xwem-select-client cl))
-        ))
+              (= (X-Event-xcrossing-mode xev) X-NotifyNormal))
+         (xwem-select-client cl))))
 
 ;;; Click to focus model
 (defvar xwem-focus-click-to-focus-map


--- orig/lisp/xwem-netwm.el
+++ mod/lisp/xwem-netwm.el
@@ -424,8 +424,9 @@
   (xwem-cl-put-prop cl prop val)
 
   (if val
-      (xwem-client-resize cl (X-Geom-width (xwem-cl-initial-xgeom cl))
-                          (X-Geom-height (xwem-cl-initial-xgeom cl)))
+      (let ((ig (xwem-cl-initial-xgeom cl)))
+        (xwem-client-move-resize cl (X-Geom-x ig) (X-Geom-y ig)
+                                 (X-Geom-width ig) (X-Geom-height ig)))
     (xwem-refit cl)))
 
 (defun xwem-fullscreen-set-fs-avoid-minib-overlap (cl prop val)
@@ -596,20 +597,22 @@
   (xwem-interactive (list (xwem-cl-selected)))
 
   (let ((xwin (xwem-cl-xwin cl)))
-    (cond ((and (eq (xwem-cl-manage-type cl) 'fullscreen)
-                (or (null force) (eq force 'off)))
-           (xwem-nwm-set-state xwin nil)
-           (let ((mspec (xwem-manda-find-match-1 cl 
xwem-manage-internal-list)))
-             (if (and mspec (not (eq (car mspec) 'fullscreen)))
-                 ;; If there some other than 'fullscreen manda entry - use it!
-                 (xwem-client-change-manage-type cl mspec)
-               ;; Otherwise try default 'generic manda
-               (xwem-client-change-manage-type cl '(generic)))))
-
-          ((and (not (eq (xwem-cl-manage-type cl) 'fullscreen))
-                (or (null force) (eq force 'on)))
+    (cond ((or (eq force 'on)
+               (and (null force)
+                    (or (not (xwem-cl-fullscreen-p cl))
+                        (and (xwem-cl-fullscreen-p cl)
+                             (xwem-client-property cl 'fs-real-size)))))
+           (xwem-client-set-property cl 'fs-real-size nil)
            (xwem-nwm-set-state xwin _NET_WM_STATE_FULLSCREEN)
-           (xwem-client-change-manage-type cl '(fullscreen))))))
+           (xwem-client-change-manage-type cl '(fullscreen)))
+
+          ((or (eq force 'off)
+               (and (null force)
+                    (xwem-cl-fullscreen-p cl)
+                    (not (xwem-client-property cl 'fs-real-size))))
+           (xwem-client-set-property cl 'fs-real-size t)
+           (xwem-nwm-set-state xwin nil)
+           (xwem-client-change-manage-type cl (xwem-manda-find-match cl))))))
 
 ;;;###autoload(autoload 'xwem-switch-to-fullscreen-cl "xwem-netwm" nil t)
 (define-xwem-command xwem-switch-to-fullscreen-cl ()


--- orig/lisp/xwem-tabbing.el
+++ mod/lisp/xwem-tabbing.el
@@ -724,18 +724,26 @@
                     (/ (- (+ (X-Rect-x rect) (X-Rect-width rect)) xoff) 2))
                  (X-Rect-y rect))
 
+      ;; Draw tab outliner
       (let ((ldgc (xwem-face-get-gc (xwem-cl-tab-face cl)
                     (cons 'delimiter-left tag-set) cl))
             (rdgc (xwem-face-get-gc (xwem-cl-tab-face cl)
                     (cons 'delimiter-right tag-set) cl)))
-        (XDrawLine (xwem-dpy) xpcop ldgc
-                   (X-Rect-x rect) (X-Rect-y rect)
-                   (X-Rect-x rect) (+ (X-Rect-y rect) (X-Rect-height rect)))
-        (XDrawLine (xwem-dpy) xpcop rdgc
-                   (+ -1 (X-Rect-x rect) (X-Rect-width rect))
-                   (X-Rect-y rect)
-                   (+ -1 (X-Rect-x rect) (X-Rect-width rect))
-                   (+ (X-Rect-y rect) (X-Rect-height rect))))
+        (XDrawSegments (xwem-dpy) xpcop ldgc
+                       (list (cons (cons (X-Rect-x rect) (X-Rect-y rect))
+                                   (cons (X-Rect-x rect) (1- (+ (X-Rect-y 
rect) (X-Rect-height rect)))))
+                             (cons (cons (X-Rect-x rect) (X-Rect-y rect))
+                                   (cons (- (+ (X-Rect-x rect) (X-Rect-width 
rect)) 1) (X-Rect-y rect)))))
+        (XDrawSegments (xwem-dpy) xpcop rdgc
+                       (list (cons (cons (X-Rect-x rect)
+                                         (1- (+ (X-Rect-y rect) (X-Rect-height 
rect))))
+                                   (cons (- (+ (X-Rect-x rect) (X-Rect-width 
rect)) 1)
+                                         (1- (+ (X-Rect-y rect) (X-Rect-height 
rect)))))
+                             (cons (cons (- (+ (X-Rect-x rect) (X-Rect-width 
rect)) 1)
+                                         (X-Rect-y rect))
+                                   (cons (- (+ (X-Rect-x rect) (X-Rect-width 
rect)) 1)
+                                         (1- (+ (X-Rect-y rect) (X-Rect-height 
rect)))))
+                             )))
 
       ;; Finally apply change to xwin
       (when force-update




<Prev in Thread] Current Thread [Next in Thread>
  • Summary for xwem--main--2.2--patch-33, Zajcev Evgeny <=