Re: [IMPORTANT] Docs decision



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]