Re: [IMPORTANT] Docs decision
- From: sand blarg net
- To: General discussion about sawfish wm <sawfish-list gnome org>
- Subject: Re: [IMPORTANT] Docs decision
- Date: Mon, 16 Feb 2009 22:41:42 -0800
Here's a patch against 1.3.5.1 sawfish.texi for the following
patches. (I happened to grab 1.3.5.1 from Sourceforge; I don't
anticipate problems applying it to 1.5.0.) The patch
itself is attached to the bottom. I split the Viewports node up into
sub-nodes.
Derek
[1.3.4]
http://sawfish.wikia.com/wiki/Cycle-hook
Looks like this got turned into 'after-cycle-step-hook', which is
documented as of 1.3.5.1.
http://sawfish.wikia.com/wiki/Enter-Click_Focus_Mode
Added.
http://sawfish.wikia.com/wiki/Negative-property-p
Already added by 1.3.5.1.
http://sawfish.wikia.com/wiki/Stacking-visibility
Added
http://sawfish.wikia.com/wiki/Window_prop_list_%26_prop_del
Already added as of 1.3.5.1. 'window-prop-del' renamed to
'window-remprop'.
[1.3.5]
http://sawfish.wikia.com/wiki/Honoring_ICCCM_aspect_ratio
Added note about behavior.
http://sawfish.wikia.com/wiki/Scroll_viewport_patch
Added.
http://sawfish.wikia.com/wiki/Slide-window-hook
Already added as of 1.3.5.1.
http://sawfish.wikia.com/wiki/Viewport_boundary
Added.
[1.5.0]
http://sawfish.wikia.com/wiki/Warp-if-necessary_when_cycling
http://sawfish.wikia.com/wiki/Warp-if-necessary_when_unmaximizing
Not explicitly mentioned, but I did add some additional comments on
when we warp the pointer and what variable governs it.
------------------------------ cut here ------------------------------
--- sawfish-1.3.5.1-orig/man/sawmill.texi 2008-12-17 10:37:22.000000000 -0800
+++ sawfish-1.3.5.1/man/sawmill.texi 2009-02-16 22:36:56.000000000 -0800
@@ -1085,11 +1085,35 @@
@code{border-size}.
@end defun
- defun window-visibility window
+ defun stacking-visibility window
+Returns @code{unobscured} if @code{window} is unobscured,
+ code{fully-obscured} if one or more windows completely obscure
+ code{window}, or @code{partially-obscured} if one or more window
+partially obscure @code{window}.
+
+Deciding between fully and partially obscured can be expensive. If
+ code{window-obscured} satisfies your needs, use that in preference to
+ code{stacking-visibility}
+ end defun
+
+ defun window-obscured window
+Returns @code{nil} if @code{window} is unobscured, @code{t} if
+ code{window} is completely obscured by exactly one other window, or a
+list of windows that partially obscure @code{window}.
+
+If a list of partially obscuring windows is returned, taken together
+they may or may not fully obscure @code{window}.
+ end defun
+
+ deffn {Obsolete Function} window-visibility window
Returns a symbol defining the current visibility of @var{window}.
Possible returned symbols are @code{fully-obscured},
@code{partially-obscured} or @code{unobscured}.
- end defun
+
+ code{window-visibility} is deprecated. It is unreliable when using
+the Composite extention, as every window is reported unobscured. Use
+ code{window-obscured} and @code{stacking-visibility} instead.
+ end deffn
@defun window-urgent-p window
Return @code{t} if the ``Urgency'' hint of the window associated with
@@ -1131,9 +1155,17 @@
@defvar focus-modes
A list containing all names of focus modes. The built-in values are
- code{enter-exit}, @code{enter-only} and @code{click}.
+ code{enter-exit}, @code{enter-only}, @code{enter-click} and @code{click}.
@end defvar
+Focus mode @code{enter-exit} changes focus when the pointer enters a
+window or leaves the focused window. Focus mode @code{enter-only}
+changes focus when the pointer enters a window, but not when it leaves
+the focused window. Focus mode @code{click} changes focus when you
+click on a window. Focus mode @code{enter-click} is the union of
+ code{enter-only} and @code{click}, and changes focus on any
+of their conditions.
+
It is possible to add additional focus modes by defining your own
handler function. The handler function must obey a
``focus-mode-handler'' protocol.
@@ -1185,6 +1217,9 @@
window. In @code{enter-only} mode, we warp the cursor if it is in
another window, but not if it is over the desktop---a window would not
lose focus when the cursor moved from it to the desktop.
+
+This event is implemented via @code{warp-cursor-to-window}, so Sawfish
+will not warp unless @code{warp-to-window-enabled} is true.
@end table
The protocol allows for any number of additional arguments, but does
@@ -1210,8 +1245,11 @@
@end defun
@defun warp-pointer-if-necessary window
-Generate a @code{warp-if-necessary} event and send it to the window's
+Generate a @code{warp-if-necessary} event and sends it to the window's
focus function.
+
+Various functions call @code{warp-pointer-if-necessary} if they move
+the focused window out from underneath the pointer.
@end defun
@defvar focus-click-through
@@ -1660,6 +1698,9 @@
then either the window that received the current event or the currently
focused window.
+Sawfish honors the @code{min-aspect} and @code{max-aspect} window
+hints when interactively resizing a window.
+
@deffn Command move-window-interactively window
Move @var{window} interactively using the mouse. Releasing any mouse
button places the window at its current position.
@@ -2424,7 +2465,8 @@
@defvar cycle-raise-windows t
If true, Sawfish raises windows while they're temporarily selected
-during cycling. Defaults to true.
+during cycling, and invokes @code{warp-pointer-if-necessary}.
+Defaults to true.
@end defvar
It is also possible for you to define your own stacking cycle
@@ -3699,10 +3741,10 @@
using ``viewports''.
When viewports are enabled, the Sawfish logical display becomes
-infinitely large in the two directions ``across'' and ``down'' (to the
-maximum representable size of integers). Sawfish divides this logical
-display into a potentially infinite grid of cells. Each cell of the
-grid is the same size of the virtual display.
+potentially infinitely large in the two directions ``across'' and
+``down'' (to the maximum representable size of integers). Sawfish
+divides this logical display into a potentially infinite grid of
+cells. Each cell of the grid is the same size of the virtual display.
@defvar viewport-dimensions
The current number of viewports across and down the virtual display.
@@ -3715,14 +3757,23 @@
@code{(@var{width} . @var{height})}.
@end defun
-The user then tells Sawfish to move the physical display from cell to
-cell. On a cell change, windows in previous cells are removed, and
-windows in the current cell appear. Windows that span two or more
-cells will appear in each cell, appropriately displaced.
-
Note that cell indices start at zero in each dimension. Indices are
never negative.
+ menu
+* Switching Viewports::
+* Windows and Viewports::
+ end menu
+
+ node Switching Viewports, Windows and Viewports, Viewports, Viewports
+ section Switching Viewports
+
+A user switches viewports by telling Sawfish to move the physical
+display from cell to cell. On a cell change, windows in previous
+cells are removed, and windows in the current cell appear. Windows
+that span two or more cells will appear in each cell, appropriately
+displaced.
+
@defun screen-viewport
Returns the currently displayed viewport as a pair @code{(@var{x},
@var{y})}.
@@ -3738,41 +3789,50 @@
@var{down} slots down. Either argument may be zero or negative.
@end defun
- defun set-window-viewport window col row
-Move @var{window} to the cell at @code{(@var{col}, @var{row})}. The
-relative position of the window within the cells is preserved.
- end defun
+ defvar viewport-boundary-mode
+How to act when switching via @code{set-screen-viewport} to a viewport
+that is outside of @code{viewport-dimensions}. When set to
+ code{wrap-around}, it loops in the vertical and horizontal axes
+enough times to keep the viewport within the defined dimensions. When
+set to @code{stop}, it refuses to switch to a viewport outside of
+ code{viewport-dimensions} Defaults to @code{wrap-around}.
+ end defvar
- defun move-window-viewport window col-delta row-delta
-Move @var{window} to the cell @var{col-delta} positions across and
- var{row-delta} positions down from its current cell. The relative
-position of the window with its cells its preserved.
+ defun warp-viewport x y
+Change the position of the physical display, such that location
+ code{(@var{x}, @var{y})} is at the top-left of the display. The
+physical display may be showing more than one cell at this point.
+All windows are redisplayed as appropriate.
@end defun
- defun move-viewport-to-window window
-Move the viewport to a cell that shows window @var{window}. For a
-window that spans multiple cells, this function will pick the cell
-showing the window's top-left corner.
- end defun
+ defun set-viewport x y
+Change the position of the physical display, such that location
+ code{(@var{x}, @var{y})} is at the top-left of the display. The
+physical display may be showing more than one cell at this point.
- defun move-window-to-current-viewport window
-Move @var{window} from its existing viewport to the current viewport.
-The window's relative position in the existing viewport is preserved
-after the move.
+Unlike @code{warp-viewport}, the change takes place by dividing the
+motion into @code{scroll-viewport-steps} steps, and redisplaying after
+each step in the motion.
@end defun
+ defvr Customizable scroll-viewport-steps
+Number of steps in which to divide a viewport change for
+ code{set-viewport} Each step requires a redisplay. Defaults to 1,
+which causes an instantaneous change to the new viewport. The
+customization limit is 50.
+ end defvr
+
+ node Windows and Viewports, , Switching Viewports, Viewports
+ section Windows and Viewports
+
@defun window-viewport window
Returns a cons cell @code{(@var{col} . @var{row})} of the viewport
holding the top-left corner of @var{window}.
@end defun
@defun window-outside-viewport-p window
- defunx window-outside-workspace-p window
Returns true if @var{window} is completely outside the current
-viewport in any direction. The @code{window-outside-workspace-p}
-function is an obsolete alias for the first function; the
-``workspace'' term is now used for another concept
-(@pxref{Workspaces}).
+viewport in any direction.
@end defun
@defun window-absolute-position window
@@ -3781,11 +3841,27 @@
or may not be the current viewport.
@end defun
- defun set-viewport x y
-Change the position of the physical display, such that location
- code{(@var{x}, @var{y})} is at the top-left of the display. The
-physical display may be showing more than one cell at this point.
-All windows are redisplayed as appropriate.
+ defun set-window-viewport window col row
+Move @var{window} to the cell at @code{(@var{col}, @var{row})}. The
+relative position of the window within the cells is preserved.
+ end defun
+
+ defun move-window-viewport window col-delta row-delta
+Move @var{window} to the cell @var{col-delta} positions across and
+ var{row-delta} positions down from its current cell. The relative
+position of the window with its cells its preserved.
+ end defun
+
+ defun move-window-to-current-viewport window
+Move @var{window} from its existing viewport to the current viewport.
+The window's relative position in the existing viewport is preserved
+after the move.
+ end defun
+
+ defun move-viewport-to-window window
+Move the viewport to a cell that shows window @var{window}. For a
+window that spans multiple cells, this function will pick the cell
+showing the window's top-left corner.
@end defun
@defvar uniconify-to-current-viewport
@@ -5355,6 +5431,9 @@
If @var{x} and @var{y} are @code{nil}, then they are taken as the
top-left corner of the window's frame.
+
+If @code{warp-to-window-enabled} is @code{nil}, this function does
+nothing.
@end defun
@defvar warp-to-window-offset
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]