Commit 41ef8c43 authored by Iban Hatchondo's avatar Iban Hatchondo
Browse files

_net_frame_extent and _net_request_frame_extents uspport added.

minor focus manaement enhancements.
*_frame_extents atoms added in the supported list of suported atoms.
docs/complience.txt updated accordingly.
parent f401d444
......@@ -888,7 +888,7 @@ esac
else
echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi
cd "$ac_popdir"
cd $ac_popdir
done
fi
......@@ -2521,6 +2521,11 @@ esac
*) ac_INSTALL=$ac_top_builddir$INSTALL ;;
esac
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
# Let's still pretend it is `configure' which instantiates (i.e., don't
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
......@@ -2559,12 +2564,6 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
fi;;
esac
done` || { (exit 1); exit 1; }
if test x"$ac_file" != x-; then
{ echo "$as_me:$LINENO: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
sed "$ac_vpsub
......
Eclipse Standards Compliance
=============================
$Id: complience.txt,v 1.2 2004/02/12 23:36:37 ihatchondo Exp $
$Id: complience.txt,v 1.3 2005/01/05 23:14:26 ihatchondo Exp $
1) Introduction
2) EWMH Compliance
......@@ -89,6 +89,8 @@ $Id: complience.txt,v 1.2 2004/02/12 23:36:37 ihatchondo Exp $
+ _NET_RESTACK_WINDOW (1.3)
+ _NET_REQUEST_FRAME_EXTENTS (1.3)
c. Application Window Properties
--------------------------------
......@@ -131,14 +133,16 @@ $Id: complience.txt,v 1.2 2004/02/12 23:36:37 ihatchondo Exp $
+ _NET_WM_HANDLED_ICONS (1.3)
- _NET_WM_USER_TIME (-)
Eclipse does not read or set this property. The EWMH does not
require it to do so, but it should support it.
+ _NET_WM_USER_TIME (1.3)
+ _NET_FRAME_EXTENTS (1.3)
d. Window Manager Protocols
---------------------------
- _NET_WM_PING (1.3)
- _NET_WM_SYNC_REQUEST (1.3)
e. Resume
---------
......@@ -161,6 +165,8 @@ $Id: complience.txt,v 1.2 2004/02/12 23:36:37 ihatchondo Exp $
[+] _NET_CLOSE_WINDOW
[+] _NET_MOVERESIZE_WINDOW
[-] _NET_WM_MOVERESIZE
[+] _NET_RESTACK_WINDOW
[+] _NET_REQUEST_FRAME_EXTENTS
Application Window Properties
[+] _NET_WM_NAME
......@@ -177,8 +183,9 @@ $Id: complience.txt,v 1.2 2004/02/12 23:36:37 ihatchondo Exp $
[+] _NET_WM_ICON
[-] _NET_WM_PID
[+] _NET_WM_HANDLED_ICONS
[-] _NET_WM_USER_TIME
[+] _NET_WM_USER_TIME
[+] _NET_FRAME_EXTENTS
Window Manager Protocols
[-] _NET_WM_PING
[-] _NET_WM_SYNC_REQUEST
;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*-
;;; $Id: global.lisp,v 1.27 2005/01/05 23:13:07 ihatchondo Exp $
;;; $Id: global.lisp,v 1.28 2005/01/16 23:25:59 ihatchondo Exp $
;;;
;;; This file is part of Eclipse.
;;; Copyright (C) 2001, 2002 Iban HATCHONDO
......@@ -36,7 +36,8 @@
'(:_net_client_list :_net_client_list_stacking :_net_number_of_desktops
:_net_current_desktop :_net_active_window :_net_close_window :_net_workarea
:_net_wm_desktop :_net_wm_window_type :_net_desktop_names
:_net_restack_window :_net_moveresize_window
:_net_restack_window :_net_moveresize_window :_net_wm_user_time
:_net_request_frame_extents :_net_frame_extents
:_net_wm_strut_partial :_net_wm_state :_net_wm_strut
:_net_wm_window_type_desktop :_net_wm_window_type_dock
:_net_wm_window_type_toolbar :_net_wm_window_type_menu
......@@ -66,7 +67,7 @@
(defvar *root* nil)
(defvar *root-window* nil)
(defvar *gcontext* nil)
(defvar *widget-table* (make-hash-table))
(defvar *widget-table* (make-hash-table :test #'eq))
(defvar +xa-wm+ nil)
;; Default value of all the "customisable" environment variables
......
;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*-
;;; $Id: input.lisp,v 1.42 2005/02/10 23:45:44 ihatchondo Exp $
;;; $Id: input.lisp,v 1.43 2005/02/12 02:04:37 ihatchondo Exp $
;;;
;;; ECLIPSE. The Common Lisp Window Manager.
;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO
......@@ -71,6 +71,19 @@
(let ((e (make-event :enter-notify :kind :nonlinear :mode :normal)))
(event-process e (or (lookup-widget child) *root*))))))))
(defmethod event-process ((event client-message) window)
(when (xlib:window-p window)
(case (event-type event)
(:_net_request_frame_extents
(with-slots (left-margin right-margin top-margin bottom-margin)
(find-decoration-frame-style
(if (window-not-decorable-p window)
(lookup-theme "no-decoration")
(root-decoration-theme *root*))
window)
(setf (netwm:net-frame-extents window)
(values left-margin right-margin top-margin bottom-margin)))))))
;; Specialized ones.
(defmethod event-process ((e selection-clear) (w standard-property-holder))
......@@ -133,11 +146,11 @@
(let ((data (event-data event)))
(declare (type client-message-data data))
(case (event-type event)
((or :_WIN_WORKSPACE :_NET_CURRENT_DESKTOP)
((or :_win_workspace :_net_current_desktop)
(change-vscreen root :n (aref data 0)))
(:_NET_NUMBER_OF_DESKTOPS
(:_net_number_of_desktops
(setf (number-of-virtual-screens) (aref data 0)))
(:WM_PROTOCOLS
(:wm_protocols
(when (eq :wm_delete_window (id->atom-name (aref data 0)))
(close-widget (lookup-widget (event-event-window event))))))))
......@@ -265,9 +278,10 @@
(defmethod event-process ((event focus-out) (application application))
(with-slots (master) application
(with-slots (mode) event
(with-slots (mode kind) event
(unless (or (not master) (eql mode :while-grabbed) (eql mode :grab))
(dispatch-repaint master :focus nil)))))
(unless (eql kind :inferior)
(dispatch-repaint master :focus nil))))))
(defmethod event-process ((event focus-in) (application application))
(with-slots (master window) application
......@@ -374,7 +388,14 @@
(:_net_active_window
(cond ((shaded-p application) (shade application))
(iconic-p (uniconify icon)))
(focus-widget application nil))
(with-slots ((pwindow window)) (root-property-holder *root*)
(let* ((length (length data))
(source (if (> length 0) (aref data 0) 0))
(time (if (> length 1) (aref data 1) 0))
(wtime (or (netwm:net-wm-user-time pwindow) 0)))
(unless (or (= source 1) (> wtime time 0))
(setf (netwm:net-wm-user-time pwindow) time)
(focus-widget application time)))))
(:_net_wm_desktop (migrate-application application (aref data 0)))
(:_net_close_window (close-widget application))))))
......
;;; -*- Mode: Lisp; Package: EXTENDED-WINDOW-MANAGER-HINTS -*-
;;; $Id: netwm-manager.lisp,v 1.20 2005/01/16 23:22:23 ihatchondo Exp $
;;; $Id: netwm-manager.lisp,v 1.21 2005/02/17 19:19:22 ihatchondo Exp $
;;;
;;; This is the CLX support for the managing with gnome.
;;;
......@@ -485,4 +485,4 @@
(defsetf net-frame-extents (window) (left right top bottom)
`(change-property ,window :_NET_FRAME_EXTENTS
(list ,left ,right ,top ,bottom) :cardinal 32))
(vector ,left ,right ,top ,bottom) :cardinal 32))
;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*-
;;; $Id: widgets.lisp,v 1.44 2005/01/16 23:25:59 ihatchondo Exp $
;;; $Id: widgets.lisp,v 1.45 2005/02/10 23:45:44 ihatchondo Exp $
;;;
;;; ECLIPSE. The Common Lisp Window Manager.
;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO
......@@ -362,6 +362,11 @@
;; Update property.
(setf (netwm:net-wm-state app-window) prop))))
(defsetf application-frame-style (application) (frame-style)
`(with-slots (left-margin right-margin top-margin bottom-margin) ,frame-style
(setf (netwm:net-frame-extents (widget-window ,application))
(values left-margin right-margin top-margin bottom-margin))))
(defsetf fullscreen-mode (application) (mode)
"Mode may be (or :on :off). Put or remove application in or from fullscreen."
`(with-slots (window (fgeometry full-geometry) master icon) ,application
......
;;; -*- Mode: Lisp; Package: ECLIPSE-INTERNALS -*-
;;; $Id: wm.lisp,v 1.48 2005/01/18 23:22:44 ihatchondo Exp $
;;; $Id: wm.lisp,v 1.49 2005/02/10 23:45:44 ihatchondo Exp $
;;;
;;; ECLIPSE. The Common Lisp Window Manager.
;;; Copyright (C) 2000, 2001, 2002 Iban HATCHONDO
......@@ -147,6 +147,7 @@
(make-title-bar master (wm-name app-win))
(update-edges-geometry master)
(xlib:map-subwindows window))
(setf (application-frame-style application) astyle)
(cond ((shaded-p application)
(if (title-bar-horizontal-p master)
(unless (= 0 vm) (setf (xlib:drawable-height window) vm))
......@@ -426,6 +427,7 @@
(xlib:map-subwindows master-window))
(with-event-mask (master-window (when map +decoration-event-mask+))
(xlib:reparent-window window master-window left-margin top-margin))
(setf (application-frame-style application) (decoration-frame-style master))
(when map (xlib:map-window window))
master))
......@@ -663,7 +665,8 @@
(defun procede-decoration (window)
"Decore, if necessary, add/update properties, map or not, etc a window."
(let* ((rw (xlib:drawable-root window))
(let* ((time (or (ignore-errors (netwm:net-wm-user-time window)) 1))
(rw (xlib:drawable-root window))
(scr-num (current-vscreen rw))
(application (create-application window nil))
(win-workspace (or (window-desktop-num window) +any-desktop+))
......@@ -685,7 +688,7 @@
(t (decore-application window application :map t)))
(with-slots (wants-focus-p input-model type) application
(unless (member :_net_wm_window_type_desktop type)
(unless (eq input-model :no-input)
(unless (or (zerop time) (eq input-model :no-input))
(setf wants-focus-p *focus-new-mapped-window*)))
(when (member :_net_wm_window_type_dock type)
(update-workarea-property *root*)))))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment