]> git.decadent.org.uk Git - ion3.git/commitdiff
[svn-upgrade] Integrating new upstream version, ion3 (20070318) 20070318
authorBen Hutchings <ben@decadent.org.uk>
Sun, 25 Mar 2007 01:38:36 +0000 (01:38 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 25 Mar 2007 01:38:36 +0000 (01:38 +0000)
168 files changed:
ChangeLog
README
RELNOTES
TODO.riot
build/ac/configure.ac
de/brush.c
de/draw.c
de/init.c
de/style.c
de/style.h
doc/ChangeLog
doc/conf-winprops.tex
doc/conf.tex
doc/de.tex
doc/exact-version
doc/fnref.tex
doc/ionconf.dvi.gz
doc/ionconf.out
doc/ionconf.ps.gz
doc/ionconf.tex
doc/ionconf/images.log
doc/ionconf/images.tex
doc/ionconf/index.html
doc/ionconf/internals.pl
doc/ionconf/ionconf.html
doc/ionconf/labels.pl
doc/ionconf/node1.html
doc/ionconf/node10.html
doc/ionconf/node11.html
doc/ionconf/node12.html
doc/ionconf/node2.html
doc/ionconf/node3.html
doc/ionconf/node4.html
doc/ionconf/node5.html
doc/ionconf/node6.html
doc/ionconf/node7.html
doc/ionconf/node8.html
doc/ionconf/node9.html
doc/ionnotes.dvi.gz
doc/ionnotes.ps.gz
doc/ionnotes/node2.html
doc/ionnotes/node9.html
doc/objects.tex
etc/Makefile
etc/cfg_defaults.lua [new file with mode: 0644]
etc/cfg_ion.lua
etc/cfg_ioncore.lua
etc/cfg_kludges.lua
etc/cfg_layouts.lua
etc/cfg_modules.lua [deleted file]
etc/cfg_query.lua
etc/cfg_tiling.lua
etc/look_cleanios.lua
etc/look_cleanviolet.lua
etc/look_newviolet.lua [new file with mode: 0644]
etc/look_simpleblue.lua
etc/lookcommon_clean.lua
etc/lookcommon_clean_frame.lua [new file with mode: 0644]
etc/lookcommon_clean_stdisp.lua [new file with mode: 0644]
etc/lookcommon_clean_tab.lua [new file with mode: 0644]
etc/lookcommon_emboss.lua
etc/lookcommon_emboss_frame.lua [new file with mode: 0644]
etc/lookcommon_emboss_stdisp.lua [new file with mode: 0644]
etc/lookcommon_emboss_tab.lua [new file with mode: 0644]
exact-version
ion/ion.c
ioncore/Makefile
ioncore/activity.c
ioncore/activity.h
ioncore/attach.c
ioncore/attach.h
ioncore/bindmaps.c
ioncore/bindmaps.h
ioncore/clientwin.c
ioncore/clientwin.h
ioncore/conf.c
ioncore/detach.c
ioncore/detach.h
ioncore/event.c
ioncore/eventh.c
ioncore/eventh.h
ioncore/exec.c
ioncore/exec.h
ioncore/float-placement.c
ioncore/float-placement.h
ioncore/focus.c
ioncore/frame-draw.c
ioncore/frame.c
ioncore/frame.h
ioncore/fullscreen.c
ioncore/fullscreen.h
ioncore/global.h
ioncore/grab.c
ioncore/grab.h
ioncore/group-cw.c
ioncore/group.c
ioncore/group.h
ioncore/infowin.c
ioncore/infowin.h
ioncore/ioncore.c
ioncore/ioncore_menudb.lua
ioncore/ioncore_misc.lua
ioncore/ioncore_wd.lua
ioncore/kbresize.c
ioncore/kbresize.h
ioncore/manage.c
ioncore/manage.h
ioncore/mplex.c
ioncore/mplex.h
ioncore/mplexpholder.c
ioncore/navi.c
ioncore/netwm.c
ioncore/netwm.h
ioncore/pholder.c
ioncore/pointer.c
ioncore/region.c
ioncore/region.h
ioncore/resize.c
ioncore/resize.h
ioncore/rootwin.c
ioncore/saveload.c
ioncore/screen-notify.c [new file with mode: 0644]
ioncore/screen-notify.h [new file with mode: 0644]
ioncore/screen.c
ioncore/screen.h
ioncore/sizehint.c
ioncore/tags.c
ioncore/tags.h
ioncore/xwindow.c
libextl/exact-version
libextl/libextl-mkexports.in
libextl/luaextl.c
libextl/luaextl.h
libmainloop/defer.c
libtu/errorlog.c
libtu/exact-version
libtu/output.c
libtu/stringstore.c
libtu/util.c
libtu/util.h
mod_dock/dock.c
mod_menu/grabmenu.c
mod_menu/menu.c
mod_menu/menu.h
mod_menu/mod_menu.lua
mod_query/fwarn.c
mod_query/fwarn.h
mod_query/input.c
mod_query/input.h
mod_query/mod_query.lua
mod_query/query.c
mod_query/query.h
mod_query/wedln.c
mod_query/wmessage.c
mod_sm/sm.c
mod_statusbar/Makefile
mod_statusbar/ion-statusd/ion-statusd.c
mod_tiling/Makefile
mod_tiling/mod_tiling.lua [new file with mode: 0644]
mod_tiling/ops.c
mod_tiling/split.c
mod_tiling/tiling.c
mod_tiling/tiling.h
pwm/cfg_pwm.lua
pwm/pwm.c
system.mk
utils/ion-completeman.in
version.h

index d9666411131e8e493296f0e155bce05d3b499ca5..ae088618ad65803ee1f384c0465c294832e1e650 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,452 @@
+2007-03-18 20:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  tagged ion-3ds-20070318
+
+2007-03-18 20:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Drawing fixes
+
+2007-03-18 20:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Release notes
+
+2007-03-18 17:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Style improvements
+
+2007-03-18 17:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Split out lookcommon stuff into multiple files
+
+2007-03-18 12:53 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * query_menu duplicate name mangling fixes
+
+2007-03-17 19:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * removed unnecessary parameter
+
+2007-03-17 15:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * mplex_do_remanage_stdisp fixes
+
+2007-03-17 14:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Screen notification windows' positions are based on stdisp position now.
+
+2007-03-17 14:26 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops
+
+2007-03-17 14:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * WMPlex focus restoring improvements
+  (Closing the scratchpad returns where the focus used to be, etc.)
+
+2007-03-17 13:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved default style
+
+2007-03-17 13:18 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Hmm...
+
+2007-03-17 11:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added border_sides drawing engine option.
+  It controls, which sides get drawn borders. Possible values are "all",
+  "tb" (top and bottom), and "lr" (left and right). To further control
+  the drawing, use the shadow_pixels and highlight_pixels options.
+
+2007-03-16 20:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in configuration file setup.
+  cfg_ion.lua simply loads cfg_defaults.lua that loads the default set of
+  modules and other files. This completes the obsoletion of cfg_user.lua
+  (still loaded by cfg_defaults.lua) as cfg_ion.lua now only needs to contain
+  dopath("cfg_defaults.lua") for a working setup.
+
+2007-03-16 20:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * mod_tiling.lua stub loader defines "default" layout
+
+2007-03-16 07:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * README fixes etc.
+
+2007-03-15 19:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Case-insensitive manual page completion of `caseicompl` is set.
+
+2007-03-15 19:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * ion-completeman improvements
+
+2007-03-15 19:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added WMoveresMode.rqgeom and .geom
+
+2007-03-15 16:24 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Context menu sorting hack
+
+2007-03-13 22:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Always defer update of screen notify and info windows
+
+2007-03-13 18:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added reparent/attach failure recovery code.
+  (Should only be needed in very exceptional situations.)
+
+2007-03-13 17:15 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Cleaned up trivial #warning
+
+2007-03-13 17:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * oops, ion-statusd needed some updating as well
+
+2007-03-11 14:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Don't defer already deferred (C-side) actions
+
+2007-03-10 23:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * mod_sm uses `libtu_progbasename` with SM_SAVE_DIR.
+  Previously this was hard-coded to "ion3", and didn't work correctly as "pwm3".
+
+2007-03-10 23:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Libtu-related updates
+
+2007-03-10 22:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, ion.c too
+
+2007-03-10 22:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * frame_load wasn't using DEST_EMPTY setting of the mode
+
+2007-03-10 18:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Autoraise changes:
+  - Moved autoraise from navi code to mplex and group `managed_prepare_focus`
+  - Added boolean `autoraise` option to `ioncore.set`.
+
+2007-03-10 18:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * region_prepare_focus behaviour changes:
+  stop recursion at active instead of mapped region.
+
+2007-03-10 18:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * WMPlex focus code passes WStacking instead of WRegion around
+
+2007-03-10 18:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, some settings were missing from ioncore.get.
+
+2007-03-10 16:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed remains of special-case region_get_rescue_pholder_for for WScreen.
+
+2007-03-10 16:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, PWM needed a numeric version of ioncore_setup_display
+
+2007-03-10 16:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Cleanup of some marked TODO items
+
+2007-03-10 16:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Doc. comment improvements
+
+2007-03-10 14:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * ignore_cfgrq winprop for Xpdf open dialog
+
+2007-03-08 18:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, wrong flag...
+
+2007-03-10 13:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed mkbottom geometry
+
+2007-03-08 17:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Year update
+
+2007-03-04 17:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added mod_tiling.untile.
+
+2007-03-03 15:24 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Hmm... it compiled a few moments ago
+
+2007-03-03 15:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Doc. fix
+
+2007-03-03 15:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added WGroup.set_bottom
+
+2007-03-03 14:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed bottom_last_close option.
+  If a group has a bottom, and the bottom is closed last, the group
+  is always to be destroyed.
+
+2007-03-03 14:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Cleanup (declared function no longer exists)
+
+2007-03-03 13:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in tagging functions:
+  Some name were changed (to have common prefix of ioncore.tagged_),
+  and WMPlex.attach_tagged was removed and replaced with more generic
+  ioncore.tagged_attach, that also is now bound on the WGroupWS context
+  menu for them.
+
+2007-03-03 12:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Hmm... maybe that fixes irreproducible exit crashes.
+
+2007-03-03 12:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Moved Mod1+A attach query to WFrame.toplevel from WMPlex.toplevel.
+  (It doesn't make much sense on screens.)
+
+2007-03-02 21:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added map and unmap to list of notified changes to regions
+
+2007-03-02 21:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Don't refresh on all notifies in frame_managed_notify.
+
+2007-03-02 16:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Size hints base size usage fixes.
+
+2007-03-01 21:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Don't set focus for windows that are already active when no other changes are pending.
+
+2007-03-01 20:55 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Further pointer focus hack optimisation.
+  Do not bother with the pointer position at all: simply block 
+  EnterWindow event focus changes if the unmapped/destroyed 
+  window does not or should not soon have the focus.
+  (The general focus policy has recently gravitated towards
+  always ignoring EnterWindow events if there could be any
+  confusion.)
+
+2007-03-01 15:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed region_goto active window optimisation to ensure warp in any case.
+
+2007-02-28 23:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * focusbogushatehatehate#2
+
+2007-02-28 22:55 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * groupcw_managed_notify wasn't calling group_managed_notify.
+  This broke tracking of current region within the group.
+
+2007-02-28 21:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Focusbogushatehatehate
+
+2007-02-28 20:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Tiling frame removal focus fixes
+
+2007-02-28 17:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Minor pointer focus hack optimisation.
+  (Don't do anything if ioncore_g.focus_next is set.)
+
+2007-02-27 20:53 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * group_bottom was missing EXTL_SAFE
+
+2007-02-26 20:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Simpler mod_query.query_attachclient handler.
+  (Uses WRegion.groupleader_of.)
+
+2007-02-26 19:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * WFrame.floating bindmap is applied to transients too
+
+2007-02-26 16:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Activity notification display improvements (?).
+
+2007-02-25 22:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved float placement code.
+  All of the stacking structure for all groups is scanned, on the target
+  stacking level, instead of just the target group's portion on all levels.
+
+2007-02-25 19:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added "userpos" winprop for overriding the USPosition size hint flag.
+
+2007-02-25 18:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Split out screen notification window code into scree-notify.c
+
+2007-02-24 18:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added maximum width parameter to infowin_set_text.
+
+2007-02-24 17:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed unsplit
+
+2007-02-24 17:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed mplex attach "layer" parameter backwards compatibility support
+
+2007-02-24 17:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed layout loading backwards compatibility hack
+
+2007-02-24 17:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * And the default too..
+
+2007-02-24 17:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Layout configuration file updates, clean-up and new layouts
+
+2007-02-24 17:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * bottom_last_close is the default now
+
+2007-02-24 17:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed many specific implementations of region_may_dispose.
+
+2007-02-24 17:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Generic implementation of region_may_dispose.
+  Based on a test run of the improved rescue code.
+
+2007-02-24 15:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Further changes in context menu definitions.
+  - Less definitions for _sub, instead preferring directly defining things
+    in the context menu for the corresponding class.
+  - However, the menu entries for 'pmenus' are now not so nicely ordered.
+    Perhaps there should be some way to hint at the sorting...
+
+2007-02-24 15:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Menu API and context menu generation changes
+
+2007-02-23 21:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Make context menus work for empty workspaces (etc.) too
+
+2007-02-23 20:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Tiling initial frame creation/attach unification.
+
+2007-02-23 18:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added ioncore_exec_environ_hook.
+  This can be used to set up the environment variables and such for
+  programs executed by Ion. It receives an WExecP structure as parameter,
+  and this includes the intended target region, so that a FDO startup 
+  sequence specification support module could use it to set things up
+  for proper targeting of windows.
+
+2007-02-23 18:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed frame_style backwards compatibility support
+
+2007-02-23 18:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Put all windows on the focuslist menu
+
+2007-02-23 18:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * No need for region_dispose_ (with the underscore).
+
+2007-02-23 16:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Working (?) detach/attach again with the help of region_disposeroot.
+
+2007-02-23 16:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Replaced region_managed_rqdispose with region_managed_disposeroot.
+  This version only returns the root region to be disposed, or NULL
+  if the operation can not be done.
+
+2007-02-23 16:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Clean-up
+
+2007-02-22 20:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * TODO update: tiny frame problem solved by unsqueeze
+
+2007-02-22 20:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * ioncore.set{unsqueeze=true/false} option for auto-unsqueeze.
+
+2007-02-22 20:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Unsqueeze transients.
+  (Yes, I know, there's a problem with stray frames with move in 
+  general after other recent changes.)
+
+2007-02-22 20:26 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Unsqueeze menus/queries/messages.
+
+2007-02-22 20:18 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added ioncore.unsqueeze
+
+2007-02-22 20:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added minimum size hint for queries/messages/menus.
+
+2007-02-21 18:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Dispose/rqclose changes
+  - Dispose no longer defers actual destroy automatically, but stuff 
+    calling it should take care of that, when needed.
+  - WRegion.rqclose defer dispose always, and _does not_ indicate, 
+    whether the operation is likely to succeed. To see if this happens,
+    use the "deinit" notification.
+
+2007-02-20 20:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Move rotation setting from WScreen to mod_xrandr
+
+2007-02-20 02:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved size hint winprops
+
+2007-02-20 02:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added option to disable mouse/sloppy focus.
+
+2007-02-20 02:18 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Menu update
+
+2007-02-20 02:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added WRegion.get_configuration export.
+  Note that it filters out client windows by default.
+
+2007-02-19 22:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Frames weren't yet using rqdispose chains
+
+2007-02-19 19:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Ugly hack for dispose
+  (TODO: use continuations instead)
+
+2007-02-19 19:26 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, xwindow_pointer_pos was returning root coordinates
+
+2007-02-19 19:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * More ugly hacks to pointer focus hack
+
+2007-02-18 19:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added missing header
+
+2007-02-18 19:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Renamed region_may_destroy region_may_dispose for consistency.
+
+2007-02-18 18:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * bottom_last_close wasn't being saved
+
+2007-02-18 18:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Rescue mechanism optimisations
+
+2007-02-18 18:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * No more reactive destroyal in region_managed_remove.
+  It must be done in the region_managed_rqdispose chain.
+
+2007-02-18 18:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops.
+
+2007-02-18 17:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added region_rqdispose/region_managed_rqdispose mechanism.
+  This should fix the issue of it having bee possible to destroy the
+  last workspace (and tiling on it) on a screen recently.
+
+2007-02-18 17:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Dispose changes
+
+2007-02-17 20:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Bah, forgot the export statements, and WRegion.group_of is rather useless
+  actually, in its previous form (gone now).
+
+2007-02-17 19:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Do not ignore active region's base size in (tiled) frames' size hints.
+
+2007-02-17 14:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Full screen mode fixes and improvements
+
+2007-02-17 14:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added WRegion.group_of and WRegion.groupleader_of exports.
+
+2007-02-08 16:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Mplex attach size kludges
+
+2007-02-08 15:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * I hate focus code
+
+2007-02-06 19:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added commented-out caseicompl setting to cfg_query.lua
+
+2007-02-06 19:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in NotifyPointerRoot handling.
+  (Check for pending focus changes too. Moved after generic focus event handling.)
+
+2007-02-06 19:11 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Don't confine pointer by default on grab.
+
+2007-02-06 19:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * region_maybewarp_now was ignoring ioncore_g.warp_enabled.
+
+2007-02-06 18:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Pointer focus hack on return from grab had been lost..
+
+2007-02-05 18:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed stub appmenu. 
+  F3/query_exec is the Ion way. (The appmenu remains for pwm, though.)
+
+2007-02-11 18:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some menu/query cycling improvements
+  (partially incomplete)
+
+2007-02-05 17:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Close grabmenus when grab is killed (Esc).
+
+2007-02-04 10:35 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some system.mk doc updates
+
+2007-02-03 20:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed ext_statusbar backwards compat. hack.
+
+2007-02-03 16:10 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added missing backquote
+
 2007-02-03 14:50 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3ds-20070203
 
diff --git a/README b/README
index 0769ba68a7d82e098f0aaae412151148f6ee69d4..29fcb90f136728946dbc68e07df631dcac2c4990 100644 (file)
--- a/README
+++ b/README
@@ -50,7 +50,7 @@ Building and installing
    if you're using some X display/login manager. If `~/.xsession` does not 
    help and you're not using a display manager, modifying `~/.xinitrc` or 
    creating one based on your system's `xinitrc` (wherever that may be; 
-   use locate) may be what you need to do. Note that unlike `.xsession`, 
+   use `locate`) may be what you need to do. Note that unlike `.xsession`, 
    a `.xinitrc` should usually do much more setup than simply start a few
    programs of your choice.
 
@@ -64,11 +64,11 @@ Some optional installation steps
 1. The F5 and F6 keys expect to find the program `run-mailcap` to select
    a program to view a file based on its guessed MIME type. Unless you are
    using Debian, most likely you don't have it, but any other similar 
-   program (or just plain old text editor) will do as well - just the bindings
-   in `cfg_ioncore.lua`. Of course, if you don't want to use the feature at 
-   this time or never, you may simply skip this step. If you want to use 
-   `run-mailcap`, it can be found from the following address, as a source 
-   tarball as well:
+   program (or just plain old text editor) will do as well -- just modify the
+   bindings in `cfg_ioncore.lua`. Of course, if you don't want to use the 
+   feature at this time or never, you may simply skip this step. If you want
+   to use `run-mailcap`, it can be found from the following address, as a 
+   source tarball as well:
    
        <http://www.debian.org/Packages/unstable/net/mime-support.html>
 
@@ -122,16 +122,16 @@ The autoconf script written by Tom Payne for the most part.
 
 The dock module was written by Tom Payne and Per Olofsson.
 
-`share/ion-completefile/ion-completefile.c` is based on editline, (c)
+`utils/ion-completefile/ion-completefile.c` is based on editline, (c)
 1992 Simmule Turner and Rich Salz. See the file for details.
 
-The code that `de/fontset.c` is based on was apparently originally written 
-by Tomohiro Kubota; see
+The code that `de/fontset.c` is based on was apparently originally 
+written by Tomohiro Kubota; see
 <http://www.debian.org/doc/manuals/intro-i18n/ch-examples.en.html#s13.4.5>.
 
-Various patches have been contributed by other individuals unlisted here.
-See the mailing list archives and the darcs source repository history at
-<http://iki.fi/tuomov/repos/>. For translators see the individual `.po`
-files in `po/`.
+Various (minor) patches have been contributed by other individuals 
+unlisted  here. See the mailing list archives and the darcs source 
+repository history at <http://iki.fi/tuomov/repos/>. For translators
+see the individual `.po` files in `po/`.
 
 See `libtu/README` for code by others integrated into libtu.
index 0834cfa59f5c067cfd5aac6e0adf81469da63ca5..c8621c135374519da403bf7b65ed1044064c7b50 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,10 +1,39 @@
 
+ion-3ds-20070318
+----------------
+
+This may be the last "ds" release if Ion3; if all goes well, the next
+release is likely to be an "rc". Some minor improvements will still 
+be done, and minor requests may be accepted, so be quick.
+
+The most notable changes in this release from the previous one are:
+
+  * Transients and queries in too small frames are "unsqueezed" out
+    of them, unless disabled with `ioncore.set{ unsqueeze = false }`.
+
+  * Some changes in default `cfg_ion.lua`: instead of loading 
+    various other files, just `cfg_default.lua` is loaded instead.
+
+  * `mod_tiling.untile` (available in the context menu) may be used 
+    to decompose tilings into floating frames. (This is the approximate
+    opposite of `mod_tiling.mkbottom` and the "new tiling" context menu 
+    entry.)
+
+  * Improved context menus.
+
+  * Slightly improved defaults style, using the drawing engine's
+    added possibility of partial borders.
+
+  * Various fixes and other improvements, in particular in relation
+    to focus code.
+
+
 ion-3ds-20070203
 ----------------
 
   * There's been changes in padding/spacing usage in styles. Frames
     now surround stuff inside borders not with `spacing` pixels, but
-    with `padding_pixels. Spacing is only used to space things within
+    with `padding_pixels`. Spacing is only used to space things within
     the borders (all the tabs and the client window from each other).
     Consequently, custom styles may need to be updated to reflect this,
     by increasing the padding, possibly also altering/removing colour 
index 009833bba23962b2f1fb5c49ba399db37113cf29..ffb87814f6fbd9a9a41049aa27e4076f615e6980 100644 (file)
--- a/TODO.riot
+++ b/TODO.riot
@@ -114,19 +114,6 @@ In-Reply-To: <riot.20060323173006.1@riot.invalid>
 
 Tiled workspaces
 
-From background-static Thu Mar 23 17:40:03 EET 2006
-Message-Id: <riot.20060323174003.7@riot.invalid>
-Date: Thu Mar 23 17:40:03 EET 2006
-Status: RO
-X-Riot-Version: 1ds-yyyymmdd
-From: Riot
-X-Riot-Edited: Thu Mar 23 17:40:03 EET 2006
-Content-Type: text/plain; charset=utf-8
-Subject: A general solution to transients, queries and menus in tiny frames.
-In-Reply-To: <riot.20060323181034.36@riot.invalid>
-
-A general solution to transients, queries and menus in tiny frames.
-
 From background-static Thu Mar 23 17:50:02 EET 2006
 Message-Id: <riot.20060323175002.4@riot.invalid>
 Date: Thu Mar 23 17:50:02 EET 2006
@@ -569,6 +556,19 @@ Subject: Done
 
 Done
 
+From background-static Thu Mar 23 17:40:03 EET 2006
+Message-Id: <riot.20060323174003.7@riot.invalid>
+Date: Thu Mar 23 17:40:03 EET 2006
+Status: RO
+X-Riot-Version: 1ds-yyyymmdd
+From: Riot
+X-Riot-Edited: Thu Mar 23 17:40:03 EET 2006
+Content-Type: text/plain; charset=utf-8
+Subject: A general solution to transients, queries and menus in tiny frames.
+In-Reply-To: <riot.20060323173244.4@riot.invalid>
+
+A general solution to transients, queries and menus in tiny frames.
+
 From background-static Thu Mar 23 17:53:19 EET 2006
 Message-Id: <riot.20060323175319.7@riot.invalid>
 Date: Thu Mar 23 17:53:19 EET 2006
index 277cc961992439c0d44a83fb3df25944884ef0d2..88a8d4daf3ad4683c9f11a1314c1a9d37a0bef1e 100644 (file)
@@ -3,7 +3,7 @@ dnl Please report bugs in this autoconf script Tom Payne <ion@tompayne.org>
 dnl $Header: /home/twp/cvsroot/twp/ion/ion-devel-autoconf/configure.ac,v 1.16 2004/01/14 11:32:19 twp Exp $
 
 AC_INIT([Ion Window Manager],
-        [3ds-20070203],
+        [3ds-20070318],
         [nobody@nowhere.invalid],
         [ion3])
 AC_PREREQ([2.58])
index fbaaa610f6e7f54a6d302b4d386024028df1c40d..3101324f378849dbf4c524c2674f686844522349 100644 (file)
@@ -182,32 +182,42 @@ void debrush_get_border_widths(DEBrush *brush, GrBorderWidths *bdw)
 {
     DEStyle *style=brush->d;
     DEBorder *bd=&(style->border);
-    uint tmp=0, spc=style->spacing;
+    uint tmp=0;
+    uint tbf=1, lrf=1;
+    uint pad=bd->pad;
+    
+    switch(bd->sides){
+    case DEBORDER_TB:
+        lrf=0;
+        break;
+    case DEBORDER_LR:
+        tbf=0;
+        break;
+    }
     
     switch(bd->style){
     case DEBORDER_RIDGE:
-        tmp=spc;
     case DEBORDER_GROOVE:
-        tmp+=bd->sh+bd->hl+bd->pad;
-        bdw->top=tmp; bdw->bottom=tmp; bdw->left=tmp; bdw->right=tmp;
+        tmp=bd->sh+bd->hl;
+        bdw->top=tbf*tmp+pad; bdw->bottom=tbf*tmp+pad; 
+        bdw->left=lrf*tmp+pad; bdw->right=lrf*tmp+pad;
         break;
     case DEBORDER_INLAID:
-        tmp=bd->sh+bd->pad+spc; bdw->top=tmp; bdw->left=tmp;
-        tmp=bd->hl+bd->pad+spc; bdw->bottom=tmp; bdw->right=tmp;
+        tmp=bd->sh; bdw->top=tbf*tmp+pad; bdw->left=lrf*tmp+pad;
+        tmp=bd->hl; bdw->bottom=tbf*tmp+pad; bdw->right=lrf*tmp+pad;
         break;
     case DEBORDER_ELEVATED:
     default:
-        tmp=bd->hl+bd->pad; bdw->top=tmp; bdw->left=tmp;
-        tmp=bd->sh+bd->pad; bdw->bottom=tmp; bdw->right=tmp;
+        tmp=bd->hl; bdw->top=tbf*tmp+pad; bdw->left=lrf*tmp+pad;
+        tmp=bd->sh; bdw->bottom=tbf*tmp+pad; bdw->right=lrf*tmp+pad;
         break;
     }
     
+    bdw->right+=brush->indicator_w;
+
     bdw->tb_ileft=bdw->left;
     bdw->tb_iright=bdw->right;
     bdw->spacing=style->spacing;
-    
-    bdw->right+=brush->indicator_w;
-    bdw->tb_iright+=brush->indicator_w;
 }
 
 
index 552e48f990bd00dc9b2eb79a27168a4e76fc6b62..40a2f8ffe02d257af6847cbbe97152ba8947f306 100644 (file)
--- a/de/draw.c
+++ b/de/draw.c
@@ -112,8 +112,8 @@ static void do_draw_border(Window win, GC gc, int x, int y, int w, int h,
     b=0;
     
     for(i=0; i<br; i++){
-        points[0].x=x+w-i;        points[0].y=y+b;
-        points[1].x=x+w-i;        points[1].y=y+h-i;
+        points[0].x=x+w-i;      points[0].y=y+b;
+        points[1].x=x+w-i;      points[1].y=y+h-i;
         points[2].x=x+a;        points[2].y=y+h-i;
     
         if(a<tl)
@@ -138,64 +138,29 @@ static void draw_border(Window win, GC gc, WRectangle *geom,
 }
 
 
-void debrush_do_draw_border(DEBrush *brush, WRectangle geom, 
-                            DEColourGroup *cg)
-{
-    DEBorder *bd=&(brush->d->border);
-    GC gc=brush->d->normal_gc;
-    Window win=brush->win;
-    
-    switch(bd->style){
-    case DEBORDER_RIDGE:
-        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
-    case DEBORDER_INLAID:
-        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
-        draw_border(win, gc, &geom, bd->sh, bd->hl, cg->sh, cg->hl);
-        break;
-    case DEBORDER_GROOVE:
-        draw_border(win, gc, &geom, bd->sh, bd->hl, cg->sh, cg->hl);
-        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
-        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
-        break;
-    case DEBORDER_ELEVATED:
-    default:
-        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
-        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
-        break;
-    }
-}
-
-
-
-    
-void debrush_draw_border(DEBrush *brush, 
-                         const WRectangle *geom)
-{
-    DEColourGroup *cg=debrush_get_current_colour_group(brush);
-    if(cg!=NULL)
-        debrush_do_draw_border(brush, *geom, cg);
-}
-
-
 static void draw_borderline(Window win, GC gc, WRectangle *geom,
                             uint tl, uint br, DEColour tlc, DEColour brc, 
                             GrBorderLine line)
 {
-    if(line==GR_BORDERLINE_LEFT && geom->h>0){
+    if(line==GR_BORDERLINE_LEFT && geom->h>0 && tl>0){
         XSetForeground(ioncore_g.dpy, gc, tlc);
-        XDrawRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, tl, geom->h);
+        XSetBackground(ioncore_g.dpy, gc, tlc);
+        XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, tl, geom->h);
         geom->x+=tl;
-    }else if(line==GR_BORDERLINE_TOP && geom->w>0){
+    }else if(line==GR_BORDERLINE_TOP && geom->w>0 && tl>0){
         XSetForeground(ioncore_g.dpy, gc, tlc);
-        XDrawRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, geom->w, tl);
+        XSetBackground(ioncore_g.dpy, gc, tlc);
+        XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, geom->w, tl);
         geom->y+=tl;
-    }else if(line==GR_BORDERLINE_RIGHT && geom->h>0){
+    }else if(line==GR_BORDERLINE_RIGHT && geom->h>0 && br>0){
         XSetForeground(ioncore_g.dpy, gc, brc);
-        XDrawRectangle(ioncore_g.dpy, win, gc, geom->x+geom->w-1-br, geom->y, br, geom->h);
+        XSetBackground(ioncore_g.dpy, gc, brc);
+        XFillRectangle(ioncore_g.dpy, win, gc, geom->x+geom->w-br, geom->y, br, geom->h);
         geom->w-=br;
-    }else if(line==GR_BORDERLINE_BOTTOM && geom->w>0){
+    }else if(line==GR_BORDERLINE_BOTTOM && geom->w>0 && br>0){
         XSetForeground(ioncore_g.dpy, gc, brc);
-        XDrawRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y+geom->h-1-br, geom->w, br);
+        XSetBackground(ioncore_g.dpy, gc, brc);
+        XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y+geom->h-br, geom->w, br);
         geom->h-=br;
     }
 }
@@ -229,6 +194,17 @@ void debrush_do_draw_borderline(DEBrush *brush, WRectangle geom,
 }
 
 
+void debrush_do_draw_padline(DEBrush *brush, WRectangle geom,
+                             DEColourGroup *cg, GrBorderLine line)
+{
+    DEBorder *bd=&(brush->d->border);
+    GC gc=brush->d->normal_gc;
+    Window win=brush->win;
+    
+    draw_borderline(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad, line);
+}
+
+
 void debrush_draw_borderline(DEBrush *brush, const WRectangle *geom,
                              GrBorderLine line)
 {
@@ -238,6 +214,68 @@ void debrush_draw_borderline(DEBrush *brush, const WRectangle *geom,
 }
 
 
+static void debrush_do_do_draw_border(DEBrush *brush, WRectangle geom, 
+                                      DEColourGroup *cg)
+{
+    DEBorder *bd=&(brush->d->border);
+    GC gc=brush->d->normal_gc;
+    Window win=brush->win;
+    
+    switch(bd->style){
+    case DEBORDER_RIDGE:
+        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
+    case DEBORDER_INLAID:
+        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
+        draw_border(win, gc, &geom, bd->sh, bd->hl, cg->sh, cg->hl);
+        break;
+    case DEBORDER_GROOVE:
+        draw_border(win, gc, &geom, bd->sh, bd->hl, cg->sh, cg->hl);
+        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
+        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
+        break;
+    case DEBORDER_ELEVATED:
+    default:
+        draw_border(win, gc, &geom, bd->hl, bd->sh, cg->hl, cg->sh);
+        draw_border(win, gc, &geom, bd->pad, bd->pad, cg->pad, cg->pad);
+        break;
+    }
+}
+
+
+void debrush_do_draw_border(DEBrush *brush, WRectangle geom, 
+                            DEColourGroup *cg)
+{
+    DEBorder *bd=&(brush->d->border);
+
+    switch(bd->sides){
+    case DEBORDER_ALL:
+        debrush_do_do_draw_border(brush, geom, cg);
+        break;
+    case DEBORDER_TB:
+        debrush_do_draw_padline(brush, geom, cg, GR_BORDERLINE_LEFT);
+        debrush_do_draw_padline(brush, geom, cg, GR_BORDERLINE_RIGHT);
+        debrush_do_draw_borderline(brush, geom, cg, GR_BORDERLINE_TOP);
+        debrush_do_draw_borderline(brush, geom, cg, GR_BORDERLINE_BOTTOM);
+        break;
+    case DEBORDER_LR:
+        debrush_do_draw_padline(brush, geom, cg, GR_BORDERLINE_TOP);
+        debrush_do_draw_padline(brush, geom, cg, GR_BORDERLINE_BOTTOM);
+        debrush_do_draw_borderline(brush, geom, cg, GR_BORDERLINE_LEFT);
+        debrush_do_draw_borderline(brush, geom, cg, GR_BORDERLINE_RIGHT);
+        break;
+    }
+}
+
+    
+void debrush_draw_border(DEBrush *brush, 
+                         const WRectangle *geom)
+{
+    DEColourGroup *cg=debrush_get_current_colour_group(brush);
+    if(cg!=NULL)
+        debrush_do_draw_border(brush, *geom, cg);
+}
+
+
 /*}}}*/
 
 
index ad403236d9ee20cae83bfa52e52a18e2ff1e3e31..bc771d08144a2407022505bf282c4e47bf7f0ac9 100644 (file)
--- a/de/init.c
+++ b/de/init.c
@@ -94,12 +94,33 @@ void de_get_border_style(uint *ret, ExtlTab tab)
 }
 
 
+void de_get_border_sides(uint *ret, ExtlTab tab)
+{
+    char *style=NULL;
+    
+    if(!extl_table_gets_s(tab, "border_sides", &style))
+        return;
+    
+    if(strcmp(style, "all")==0)
+        *ret=DEBORDER_ALL;
+    else if(strcmp(style, "tb")==0)
+        *ret=DEBORDER_TB;
+    else if(strcmp(style, "lr")==0)
+        *ret=DEBORDER_LR;
+    else
+        warn(TR("Unknown border side configuration \"%s\"."), style);
+    
+    free(style);
+}
+
+
 void de_get_border(DEBorder *border, ExtlTab tab)
 {
     de_get_border_val(&(border->sh), tab, "shadow_pixels");
     de_get_border_val(&(border->hl), tab, "highlight_pixels");
     de_get_border_val(&(border->pad), tab, "padding_pixels");
     de_get_border_style(&(border->style), tab);
+    de_get_border_sides(&(border->sides), tab);
 }
 
 
index 8db97cd5137c19fa779d27c7fcef00864ab57789..b4493373e49b3e237726da77d1b0fd6e4cacd46f 100644 (file)
@@ -220,6 +220,7 @@ bool destyle_init(DEStyle *style, WRootWin *rootwin, const char *name)
     style->border.hl=1;
     style->border.pad=1;
     style->border.style=DEBORDER_INLAID;
+    style->border.sides=DEBORDER_ALL;
 
     style->spacing=0;
     
index 90dfc07345bae0c619687b0f0909ca7707c8008f..172b509f8481a65ce00e4effe817d5f4ab32f287 100644 (file)
@@ -31,6 +31,12 @@ enum{
     DEBORDER_GROOVE       /* \_/xxxx\_/ */
 };
 
+enum{
+    DEBORDER_ALL=0, 
+    DEBORDER_TB,
+    DEBORDER_LR
+};
+
 
 enum{
     DEALIGN_LEFT=0,
@@ -42,6 +48,7 @@ enum{
 DECLSTRUCT(DEBorder){
     uint sh, hl, pad;
     uint style;
+    uint sides;
 };
 
 
index 0756556ab21add3c2e346ea0d27816795b8b8b5a..00fe495eaf7ed7e1208182371fcf3757a612bd69 100644 (file)
@@ -1,3 +1,30 @@
+2007-03-18 20:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  tagged ion-doc-3ds-20070318
+
+2007-03-17 19:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * cfg_ion.lua walkthrough updates
+
+2007-03-17 11:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * border_sides doc
+
+2007-02-25 19:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Note on "userpos" winprop.
+
+2007-02-20 02:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Winprop doc updates
+
+2007-02-20 02:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed outdated winprop
+
+2007-02-19 16:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Updated manager-managed figure
+
+2007-02-03 17:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, still missing some statusbar stuff
+
+2007-02-03 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Minor fixes
+
 2007-02-03 15:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-doc-3ds-20070203
 
index 9a416d3ec0c20bf50db277185d25f23067e2d0c5..e564b47331f8110f7df4a007b4521bd9115afe43 100644 (file)
@@ -41,13 +41,6 @@ usual method of identifying windows, and how to obtain this information.
 \end{winprop}
 
 
-\begin{winprop}{aspect}{table}
-    \index{aspect@\var{aspect}}
-    The table should contain the entries \var{w} and \var{h} that
-    override application-supplied aspect ratio hint.
-\end{winprop}
-
-
 \begin{winprop}{float}{boolean}
     \index{float@\var{float}}
     Set this to open the window in a floating frame, when
@@ -74,12 +67,6 @@ usual method of identifying windows, and how to obtain this information.
 \end{winprop}
 
 
-\begin{winprop}{ignore_resizeinc}{boolean}
-    \index{ignore-resizeinc@\var{ignore_resizeinc}}
-    Should application supplied size increments be ignored?
-\end{winprop}
-
-
 \begin{winprop}{jumpto}{boolean}
     \index{jumpto@\var{jumpto}}
     Should a newly created client window always be made
@@ -87,19 +74,6 @@ usual method of identifying windows, and how to obtain this information.
 \end{winprop}
 
 
-\begin{winprop}{max_size}{table}
-    \index{max-size@\var{max_size}}
-    The table should contain the entries \var{w} and \var{h} that
-    override application-supplied maximum size hint. 
-\end{winprop}
-
-
-\begin{winprop}{min_size}{table}
-    \index{min-size@\var{min_size}}
-    Similar to \var{max_size} but for the minimum size hint. 
-\end{winprop}
-
-
 \begin{winprop}{new_group}{string}
     \index{new-group@\var{new_group}}
     If the region specified by \code{target} winprop does not exist
@@ -119,10 +93,10 @@ usual method of identifying windows, and how to obtain this information.
 
 \begin{winprop}{statusbar}{string}
     \index{statusbar@\var{statusbar}}
-    Put the window on the statusbar, in the named tray component,
-    (The default tray component is called simply ``\code{systray}''
+    Put the window in the statusbar, in the named tray component,
+    (The default tray component is called simply \code{"systray"}
     and others you give names to in your custom template, always 
-    prefixed by ``\code{systray_}''.
+    prefixed by \code{"systray_"}.
 \end{winprop}
 
 
@@ -142,29 +116,45 @@ usual method of identifying windows, and how to obtain this information.
         
 \begin{winprop}{transient_mode}{string}
     \index{transient-mode@\var{transient_mode}}
-    "normal": No change in behaviour. "current": The window
-    should be thought of as a transient for the current active
-    client window (if any) even if it is not marked as a
-    transient by the application. "off": The window should be
-    handled as a normal window even if it is marked as a
+    \code{"normal"}: No change in behaviour. \code{"current"}:
+    The window should be thought of as a transient for the current
+    active client window (if any) even if it is not marked as a
+    transient by the application. \code{"off"}: The window should 
+    be handled as a normal window even if it is marked as a
     transient by the application. 
 \end{winprop}
 
 
-\begin{winprop}{transients_at_top}{boolean}
-    \index{transients-at-top@\var{transients_at_top}}
-    When transients are managed by the client window itself (as it
-    is the case on tiled workspaces), should the transients be
-    placed at the top of the window instead of bottom? 
-\end{winprop}
-
-
 \begin{winprop}{transparent}{boolean}
     \index{transparent@\var{transparent}}
     Should frames be made transparent when this window is selected? \\
 \end{winprop}
 
 
+\subsection{Sizehint winprops}
+
+Additionally, the winprops 
+\code{max_size}\index{max-size@\var{max_size}},
+\code{min_size}\index{min-size@\var{min_size}},
+\code{aspect}\index{aspect@\var{aspect}},
+\code{resizeinc}\index{aspect@\var{resizeinc}},
+and
+\code{ignore_max_size}\index{ignore-max-size@\var{ignore_max_size}},
+\code{ignore_min_size}\index{ignore-min-size@\var{ignore_min_size}},
+\code{ignore_aspect}\index{ignore-aspect@\var{ignore_aspect}},
+\code{ignore_resizeinc}\index{ignore-aspect@\var{ignore_resizeinc}},
+may be used to override application-supplied size hints. The four
+first ones are tables with the fields \var{w} and \var{h}, indicating
+the width and height size hints in pixels, and the latter ignore
+winprop is a boolean. 
+
+Finally, the boolean
+\code{userpos}\index{userpos@\var{userpos}} option may be used to
+override the \code{USPosition} flag of the size hints. Normally,
+when this flag is set, Ion tries to respect the supplied window
+position more than when it is not set. Obviously, this makes sense
+only for floating windows.
+
 
 \subsection{Classes, roles and instances}
 \label{sec:classesrolesinstances}
index 109093bdf49b659152fa7a1a7db417bc32b90d34..eb0f565067373710401e1c1be0ac38bae246b793 100644 (file)
@@ -69,6 +69,9 @@ files:
     Settings to get some applications behave more nicely have been 
     collected here. See section \ref{sec:winprops}. \\
     %
+    \file{cfg\_layouts.lua} & 
+    Some workspace layouts are defined here. \\
+    %
     \file{cfg\_tiling.lua} 
     \file{cfg\_query.lua} 
     \file{cfg\_menu.lua} 
@@ -125,13 +128,23 @@ The first of these two settings enables opaque resize mode: in move/resize
 move frames and other objects mirror you actions immediately. If opaque
 resize is disabled, a XOR rubber band is shown during the mode instead.
 This will, unfortunately, cause Ion to also grab the X server and has some
-side effects.
+side effects. 
+
+There are some other options as well; see the documentation
+for \fnref{ioncore.set} for details.
 
-Next we load the configuration for Ion's core, and some kludges:
+As a next step, in the actual \file{cfg\_ion.lua} file, we load
+\file{cfg\_defaults.lua}. However, it is merely a conveniency file for
+doing exactly what we will going through below, and what is commented
+out in the actual file. If you do not want to load what 
+\file{cfg\_defaults.lua} loads, just comment out the corresponding 
+line, and uncomment the lines for the files that you want:
 
 \begin{verbatim}
+--dopath("cfg_defaults")
 dopath("cfg_ioncore")
 dopath("cfg_kludges")
+dopath("cfg_layouts")
 \end{verbatim}
 
 Most bindings and menus are defined in \file{cfg\_ioncore.lua}.
@@ -150,26 +163,21 @@ expression that is used to match against the title and the next is
 a rule to construct a new title of a match occurs. This particular
 rule is used to shorten e.g. 'Foo: barbaz<3>' to 'barba{\ldots}<3>'; for
 details see the function reference entry for \fnref{ioncore.defshortening}.
+Finally, \file{cfg\_layouts.lua} defines some workspace layouts, available
+through the \key{F9} workspace creation query.
 
 To actually be able to do something besides display windows in full screen
 mode, we must next load some modules:
 
 \begin{verbatim}
-dopath("cfg_modules")
---dopath("mod_query")
---dopath("mod_menu")
---dopath("mod_tiling")
---dopath("mod_statusbar")
+dopath("mod_query")
+dopath("mod_menu")
+dopath("mod_tiling")
+dopath("mod_statusbar")
 --dopath("mod_dock")
---dopath("mod_sp")
+dopath("mod_sp")
 \end{verbatim}
 
-We actually load there another file listing the default selection of
-modules. If you only want to load additional modules, just uncomment
-the corresponding line. If you want to disable loading some modules,
-comment out the the line loading \file{cfg\_modules}, and uncomment
-the lines for the modules you want, or add more.
-
 
 \input{conf-bindings.tex}
 
index ceba206bbd189f858b3855d4805051ba646c4926..4697dc6912d1eb6ef006da7491a5bc25c507fd1e 100644 (file)
@@ -254,6 +254,10 @@ indicating a number of pixels.
 \var{border_style} & A string indicating the style of border; one of
                     elevated/inlaid/ridge/groove as seen in the
                     above sketch. \\
+\var{border_sides} & A string indicating which sides of the border
+                     to draw: all/tb/lr for all, top and bottom, and
+                     left and right. To control between left/right
+                     and top/bottom, use the pixel options below. \\
 \var{highlight_pixels} &  
        Width of the highlight part of the border in pixels. \\
 \var{shadow_pixels}    &  
index 40b3215f2e26ccb3711cdc3de67267a8e6107f76..483b16406d3129e778a72b7f938a400cc54df1ee 100644 (file)
@@ -1,5 +1,5 @@
 
 Context:
 
-[TAG ion-doc-3ds-20070203
-Tuomo Valkonen <tuomov@iki.fi>**20070203150437
+[TAG ion-doc-3ds-20070318
+Tuomo Valkonen <tuomov@iki.fi>**20070318200902
index c270a5ac37f924bb4dda2cc9ef12cbba26df3427..c0590b6c7089c4812e2cf0fb62355942f981ca13 100644 (file)
 \label{sec:spref}
 \input{mod_sp-fns.tex}
 
+\section{Functions defined in \file{mod\_statusbar}}
+\label{sec:statusbarref}
+\input{mod_statusbar-fns.tex}
+
 \section{Functions defined in \file{de}}
 \label{sec:deref}
 \input{de-fns.tex}
index 7d7c9340cf2735c1e6c3f03973b6a51223566111..acdd8088aa7b8987e290b0e4a02d1d75bfe4d2b1 100644 (file)
Binary files a/doc/ionconf.dvi.gz and b/doc/ionconf.dvi.gz differ
index 2f1b8ec29be35836f5699ed363aa84e7b86a3e60..7882440c930aa397033cec0f767c76dea63cf992 100644 (file)
 \BOOKMARK [2][-]{subsection.3.4.3}{ Defining context menus}{section.3.4}
 \BOOKMARK [2][-]{subsection.3.4.4}{ Displaying menus}{section.3.4}
 \BOOKMARK [1][-]{section.3.5}{ Winprops}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.5.1}{ Classes, roles and instances}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.2}{ Finding window identification}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.3}{ Some common examples}{section.3.5}
+\BOOKMARK [2][-]{subsection.3.5.1}{ Sizehint winprops}{section.3.5}
+\BOOKMARK [2][-]{subsection.3.5.2}{ Classes, roles and instances}{section.3.5}
+\BOOKMARK [2][-]{subsection.3.5.3}{ Finding window identification}{section.3.5}
+\BOOKMARK [2][-]{subsection.3.5.4}{ Some common examples}{section.3.5}
 \BOOKMARK [0][-]{chapter.4}{ Graphical styles}{}
 \BOOKMARK [1][-]{section.4.1}{ Drawing engines, style specifications and sub-styles}{chapter.4}
 \BOOKMARK [2][-]{subsection.4.1.1}{ Known styles and substyles}{section.4.1}
 \BOOKMARK [2][-]{subsection.4.2.2}{ Defining the styles}{section.4.2}
 \BOOKMARK [2][-]{subsection.4.2.3}{ An example}{section.4.2}
 \BOOKMARK [1][-]{section.4.3}{ Miscellaneous settings}{chapter.4}
-\BOOKMARK [2][-]{lstlisting.4.-390}{ Extra fields for style !frame!}{section.4.3}
-\BOOKMARK [2][-]{lstlisting.4.-412}{ Extra fields for style !dock!}{section.4.3}
+\BOOKMARK [2][-]{lstlisting.4.-399}{ Extra fields for style !frame!}{section.4.3}
+\BOOKMARK [2][-]{lstlisting.4.-421}{ Extra fields for style !dock!}{section.4.3}
 \BOOKMARK [0][-]{chapter.5}{ Scripting}{}
 \BOOKMARK [1][-]{section.5.1}{ Hooks}{chapter.5}
 \BOOKMARK [1][-]{section.5.2}{ Referring to regions}{chapter.5}
 \BOOKMARK [2][-]{subsection.5.2.1}{ Direct object references}{section.5.2}
 \BOOKMARK [2][-]{subsection.5.2.2}{ Name-based lookups}{section.5.2}
 \BOOKMARK [1][-]{section.5.3}{ Alternative winprop selection criteria}{chapter.5}
-\BOOKMARK [1][-]{lstlisting.5.-453}{ Writing !ion-statusd! monitors}{chapter.5}
+\BOOKMARK [1][-]{lstlisting.5.-462}{ Writing !ion-statusd! monitors}{chapter.5}
 \BOOKMARK [0][-]{chapter.6}{ Function reference}{}
 \BOOKMARK [1][-]{section.6.1}{ Functions defined in ioncore}{chapter.6}
 \BOOKMARK [2][-]{subsection.6.1.1}{ WClientWin functions}{section.6.1}
 \BOOKMARK [1][-]{section.6.5}{ Functions defined in mod\137dock}{chapter.6}
 \BOOKMARK [2][-]{subsection.6.5.1}{ WDock functions}{section.6.5}
 \BOOKMARK [1][-]{section.6.6}{ Functions defined in mod\137sp}{chapter.6}
-\BOOKMARK [1][-]{section.6.7}{ Functions defined in de}{chapter.6}
-\BOOKMARK [1][-]{section.6.8}{ Hooks}{chapter.6}
+\BOOKMARK [1][-]{section.6.7}{ Functions defined in mod\137statusbar}{chapter.6}
+\BOOKMARK [2][-]{subsection.6.7.1}{ WStatusBar functions}{section.6.7}
+\BOOKMARK [1][-]{section.6.8}{ Functions defined in de}{chapter.6}
+\BOOKMARK [1][-]{section.6.9}{ Hooks}{chapter.6}
 \BOOKMARK [0][-]{appendix.A}{ The GNU General Public License}{}
 \BOOKMARK [0][-]{appendix.B}{ Full class hierarchy visible to Lua-side}{}
 \BOOKMARK [0][-]{section*.17}{Index}{}
index 6103c983afaf4770dc2fec216e7dfa6746cec5ab..3f368d759a705b891ca95f54443e24027c03494e 100644 (file)
Binary files a/doc/ionconf.ps.gz and b/doc/ionconf.ps.gz differ
index 3f229042d3235c84a4803a3c56a67f3e4515502a..b12cb1741cba47d316e5ad4e9bba450cb8b752e6 100644 (file)
@@ -10,7 +10,7 @@
 
 \title{Configuring and extending Ion3 with Lua}
 \author{Tuomo Valkonen \\ tuomov at iki.fi}
-\date{2007-02-03}
+\date{2007-03-18}
 
 \makeindex
 
index 3fec32ad3f25847ad4b069d224c03079e8ded481..2475ca58f3e2f8cab3e9f2076f075c5dc9d11549 100644 (file)
@@ -1,4 +1,4 @@
-This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=latex 2006.11.18)  3 FEB 2007 17:05
+This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=latex 2007.2.4)  18 MAR 2007 22:35
 entering extended mode
 **./images.tex
 (./images.tex
@@ -353,13 +353,13 @@ LaTeX Font Info:    External font `cmex10' loaded for size
 (Font)              <8> on input line 235.
 LaTeX Font Info:    External font `cmex10' loaded for size
 (Font)              <6> on input line 235.
-l2hSize :tex2html_wrap_inline1027:7.0626pt::0.0pt::7.1201pt.
+l2hSize :tex2html_wrap_inline1041:7.0626pt::0.0pt::7.1201pt.
 [1
 
 
 
 ]
-l2hSize :tex2html_wrap_inline1031:7.48248pt::0.0pt::48.86426pt.
+l2hSize :tex2html_wrap_inline1045:7.48248pt::0.0pt::48.86426pt.
 [2
 
 
@@ -369,26 +369,26 @@ l2hSize :tex2html_wrap_inline2020:8.7125pt::8.7125pt::23.6642pt.
 
 
 ]
-l2hSize :tex2html_wrap_inline6229:7.5626pt::7.5626pt::14.53923pt.
+l2hSize :tex2html_wrap_inline6387:7.5626pt::7.5626pt::14.53923pt.
 [4
 
 
 ]
-l2hSize :tex2html_wrap_inline6231:7.5626pt::7.5626pt::14.53923pt.
+l2hSize :tex2html_wrap_inline6389:7.5626pt::7.5626pt::14.53923pt.
 [5
 
 
 ]
-l2hSize :tex2html_wrap_inline9215:8.7125pt::8.7125pt::86.9574pt.
+l2hSize :tex2html_wrap_inline9409:8.7125pt::8.7125pt::86.9574pt.
 [6
 
 
 ] (./images.aux) ) 
 Here is how much of TeX's memory you used:
- 4428 strings out of 94501
- 62589 string characters out of 1175793
- 121255 words of memory out of 1000000
- 7572 multiletter control sequences out of 10000+50000
+ 4443 strings out of 94501
+ 62984 string characters out of 1175795
+ 122206 words of memory out of 1000000
+ 7587 multiletter control sequences out of 10000+50000
  7874 words of font info for 24 fonts, out of 500000 for 2000
  580 hyphenation exceptions out of 8191
  28i,5n,21p,200b,182s stack positions out of 1500i,500n,5000p,200000b,5000s
index fa6a16962eeb38af39a68ade5cef671df39de4ab..8ab5731b501b539fb85e3b1706665eea82ca292b 100644 (file)
@@ -82,7 +82,7 @@
 
 \title{Configuring and extending Ion3 with Lua}
 \author{Tuomo Valkonen \\tuomov at iki.fi}
-\date{2007-02-03}
+\date{2007-03-18}
 
 
 \makeindex
 \stepcounter{section}
 \stepcounter{section}
 {\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline1027}%
+\lthtmlinlinemathA{tex2html_wrap_inline1041}%
 $n$%
 \lthtmlinlinemathZ
 \lthtmlcheckvsize\clearpage}
@@ -242,7 +242,7 @@ $n$%
 \stepcounter{subsection}
 \stepcounter{subsection}
 {\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline1031}%
+\lthtmlinlinemathA{tex2html_wrap_inline1045}%
 $N=1{\ldots} 5$%
 \lthtmlinlinemathZ
 \lthtmlcheckvsize\clearpage}
@@ -272,6 +272,7 @@ $N=1{\ldots} 5$%
 \stepcounter{subsection}
 \stepcounter{subsection}
 \stepcounter{subsection}
+\stepcounter{subsection}
 \stepcounter{subsubsection}
 \stepcounter{subsubsection}
 \stepcounter{subsubsection}
@@ -316,13 +317,13 @@ $(0, 1]$%
 \stepcounter{subsection}
 \stepcounter{subsection}
 {\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline6229}%
+\lthtmlinlinemathA{tex2html_wrap_inline6387}%
 $-1$%
 \lthtmlinlinemathZ
 \lthtmlcheckvsize\clearpage}
 
 {\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline6231}%
+\lthtmlinlinemathA{tex2html_wrap_inline6389}%
 $-2$%
 \lthtmlinlinemathZ
 \lthtmlcheckvsize\clearpage}
@@ -351,13 +352,15 @@ $-2$%
 \stepcounter{section}
 \stepcounter{subsection}
 {\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline9215}%
+\lthtmlinlinemathA{tex2html_wrap_inline9409}%
 $\{t,m,b\}\times\{t,c,b\}$%
 \lthtmlinlinemathZ
 \lthtmlcheckvsize\clearpage}
 
 \stepcounter{section}
 \stepcounter{section}
+\stepcounter{subsection}
+\stepcounter{section}
 \stepcounter{section}
 \appendix
 \stepcounter{chapter}
index b693be42b8253cabaa865281ae84808356686a4f..a2f4405494e52ad41ef87334dde92b648547f917 100644 (file)
@@ -57,7 +57,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 
 <P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
 <P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-<P ALIGN="CENTER"><STRONG>2007-02-03</STRONG></P>
+<P ALIGN="CENTER"><STRONG>2007-03-18</STRONG></P>
 </DIV>
 
 <P>
@@ -151,187 +151,195 @@ chapter entitled ''GNU General Public License'' for more details.
   HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
 <UL>
 <LI><A NAME="tex2html48"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Classes, roles and instances</A>
+  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
 <LI><A NAME="tex2html49"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Finding window identification</A>
+  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
 <LI><A NAME="tex2html50"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Some common examples</A>
-<UL>
+  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
 <LI><A NAME="tex2html51"
-  HREF="node4.html#SECTION00453100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
+  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
+<UL>
 <LI><A NAME="tex2html52"
-  HREF="node4.html#SECTION00453200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
 <LI><A NAME="tex2html53"
-  HREF="node4.html#SECTION00453300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
+  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+<LI><A NAME="tex2html54"
+  HREF="node4.html#SECTION00454300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
 </UL>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html54"
+<LI><A NAME="tex2html55"
   HREF="node5.html"><SPAN CLASS="arabic">4</SPAN>. Graphical styles</A>
 <UL>
-<LI><A NAME="tex2html55"
+<LI><A NAME="tex2html56"
   HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
 <UL>
-<LI><A NAME="tex2html56"
+<LI><A NAME="tex2html57"
   HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
 <UL>
-<LI><A NAME="tex2html57"
-  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
 <LI><A NAME="tex2html58"
-  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
+  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
 <LI><A NAME="tex2html59"
+  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
+<LI><A NAME="tex2html60"
   HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
 </UL>
 </UL>
-<LI><A NAME="tex2html60"
+<LI><A NAME="tex2html61"
   HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
 <UL>
-<LI><A NAME="tex2html61"
-  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
 <LI><A NAME="tex2html62"
+  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
+<LI><A NAME="tex2html63"
   HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
 <UL>
-<LI><A NAME="tex2html63"
-  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
 <LI><A NAME="tex2html64"
-  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
+  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
 <LI><A NAME="tex2html65"
-  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
+  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
 <LI><A NAME="tex2html66"
-  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
+  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
 <LI><A NAME="tex2html67"
+  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
+<LI><A NAME="tex2html68"
   HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
 </UL>
-<LI><A NAME="tex2html68"
+<LI><A NAME="tex2html69"
   HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
 </UL>
-<LI><A NAME="tex2html69"
+<LI><A NAME="tex2html70"
   HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
 <UL>
-<LI><A NAME="tex2html70"
-  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Extra fields for style <TT>frame</TT></A>
 <LI><A NAME="tex2html71"
+  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Extra fields for style <TT>frame</TT></A>
+<LI><A NAME="tex2html72"
   HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style <TT>dock</TT></A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html72"
+<LI><A NAME="tex2html73"
   HREF="node6.html"><SPAN CLASS="arabic">5</SPAN>. Scripting</A>
 <UL>
-<LI><A NAME="tex2html73"
-  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
 <LI><A NAME="tex2html74"
+  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
+<LI><A NAME="tex2html75"
   HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
 <UL>
-<LI><A NAME="tex2html75"
-  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
 <LI><A NAME="tex2html76"
+  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
+<LI><A NAME="tex2html77"
   HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
 </UL>
-<LI><A NAME="tex2html77"
-  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
 <LI><A NAME="tex2html78"
+  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
+<LI><A NAME="tex2html79"
   HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html79"
+<LI><A NAME="tex2html80"
   HREF="node7.html"><SPAN CLASS="arabic">6</SPAN>. Function reference</A>
 <UL>
-<LI><A NAME="tex2html80"
+<LI><A NAME="tex2html81"
   HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
 <UL>
-<LI><A NAME="tex2html81"
-  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
 <LI><A NAME="tex2html82"
-  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
+  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
 <LI><A NAME="tex2html83"
-  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
+  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
 <LI><A NAME="tex2html84"
-  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
+  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
 <LI><A NAME="tex2html85"
-  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
+  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
 <LI><A NAME="tex2html86"
-  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
+  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
 <LI><A NAME="tex2html87"
-  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
+  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
 <LI><A NAME="tex2html88"
-  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
+  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
 <LI><A NAME="tex2html89"
-  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
+  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
 <LI><A NAME="tex2html90"
-  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
+  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
 <LI><A NAME="tex2html91"
-  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
+  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
 <LI><A NAME="tex2html92"
-  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
+  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
 <LI><A NAME="tex2html93"
-  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
+  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
 <LI><A NAME="tex2html94"
-  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
+  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
 <LI><A NAME="tex2html95"
-  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
+  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
 <LI><A NAME="tex2html96"
+  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
+<LI><A NAME="tex2html97"
   HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
 </UL>
-<LI><A NAME="tex2html97"
+<LI><A NAME="tex2html98"
   HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
 <UL>
-<LI><A NAME="tex2html98"
-  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
 <LI><A NAME="tex2html99"
-  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
+  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
 <LI><A NAME="tex2html100"
-  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
+  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
 <LI><A NAME="tex2html101"
-  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
+  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
 <LI><A NAME="tex2html102"
+  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
+<LI><A NAME="tex2html103"
   HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
 </UL>
-<LI><A NAME="tex2html103"
+<LI><A NAME="tex2html104"
   HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
 <UL>
-<LI><A NAME="tex2html104"
-  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
 <LI><A NAME="tex2html105"
-  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
+  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
 <LI><A NAME="tex2html106"
+  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
+<LI><A NAME="tex2html107"
   HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
 </UL>
-<LI><A NAME="tex2html107"
+<LI><A NAME="tex2html108"
   HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
 <UL>
-<LI><A NAME="tex2html108"
+<LI><A NAME="tex2html109"
   HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
 </UL>
-<LI><A NAME="tex2html109"
+<LI><A NAME="tex2html110"
   HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
 <UL>
-<LI><A NAME="tex2html110"
+<LI><A NAME="tex2html111"
   HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
 </UL>
-<LI><A NAME="tex2html111"
-  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
 <LI><A NAME="tex2html112"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
+  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
 <LI><A NAME="tex2html113"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks</A>
+  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
+<UL>
+<LI><A NAME="tex2html114"
+  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
+</UL>
+<LI><A NAME="tex2html115"
+  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
+<LI><A NAME="tex2html116"
+  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html114"
+<LI><A NAME="tex2html117"
   HREF="node8.html">A. The GNU General Public License</A>
 <UL>
-<LI><A NAME="tex2html115"
+<LI><A NAME="tex2html118"
   HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html116"
+<LI><A NAME="tex2html119"
   HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html117"
+<LI><A NAME="tex2html120"
   HREF="node10.html">List of functions</A>
-<LI><A NAME="tex2html118"
+<LI><A NAME="tex2html121"
   HREF="node11.html">Index</A>
-<LI><A NAME="tex2html119"
+<LI><A NAME="tex2html122"
   HREF="node12.html">About this document ...</A>
 </UL>
 <!--End of Table of Child-Links-->
index 28350c3e5b9226d5b0be5a452c8c03cb0172ec1c..0c3453a8e4119e81c0c2f46ff08514dff591c2c2 100644 (file)
@@ -122,6 +122,10 @@ $key = q/sec:ioncoreref/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_statusbar.statusbars/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.defbindings/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -130,11 +134,11 @@ $key = q/fn:ioncore.get/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WComplProxy.set_completions/;
+$key = q/fn:WWindow.p_resize/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WWindow.p_resize/;
+$key = q/fn:WComplProxy.set_completions/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -194,6 +198,10 @@ $key = q/fn:WMoveresMode.resize/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.is_systray_extl/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMenu.select_nth/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -322,6 +330,10 @@ $key = q/fn:WWindow.xid/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/sec:statusbarref/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WClientWin.get_ident/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -370,6 +382,10 @@ $key = q/fn:ioncore.clientwin_i/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.tagged_clear/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WRegion.screen_of/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -378,6 +394,10 @@ $key = q/fn:WMPlex.switch_next/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.unsqueeze/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WGroup.bottom/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -442,6 +462,10 @@ $key = q/chap:tricks/;
 $ref_files{$key} = "$dir".q|node6.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.groupleader_of/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.get_savefile/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -478,6 +502,14 @@ $key = q/fn:ioncore.getctxmenu/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.rqgeom/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/fn:WStatusBar.get_template_table/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WFrame.maximize_horiz/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -486,11 +518,11 @@ $key = q/fn:ioncore.region_i/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WWindow.p_move/;
+$key = q/fn:WGroup.is_fullscreen/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WGroup.is_fullscreen/;
+$key = q/fn:WWindow.p_move/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -502,11 +534,11 @@ $key = q/fn:WScreen.set_managed_offset/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:mod_query.set/;
+$key = q/fn:ioncore.get_dir_for/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:ioncore.get_dir_for/;
+$key = q/fn:mod_query.set/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -662,6 +694,10 @@ $key = q/fn:mod_query.message/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_tiling.untile/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.compile_cmd/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -678,10 +714,6 @@ $key = q/fn:ioncore.submenu/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMPlex.attach_tagged/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WSplitSplit.br/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -762,6 +794,10 @@ $key = q/sec:classesrolesinstances/;
 $ref_files{$key} = "$dir".q|node4.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.tagged_attach/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WRegion.is_tagged/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -782,6 +818,10 @@ $key = q/fn:WClientWin.nudge/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.geom/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.goto_nth_screen/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -826,6 +866,10 @@ $key = q/fn:ioncore.mclick/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.update/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMPlex.set_index/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -934,6 +978,10 @@ $key = q/fn:ioncore.popen_bgread/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_systray/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.mdrag/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -950,10 +998,6 @@ $key = q/ioncore_snapshot_hook/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:ioncore.clear_tags/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:table.map/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -986,11 +1030,11 @@ $key = q/fn:WRegion.parent/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMenu.finish/;
+$key = q/fn:WEdln.back/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WEdln.back/;
+$key = q/fn:WMenu.finish/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1018,7 +1062,7 @@ $key = q/fn:WTiling.transpose_at/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/clientwin_do_manage_alt/;
+$key = q/fn:WRegion.rootwin_of/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1026,7 +1070,7 @@ $key = q/fn:WMPlex.mx_i/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WRegion.rootwin_of/;
+$key = q/clientwin_do_manage_alt/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1038,6 +1082,10 @@ $key = q/ioncore_sigchld_hook/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_template_table/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WTiling.nextto/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1138,6 +1186,10 @@ $key = q/fig:parentship/;
 $ref_files{$key} = "$dir".q|node3.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_template/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.read_savefile/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1206,6 +1258,10 @@ $key = q/fn:WMPlex.is_hidden/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.get_configuration/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_menu.get/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1222,6 +1278,10 @@ $key = q/fn:WEdln.eol/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WGroup.set_bottom/;
+$ref_files{$key} = "$dir".q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_query.defcmd/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1286,11 +1346,11 @@ $key = q/fn:WEdln.skip_word/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WEdln.complete/;
+$key = q/fn:WGroup.attach_new/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WGroup.attach_new/;
+$key = q/fn:WEdln.complete/;
 $ref_files{$key} = "$dir".q|node7.html|; 
 $noresave{$key} = "$nosave";
 
index b693be42b8253cabaa865281ae84808356686a4f..a2f4405494e52ad41ef87334dde92b648547f917 100644 (file)
@@ -57,7 +57,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 
 <P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
 <P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-<P ALIGN="CENTER"><STRONG>2007-02-03</STRONG></P>
+<P ALIGN="CENTER"><STRONG>2007-03-18</STRONG></P>
 </DIV>
 
 <P>
@@ -151,187 +151,195 @@ chapter entitled ''GNU General Public License'' for more details.
   HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
 <UL>
 <LI><A NAME="tex2html48"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Classes, roles and instances</A>
+  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
 <LI><A NAME="tex2html49"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Finding window identification</A>
+  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
 <LI><A NAME="tex2html50"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Some common examples</A>
-<UL>
+  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
 <LI><A NAME="tex2html51"
-  HREF="node4.html#SECTION00453100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
+  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
+<UL>
 <LI><A NAME="tex2html52"
-  HREF="node4.html#SECTION00453200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
 <LI><A NAME="tex2html53"
-  HREF="node4.html#SECTION00453300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
+  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+<LI><A NAME="tex2html54"
+  HREF="node4.html#SECTION00454300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
 </UL>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html54"
+<LI><A NAME="tex2html55"
   HREF="node5.html"><SPAN CLASS="arabic">4</SPAN>. Graphical styles</A>
 <UL>
-<LI><A NAME="tex2html55"
+<LI><A NAME="tex2html56"
   HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
 <UL>
-<LI><A NAME="tex2html56"
+<LI><A NAME="tex2html57"
   HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
 <UL>
-<LI><A NAME="tex2html57"
-  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
 <LI><A NAME="tex2html58"
-  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
+  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
 <LI><A NAME="tex2html59"
+  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
+<LI><A NAME="tex2html60"
   HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
 </UL>
 </UL>
-<LI><A NAME="tex2html60"
+<LI><A NAME="tex2html61"
   HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
 <UL>
-<LI><A NAME="tex2html61"
-  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
 <LI><A NAME="tex2html62"
+  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
+<LI><A NAME="tex2html63"
   HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
 <UL>
-<LI><A NAME="tex2html63"
-  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
 <LI><A NAME="tex2html64"
-  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
+  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
 <LI><A NAME="tex2html65"
-  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
+  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
 <LI><A NAME="tex2html66"
-  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
+  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
 <LI><A NAME="tex2html67"
+  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
+<LI><A NAME="tex2html68"
   HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
 </UL>
-<LI><A NAME="tex2html68"
+<LI><A NAME="tex2html69"
   HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
 </UL>
-<LI><A NAME="tex2html69"
+<LI><A NAME="tex2html70"
   HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
 <UL>
-<LI><A NAME="tex2html70"
-  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Extra fields for style <TT>frame</TT></A>
 <LI><A NAME="tex2html71"
+  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Extra fields for style <TT>frame</TT></A>
+<LI><A NAME="tex2html72"
   HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style <TT>dock</TT></A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html72"
+<LI><A NAME="tex2html73"
   HREF="node6.html"><SPAN CLASS="arabic">5</SPAN>. Scripting</A>
 <UL>
-<LI><A NAME="tex2html73"
-  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
 <LI><A NAME="tex2html74"
+  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
+<LI><A NAME="tex2html75"
   HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
 <UL>
-<LI><A NAME="tex2html75"
-  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
 <LI><A NAME="tex2html76"
+  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
+<LI><A NAME="tex2html77"
   HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
 </UL>
-<LI><A NAME="tex2html77"
-  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
 <LI><A NAME="tex2html78"
+  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
+<LI><A NAME="tex2html79"
   HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html79"
+<LI><A NAME="tex2html80"
   HREF="node7.html"><SPAN CLASS="arabic">6</SPAN>. Function reference</A>
 <UL>
-<LI><A NAME="tex2html80"
+<LI><A NAME="tex2html81"
   HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
 <UL>
-<LI><A NAME="tex2html81"
-  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
 <LI><A NAME="tex2html82"
-  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
+  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
 <LI><A NAME="tex2html83"
-  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
+  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
 <LI><A NAME="tex2html84"
-  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
+  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
 <LI><A NAME="tex2html85"
-  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
+  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
 <LI><A NAME="tex2html86"
-  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
+  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
 <LI><A NAME="tex2html87"
-  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
+  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
 <LI><A NAME="tex2html88"
-  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
+  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
 <LI><A NAME="tex2html89"
-  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
+  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
 <LI><A NAME="tex2html90"
-  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
+  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
 <LI><A NAME="tex2html91"
-  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
+  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
 <LI><A NAME="tex2html92"
-  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
+  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
 <LI><A NAME="tex2html93"
-  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
+  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
 <LI><A NAME="tex2html94"
-  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
+  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
 <LI><A NAME="tex2html95"
-  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
+  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
 <LI><A NAME="tex2html96"
+  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
+<LI><A NAME="tex2html97"
   HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
 </UL>
-<LI><A NAME="tex2html97"
+<LI><A NAME="tex2html98"
   HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
 <UL>
-<LI><A NAME="tex2html98"
-  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
 <LI><A NAME="tex2html99"
-  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
+  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
 <LI><A NAME="tex2html100"
-  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
+  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
 <LI><A NAME="tex2html101"
-  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
+  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
 <LI><A NAME="tex2html102"
+  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
+<LI><A NAME="tex2html103"
   HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
 </UL>
-<LI><A NAME="tex2html103"
+<LI><A NAME="tex2html104"
   HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
 <UL>
-<LI><A NAME="tex2html104"
-  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
 <LI><A NAME="tex2html105"
-  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
+  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
 <LI><A NAME="tex2html106"
+  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
+<LI><A NAME="tex2html107"
   HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
 </UL>
-<LI><A NAME="tex2html107"
+<LI><A NAME="tex2html108"
   HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
 <UL>
-<LI><A NAME="tex2html108"
+<LI><A NAME="tex2html109"
   HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
 </UL>
-<LI><A NAME="tex2html109"
+<LI><A NAME="tex2html110"
   HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
 <UL>
-<LI><A NAME="tex2html110"
+<LI><A NAME="tex2html111"
   HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
 </UL>
-<LI><A NAME="tex2html111"
-  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
 <LI><A NAME="tex2html112"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
+  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
 <LI><A NAME="tex2html113"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks</A>
+  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
+<UL>
+<LI><A NAME="tex2html114"
+  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
+</UL>
+<LI><A NAME="tex2html115"
+  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
+<LI><A NAME="tex2html116"
+  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html114"
+<LI><A NAME="tex2html117"
   HREF="node8.html">A. The GNU General Public License</A>
 <UL>
-<LI><A NAME="tex2html115"
+<LI><A NAME="tex2html118"
   HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html116"
+<LI><A NAME="tex2html119"
   HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html117"
+<LI><A NAME="tex2html120"
   HREF="node10.html">List of functions</A>
-<LI><A NAME="tex2html118"
+<LI><A NAME="tex2html121"
   HREF="node11.html">Index</A>
-<LI><A NAME="tex2html119"
+<LI><A NAME="tex2html122"
   HREF="node12.html">About this document ...</A>
 </UL>
 <!--End of Table of Child-Links-->
index 2d6ca3ca12cae0d63b7aa3902f09cabecf8d01b6..a14d1d0bdf35bbc170b45fa21204ef9eb439cd71 100644 (file)
@@ -122,6 +122,10 @@ $key = q/sec:ioncoreref/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_statusbar.statusbars/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.defbindings/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -130,11 +134,11 @@ $key = q/fn:ioncore.get/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WComplProxy.set_completions/;
+$key = q/fn:WWindow.p_resize/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WWindow.p_resize/;
+$key = q/fn:WComplProxy.set_completions/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -194,6 +198,10 @@ $key = q/fn:WMoveresMode.resize/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.is_systray_extl/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMenu.select_nth/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -322,6 +330,10 @@ $key = q/fn:WWindow.xid/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/sec:statusbarref/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WClientWin.get_ident/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -370,6 +382,10 @@ $key = q/fn:ioncore.clientwin_i/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.tagged_clear/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WRegion.screen_of/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -378,6 +394,10 @@ $key = q/fn:WMPlex.switch_next/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.unsqueeze/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WGroup.bottom/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -442,6 +462,10 @@ $key = q/chap:tricks/;
 $external_labels{$key} = "$URL/" . q|node6.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.groupleader_of/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.get_savefile/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -478,6 +502,14 @@ $key = q/fn:ioncore.getctxmenu/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.rqgeom/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
+$key = q/fn:WStatusBar.get_template_table/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WFrame.maximize_horiz/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -486,11 +518,11 @@ $key = q/fn:ioncore.region_i/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WWindow.p_move/;
+$key = q/fn:WGroup.is_fullscreen/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WGroup.is_fullscreen/;
+$key = q/fn:WWindow.p_move/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -502,11 +534,11 @@ $key = q/fn:WScreen.set_managed_offset/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:mod_query.set/;
+$key = q/fn:ioncore.get_dir_for/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:ioncore.get_dir_for/;
+$key = q/fn:mod_query.set/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -662,6 +694,10 @@ $key = q/fn:mod_query.message/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_tiling.untile/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.compile_cmd/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -678,10 +714,6 @@ $key = q/fn:ioncore.submenu/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMPlex.attach_tagged/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WSplitSplit.br/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -762,6 +794,10 @@ $key = q/sec:classesrolesinstances/;
 $external_labels{$key} = "$URL/" . q|node4.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.tagged_attach/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WRegion.is_tagged/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -782,6 +818,10 @@ $key = q/fn:WClientWin.nudge/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.geom/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.goto_nth_screen/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -826,6 +866,10 @@ $key = q/fn:ioncore.mclick/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.update/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMPlex.set_index/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -934,6 +978,10 @@ $key = q/fn:ioncore.popen_bgread/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_systray/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.mdrag/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -950,10 +998,6 @@ $key = q/ioncore_snapshot_hook/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:ioncore.clear_tags/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:table.map/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -986,11 +1030,11 @@ $key = q/fn:WRegion.parent/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMenu.finish/;
+$key = q/fn:WEdln.back/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WEdln.back/;
+$key = q/fn:WMenu.finish/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1018,7 +1062,7 @@ $key = q/fn:WTiling.transpose_at/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/clientwin_do_manage_alt/;
+$key = q/fn:WRegion.rootwin_of/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1026,7 +1070,7 @@ $key = q/fn:WMPlex.mx_i/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WRegion.rootwin_of/;
+$key = q/clientwin_do_manage_alt/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1038,6 +1082,10 @@ $key = q/ioncore_sigchld_hook/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_template_table/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WTiling.nextto/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1138,6 +1186,10 @@ $key = q/fig:parentship/;
 $external_labels{$key} = "$URL/" . q|node3.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_template/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.read_savefile/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1206,6 +1258,10 @@ $key = q/fn:WMPlex.is_hidden/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.get_configuration/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_menu.get/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1222,6 +1278,10 @@ $key = q/fn:WEdln.eol/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WGroup.set_bottom/;
+$external_labels{$key} = "$URL/" . q|node7.html|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_query.defcmd/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
@@ -1286,11 +1346,11 @@ $key = q/fn:WEdln.skip_word/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WEdln.complete/;
+$key = q/fn:WGroup.attach_new/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WGroup.attach_new/;
+$key = q/fn:WEdln.complete/;
 $external_labels{$key} = "$URL/" . q|node7.html|; 
 $noresave{$key} = "$nosave";
 
@@ -1398,7 +1458,7 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/sec:hookref/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/chap:config/;
@@ -1429,6 +1489,10 @@ $key = q/sec:ioncoreref/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_statusbar.statusbars/;
+$external_latex_labels{$key} = q|6.7|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.defbindings/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -1437,14 +1501,14 @@ $key = q/fn:ioncore.get/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WComplProxy.set_completions/;
-$external_latex_labels{$key} = q|6.3.1|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WWindow.p_resize/;
 $external_latex_labels{$key} = q|6.1.12|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WComplProxy.set_completions/;
+$external_latex_labels{$key} = q|6.3.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.shutdown/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -1478,7 +1542,7 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/fn:de.reset/;
-$external_latex_labels{$key} = q|6.7|; 
+$external_latex_labels{$key} = q|6.8|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:mod_query.history_get/;
@@ -1501,6 +1565,10 @@ $key = q/fn:WMoveresMode.resize/;
 $external_latex_labels{$key} = q|6.1.8|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.is_systray_extl/;
+$external_latex_labels{$key} = q|6.7.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMenu.select_nth/;
 $external_latex_labels{$key} = q|6.4.1|; 
 $noresave{$key} = "$nosave";
@@ -1598,7 +1666,7 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/region_do_warp_alt/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:ioncore.resign/;
@@ -1606,7 +1674,7 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/clientwin_unmapped_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:ioncore.write_savefile/;
@@ -1629,6 +1697,10 @@ $key = q/fn:WWindow.xid/;
 $external_latex_labels{$key} = q|6.1.12|; 
 $noresave{$key} = "$nosave";
 
+$key = q/sec:statusbarref/;
+$external_latex_labels{$key} = q|6.7|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WClientWin.get_ident/;
 $external_latex_labels{$key} = q|6.1.1|; 
 $noresave{$key} = "$nosave";
@@ -1677,6 +1749,10 @@ $key = q/fn:ioncore.clientwin_i/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.tagged_clear/;
+$external_latex_labels{$key} = q|6.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WRegion.screen_of/;
 $external_latex_labels{$key} = q|6.1.9|; 
 $noresave{$key} = "$nosave";
@@ -1685,6 +1761,10 @@ $key = q/fn:WMPlex.switch_next/;
 $external_latex_labels{$key} = q|6.1.7|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:ioncore.unsqueeze/;
+$external_latex_labels{$key} = q|6.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WGroup.bottom/;
 $external_latex_labels{$key} = q|6.1.3|; 
 $noresave{$key} = "$nosave";
@@ -1742,13 +1822,17 @@ $external_latex_labels{$key} = q|B|;
 $noresave{$key} = "$nosave";
 
 $key = q/frame_managed_changed_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/chap:tricks/;
 $external_latex_labels{$key} = q|5|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.groupleader_of/;
+$external_latex_labels{$key} = q|6.1.9|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.get_savefile/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -1785,6 +1869,14 @@ $key = q/fn:ioncore.getctxmenu/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.rqgeom/;
+$external_latex_labels{$key} = q|6.1.8|; 
+$noresave{$key} = "$nosave";
+
+$key = q/fn:WStatusBar.get_template_table/;
+$external_latex_labels{$key} = q|6.7.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WFrame.maximize_horiz/;
 $external_latex_labels{$key} = q|6.1.2|; 
 $noresave{$key} = "$nosave";
@@ -1793,14 +1885,14 @@ $key = q/fn:ioncore.region_i/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WWindow.p_move/;
-$external_latex_labels{$key} = q|6.1.12|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WGroup.is_fullscreen/;
 $external_latex_labels{$key} = q|6.1.3|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WWindow.p_move/;
+$external_latex_labels{$key} = q|6.1.12|; 
+$noresave{$key} = "$nosave";
+
 $key = q/sec:objects/;
 $external_latex_labels{$key} = q|2.2|; 
 $noresave{$key} = "$nosave";
@@ -1809,14 +1901,14 @@ $key = q/fn:WScreen.set_managed_offset/;
 $external_latex_labels{$key} = q|6.1.11|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:mod_query.set/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:ioncore.get_dir_for/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_query.set/;
+$external_latex_labels{$key} = q|6.3|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WEdln.point/;
 $external_latex_labels{$key} = q|6.3.2|; 
 $noresave{$key} = "$nosave";
@@ -1878,7 +1970,7 @@ $external_latex_labels{$key} = q|6.3.2|;
 $noresave{$key} = "$nosave";
 
 $key = q/screen_managed_changed_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WMPlex.mx_count/;
@@ -1969,12 +2061,16 @@ $key = q/fn:mod_query.message/;
 $external_latex_labels{$key} = q|6.3|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:mod_tiling.untile/;
+$external_latex_labels{$key} = q|6.2|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.compile_cmd/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
 $key = q/sec:deref/;
-$external_latex_labels{$key} = q|6.7|; 
+$external_latex_labels{$key} = q|6.8|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WEdln.bol/;
@@ -1985,10 +2081,6 @@ $key = q/fn:ioncore.submenu/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMPlex.attach_tagged/;
-$external_latex_labels{$key} = q|6.1.7|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WSplitSplit.br/;
 $external_latex_labels{$key} = q|6.2.4|; 
 $noresave{$key} = "$nosave";
@@ -2010,7 +2102,7 @@ $external_latex_labels{$key} = q|6.3.2|;
 $noresave{$key} = "$nosave";
 
 $key = q/fn:de.defstyle/;
-$external_latex_labels{$key} = q|6.7|; 
+$external_latex_labels{$key} = q|6.8|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WGroupWS.attach_framed/;
@@ -2038,7 +2130,7 @@ $external_latex_labels{$key} = q|6.1.9|;
 $noresave{$key} = "$nosave";
 
 $key = q/region_notify_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WEdln.clear_mark/;
@@ -2050,7 +2142,7 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/tiling_placement_alt/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:ioncore.warn/;
@@ -2066,7 +2158,11 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/sec:classesrolesinstances/;
-$external_latex_labels{$key} = q|3.5.1|; 
+$external_latex_labels{$key} = q|3.5.2|; 
+$noresave{$key} = "$nosave";
+
+$key = q/fn:ioncore.tagged_attach/;
+$external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WRegion.is_tagged/;
@@ -2089,12 +2185,16 @@ $key = q/fn:WClientWin.nudge/;
 $external_latex_labels{$key} = q|6.1.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMoveresMode.geom/;
+$external_latex_labels{$key} = q|6.1.8|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.goto_nth_screen/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
 $key = q/clientwin_mapped_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WEdln.paste/;
@@ -2122,7 +2222,7 @@ $external_latex_labels{$key} = q|6.3|;
 $noresave{$key} = "$nosave";
 
 $key = q/clientwin_property_change_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:table.append/;
@@ -2133,6 +2233,10 @@ $key = q/fn:ioncore.mclick/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.update/;
+$external_latex_labels{$key} = q|6.7.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WMPlex.set_index/;
 $external_latex_labels{$key} = q|6.1.7|; 
 $noresave{$key} = "$nosave";
@@ -2158,7 +2262,7 @@ $external_latex_labels{$key} = q|6.3|;
 $noresave{$key} = "$nosave";
 
 $key = q/ioncore_deinit_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WSplit.geom/;
@@ -2241,6 +2345,10 @@ $key = q/fn:ioncore.popen_bgread/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_systray/;
+$external_latex_labels{$key} = q|6.7.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.mdrag/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -2254,11 +2362,7 @@ $external_latex_labels{$key} = q|6.2.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/ioncore_snapshot_hook/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.clear_tags/;
-$external_latex_labels{$key} = q|6.1|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:table.map/;
@@ -2293,14 +2397,14 @@ $key = q/fn:WRegion.parent/;
 $external_latex_labels{$key} = q|6.1.9|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WMenu.finish/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WEdln.back/;
 $external_latex_labels{$key} = q|6.3.2|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WMenu.finish/;
+$external_latex_labels{$key} = q|6.4.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.TR/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -2325,16 +2429,16 @@ $key = q/fn:WTiling.transpose_at/;
 $external_latex_labels{$key} = q|6.2.5|; 
 $noresave{$key} = "$nosave";
 
-$key = q/clientwin_do_manage_alt/;
-$external_latex_labels{$key} = q|6.8|; 
+$key = q/fn:WRegion.rootwin_of/;
+$external_latex_labels{$key} = q|6.1.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WMPlex.mx_i/;
 $external_latex_labels{$key} = q|6.1.7|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WRegion.rootwin_of/;
-$external_latex_labels{$key} = q|6.1.9|; 
+$key = q/clientwin_do_manage_alt/;
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:ioncore.match_winprop_name/;
@@ -2342,7 +2446,11 @@ $external_latex_labels{$key} = q|6.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/ioncore_sigchld_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
+$noresave{$key} = "$nosave";
+
+$key = q/fn:WStatusBar.set_template_table/;
+$external_latex_labels{$key} = q|6.7.1|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WTiling.nextto/;
@@ -2354,7 +2462,7 @@ $external_latex_labels{$key} = q|6.5.1|;
 $noresave{$key} = "$nosave";
 
 $key = q/fn:de.substyle/;
-$external_latex_labels{$key} = q|6.7|; 
+$external_latex_labels{$key} = q|6.8|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:WEdln.copy/;
@@ -2445,6 +2553,10 @@ $key = q/fig:parentship/;
 $external_latex_labels{$key} = q|2.2|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WStatusBar.set_template/;
+$external_latex_labels{$key} = q|6.7.1|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:ioncore.read_savefile/;
 $external_latex_labels{$key} = q|6.1|; 
 $noresave{$key} = "$nosave";
@@ -2513,6 +2625,10 @@ $key = q/fn:WMPlex.is_hidden/;
 $external_latex_labels{$key} = q|6.1.7|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WRegion.get_configuration/;
+$external_latex_labels{$key} = q|6.1.9|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_menu.get/;
 $external_latex_labels{$key} = q|6.4|; 
 $noresave{$key} = "$nosave";
@@ -2529,6 +2645,10 @@ $key = q/fn:WEdln.eol/;
 $external_latex_labels{$key} = q|6.3.2|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WGroup.set_bottom/;
+$external_latex_labels{$key} = q|6.1.3|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:mod_query.defcmd/;
 $external_latex_labels{$key} = q|6.3|; 
 $noresave{$key} = "$nosave";
@@ -2562,11 +2682,11 @@ $external_latex_labels{$key} = q|6.3.2|;
 $noresave{$key} = "$nosave";
 
 $key = q/fn:de.defstyle_rootwin/;
-$external_latex_labels{$key} = q|6.7|; 
+$external_latex_labels{$key} = q|6.8|; 
 $noresave{$key} = "$nosave";
 
 $key = q/ioncore_post_layout_setup_hook/;
-$external_latex_labels{$key} = q|6.8|; 
+$external_latex_labels{$key} = q|6.9|; 
 $noresave{$key} = "$nosave";
 
 $key = q/fn:table.icat/;
@@ -2593,14 +2713,14 @@ $key = q/fn:WEdln.skip_word/;
 $external_latex_labels{$key} = q|6.3.2|; 
 $noresave{$key} = "$nosave";
 
-$key = q/fn:WEdln.complete/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
 $key = q/fn:WGroup.attach_new/;
 $external_latex_labels{$key} = q|6.1.3|; 
 $noresave{$key} = "$nosave";
 
+$key = q/fn:WEdln.complete/;
+$external_latex_labels{$key} = q|6.3.2|; 
+$noresave{$key} = "$nosave";
+
 $key = q/fn:WEdln.transpose_chars/;
 $external_latex_labels{$key} = q|6.3.2|; 
 $noresave{$key} = "$nosave";
index ee25b4d40f3ab1866401074e8f84f2402b8a5cac..b243cb3c3a5a6b5cc6bdb6bd5964bcd49d9c3ed8 100644 (file)
@@ -28,26 +28,26 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html130"
+<A NAME="tex2html133"
   HREF="node2.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html126"
+<A NAME="tex2html129"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html120"
+<A NAME="tex2html123"
   HREF="ionconf.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>  
-<A NAME="tex2html128"
+<A NAME="tex2html131"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html131"
+<B> Next:</B> <A NAME="tex2html134"
   HREF="node2.html">1. Introduction</A>
-<B> Up:</B> <A NAME="tex2html127"
+<B> Up:</B> <A NAME="tex2html130"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html121"
+<B> Previous:</B> <A NAME="tex2html124"
   HREF="ionconf.html">Configuring and extending Ion3</A>
- &nbsp; <B>  <A NAME="tex2html129"
+ &nbsp; <B>  <A NAME="tex2html132"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -60,210 +60,218 @@ Contents</A>
 <!--Table of Contents-->
 
 <UL CLASS="TofC">
-<LI><A NAME="tex2html132"
+<LI><A NAME="tex2html135"
   HREF="node2.html">1. Introduction</A>
-<LI><A NAME="tex2html133"
+<LI><A NAME="tex2html136"
   HREF="node3.html">2. Preliminaries: Key concepts and relations</A>
 <UL>
-<LI><A NAME="tex2html134"
+<LI><A NAME="tex2html137"
   HREF="node3.html#SECTION00310000000000000000">2.1 Modules</A>
-<LI><A NAME="tex2html135"
+<LI><A NAME="tex2html138"
   HREF="node3.html#SECTION00320000000000000000">2.2 Class and object hierarchies</A>
 <UL>
-<LI><A NAME="tex2html136"
+<LI><A NAME="tex2html139"
   HREF="node3.html#SECTION00321000000000000000">2.2.1 Class hierarchy</A>
-<LI><A NAME="tex2html137"
+<LI><A NAME="tex2html140"
   HREF="node3.html#SECTION00322000000000000000">2.2.2 Object hierarchies: WRegion parents and managers</A>
-<LI><A NAME="tex2html138"
+<LI><A NAME="tex2html141"
   HREF="node3.html#SECTION00323000000000000000">2.2.3 Summary</A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html139"
+<LI><A NAME="tex2html142"
   HREF="node4.html">3. Basic configuration</A>
 <UL>
-<LI><A NAME="tex2html140"
+<LI><A NAME="tex2html143"
   HREF="node4.html#SECTION00410000000000000000">3.1 The configuration files</A>
-<LI><A NAME="tex2html141"
+<LI><A NAME="tex2html144"
   HREF="node4.html#SECTION00420000000000000000">3.2 A walk through cfg_ion.lua</A>
-<LI><A NAME="tex2html142"
+<LI><A NAME="tex2html145"
   HREF="node4.html#SECTION00430000000000000000">3.3 Keys and rodents</A>
 <UL>
-<LI><A NAME="tex2html143"
+<LI><A NAME="tex2html146"
   HREF="node4.html#SECTION00431000000000000000">3.3.1 Binding handlers and special variables</A>
-<LI><A NAME="tex2html144"
+<LI><A NAME="tex2html147"
   HREF="node4.html#SECTION00432000000000000000">3.3.2 Guards</A>
-<LI><A NAME="tex2html145"
+<LI><A NAME="tex2html148"
   HREF="node4.html#SECTION00433000000000000000">3.3.3 Defining the bindings</A>
-<LI><A NAME="tex2html146"
+<LI><A NAME="tex2html149"
   HREF="node4.html#SECTION00434000000000000000">3.3.4 Examples</A>
-<LI><A NAME="tex2html147"
+<LI><A NAME="tex2html150"
   HREF="node4.html#SECTION00435000000000000000">3.3.5 Key specifications</A>
-<LI><A NAME="tex2html148"
+<LI><A NAME="tex2html151"
   HREF="node4.html#SECTION00436000000000000000">3.3.6 Button specifications</A>
-<LI><A NAME="tex2html149"
+<LI><A NAME="tex2html152"
   HREF="node4.html#SECTION00437000000000000000">3.3.7 A further note on the default binding configuration</A>
 </UL>
-<LI><A NAME="tex2html150"
+<LI><A NAME="tex2html153"
   HREF="node4.html#SECTION00440000000000000000">3.4 Menus</A>
 <UL>
-<LI><A NAME="tex2html151"
+<LI><A NAME="tex2html154"
   HREF="node4.html#SECTION00441000000000000000">3.4.1 Defining menus</A>
-<LI><A NAME="tex2html152"
+<LI><A NAME="tex2html155"
   HREF="node4.html#SECTION00442000000000000000">3.4.2 Special menus</A>
-<LI><A NAME="tex2html153"
+<LI><A NAME="tex2html156"
   HREF="node4.html#SECTION00443000000000000000">3.4.3 Defining context menus</A>
-<LI><A NAME="tex2html154"
+<LI><A NAME="tex2html157"
   HREF="node4.html#SECTION00444000000000000000">3.4.4 Displaying menus</A>
 </UL>
-<LI><A NAME="tex2html155"
+<LI><A NAME="tex2html158"
   HREF="node4.html#SECTION00450000000000000000">3.5 Winprops</A>
 <UL>
-<LI><A NAME="tex2html156"
-  HREF="node4.html#SECTION00451000000000000000">3.5.1 Classes, roles and instances</A>
-<LI><A NAME="tex2html157"
-  HREF="node4.html#SECTION00452000000000000000">3.5.2 Finding window identification</A>
-<LI><A NAME="tex2html158"
-  HREF="node4.html#SECTION00453000000000000000">3.5.3 Some common examples</A>
+<LI><A NAME="tex2html159"
+  HREF="node4.html#SECTION00451000000000000000">3.5.1 Sizehint winprops</A>
+<LI><A NAME="tex2html160"
+  HREF="node4.html#SECTION00452000000000000000">3.5.2 Classes, roles and instances</A>
+<LI><A NAME="tex2html161"
+  HREF="node4.html#SECTION00453000000000000000">3.5.3 Finding window identification</A>
+<LI><A NAME="tex2html162"
+  HREF="node4.html#SECTION00454000000000000000">3.5.4 Some common examples</A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html159"
+<LI><A NAME="tex2html163"
   HREF="node5.html">4. Graphical styles</A>
 <UL>
-<LI><A NAME="tex2html160"
+<LI><A NAME="tex2html164"
   HREF="node5.html#SECTION00510000000000000000">4.1 Drawing engines, style specifications and sub-styles</A>
 <UL>
-<LI><A NAME="tex2html161"
+<LI><A NAME="tex2html165"
   HREF="node5.html#SECTION00511000000000000000">4.1.1 Known styles and substyles</A>
 </UL>
-<LI><A NAME="tex2html162"
+<LI><A NAME="tex2html166"
   HREF="node5.html#SECTION00520000000000000000">4.2 Defining styles for the default drawing engine</A>
 <UL>
-<LI><A NAME="tex2html163"
+<LI><A NAME="tex2html167"
   HREF="node5.html#SECTION00521000000000000000">4.2.1 The structure of the configuration files</A>
-<LI><A NAME="tex2html164"
+<LI><A NAME="tex2html168"
   HREF="node5.html#SECTION00522000000000000000">4.2.2 Defining the styles</A>
-<LI><A NAME="tex2html165"
+<LI><A NAME="tex2html169"
   HREF="node5.html#SECTION00523000000000000000">4.2.3 An example</A>
 </UL>
-<LI><A NAME="tex2html166"
+<LI><A NAME="tex2html170"
   HREF="node5.html#SECTION00530000000000000000">4.3 Miscellaneous settings</A>
 <UL>
-<LI><A NAME="tex2html167"
+<LI><A NAME="tex2html171"
   HREF="node5.html#SECTION00531000000000000000">4.3.1 Extra fields for style frame</A>
-<LI><A NAME="tex2html168"
+<LI><A NAME="tex2html172"
   HREF="node5.html#SECTION00532000000000000000">4.3.2 Extra fields for style dock</A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html169"
+<LI><A NAME="tex2html173"
   HREF="node6.html">5. Scripting</A>
 <UL>
-<LI><A NAME="tex2html170"
+<LI><A NAME="tex2html174"
   HREF="node6.html#SECTION00610000000000000000">5.1 Hooks</A>
-<LI><A NAME="tex2html171"
+<LI><A NAME="tex2html175"
   HREF="node6.html#SECTION00620000000000000000">5.2 Referring to regions</A>
 <UL>
-<LI><A NAME="tex2html172"
+<LI><A NAME="tex2html176"
   HREF="node6.html#SECTION00621000000000000000">5.2.1 Direct object references</A>
-<LI><A NAME="tex2html173"
+<LI><A NAME="tex2html177"
   HREF="node6.html#SECTION00622000000000000000">5.2.2 Name-based lookups</A>
 </UL>
-<LI><A NAME="tex2html174"
+<LI><A NAME="tex2html178"
   HREF="node6.html#SECTION00630000000000000000">5.3 Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html175"
+<LI><A NAME="tex2html179"
   HREF="node6.html#SECTION00640000000000000000">5.4 Writing ion-statusd monitors</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html176"
+<LI><A NAME="tex2html180"
   HREF="node7.html">6. Function reference</A>
 <UL>
-<LI><A NAME="tex2html177"
+<LI><A NAME="tex2html181"
   HREF="node7.html#SECTION00710000000000000000">6.1 Functions defined in ioncore</A>
 <UL>
-<LI><A NAME="tex2html178"
+<LI><A NAME="tex2html182"
   HREF="node7.html#SECTION00711000000000000000">6.1.1 WClientWin functions</A>
-<LI><A NAME="tex2html179"
+<LI><A NAME="tex2html183"
   HREF="node7.html#SECTION00712000000000000000">6.1.2 WFrame functions</A>
-<LI><A NAME="tex2html180"
+<LI><A NAME="tex2html184"
   HREF="node7.html#SECTION00713000000000000000">6.1.3 WGroup functions</A>
-<LI><A NAME="tex2html181"
+<LI><A NAME="tex2html185"
   HREF="node7.html#SECTION00714000000000000000">6.1.4 WGroupCW functions</A>
-<LI><A NAME="tex2html182"
+<LI><A NAME="tex2html186"
   HREF="node7.html#SECTION00715000000000000000">6.1.5 WGroupWS functions</A>
-<LI><A NAME="tex2html183"
+<LI><A NAME="tex2html187"
   HREF="node7.html#SECTION00716000000000000000">6.1.6 WInfoWin functions</A>
-<LI><A NAME="tex2html184"
+<LI><A NAME="tex2html188"
   HREF="node7.html#SECTION00717000000000000000">6.1.7 WMPlex functions</A>
-<LI><A NAME="tex2html185"
+<LI><A NAME="tex2html189"
   HREF="node7.html#SECTION00718000000000000000">6.1.8 WMoveresMode functions</A>
-<LI><A NAME="tex2html186"
+<LI><A NAME="tex2html190"
   HREF="node7.html#SECTION00719000000000000000">6.1.9 WRegion functions</A>
-<LI><A NAME="tex2html187"
+<LI><A NAME="tex2html191"
   HREF="node7.html#SECTION007110000000000000000">6.1.10 WRootWin functions</A>
-<LI><A NAME="tex2html188"
+<LI><A NAME="tex2html192"
   HREF="node7.html#SECTION007111000000000000000">6.1.11 WScreen functions</A>
-<LI><A NAME="tex2html189"
+<LI><A NAME="tex2html193"
   HREF="node7.html#SECTION007112000000000000000">6.1.12 WWindow functions</A>
-<LI><A NAME="tex2html190"
+<LI><A NAME="tex2html194"
   HREF="node7.html#SECTION007113000000000000000">6.1.13 global functions</A>
-<LI><A NAME="tex2html191"
+<LI><A NAME="tex2html195"
   HREF="node7.html#SECTION007114000000000000000">6.1.14 gr functions</A>
-<LI><A NAME="tex2html192"
+<LI><A NAME="tex2html196"
   HREF="node7.html#SECTION007115000000000000000">6.1.15 string functions</A>
-<LI><A NAME="tex2html193"
+<LI><A NAME="tex2html197"
   HREF="node7.html#SECTION007116000000000000000">6.1.16 table functions</A>
 </UL>
-<LI><A NAME="tex2html194"
+<LI><A NAME="tex2html198"
   HREF="node7.html#SECTION00720000000000000000">6.2 Functions defined in mod_tiling</A>
 <UL>
-<LI><A NAME="tex2html195"
+<LI><A NAME="tex2html199"
   HREF="node7.html#SECTION00721000000000000000">6.2.1 WSplit functions</A>
-<LI><A NAME="tex2html196"
+<LI><A NAME="tex2html200"
   HREF="node7.html#SECTION00722000000000000000">6.2.2 WSplitInner functions</A>
-<LI><A NAME="tex2html197"
+<LI><A NAME="tex2html201"
   HREF="node7.html#SECTION00723000000000000000">6.2.3 WSplitRegion functions</A>
-<LI><A NAME="tex2html198"
+<LI><A NAME="tex2html202"
   HREF="node7.html#SECTION00724000000000000000">6.2.4 WSplitSplit functions</A>
-<LI><A NAME="tex2html199"
+<LI><A NAME="tex2html203"
   HREF="node7.html#SECTION00725000000000000000">6.2.5 WTiling functions</A>
 </UL>
-<LI><A NAME="tex2html200"
+<LI><A NAME="tex2html204"
   HREF="node7.html#SECTION00730000000000000000">6.3 Functions defined in mod_query</A>
 <UL>
-<LI><A NAME="tex2html201"
+<LI><A NAME="tex2html205"
   HREF="node7.html#SECTION00731000000000000000">6.3.1 WComplProxy functions</A>
-<LI><A NAME="tex2html202"
+<LI><A NAME="tex2html206"
   HREF="node7.html#SECTION00732000000000000000">6.3.2 WEdln functions</A>
-<LI><A NAME="tex2html203"
+<LI><A NAME="tex2html207"
   HREF="node7.html#SECTION00733000000000000000">6.3.3 WInput functions</A>
 </UL>
-<LI><A NAME="tex2html204"
+<LI><A NAME="tex2html208"
   HREF="node7.html#SECTION00740000000000000000">6.4 Functions defined in mod_menu</A>
 <UL>
-<LI><A NAME="tex2html205"
+<LI><A NAME="tex2html209"
   HREF="node7.html#SECTION00741000000000000000">6.4.1 WMenu functions</A>
 </UL>
-<LI><A NAME="tex2html206"
+<LI><A NAME="tex2html210"
   HREF="node7.html#SECTION00750000000000000000">6.5 Functions defined in mod_dock</A>
 <UL>
-<LI><A NAME="tex2html207"
+<LI><A NAME="tex2html211"
   HREF="node7.html#SECTION00751000000000000000">6.5.1 WDock functions</A>
 </UL>
-<LI><A NAME="tex2html208"
+<LI><A NAME="tex2html212"
   HREF="node7.html#SECTION00760000000000000000">6.6 Functions defined in mod_sp</A>
-<LI><A NAME="tex2html209"
-  HREF="node7.html#SECTION00770000000000000000">6.7 Functions defined in de</A>
-<LI><A NAME="tex2html210"
-  HREF="node7.html#SECTION00780000000000000000">6.8 Hooks</A>
+<LI><A NAME="tex2html213"
+  HREF="node7.html#SECTION00770000000000000000">6.7 Functions defined in mod_statusbar</A>
+<UL>
+<LI><A NAME="tex2html214"
+  HREF="node7.html#SECTION00771000000000000000">6.7.1 WStatusBar functions</A>
+</UL>
+<LI><A NAME="tex2html215"
+  HREF="node7.html#SECTION00780000000000000000">6.8 Functions defined in de</A>
+<LI><A NAME="tex2html216"
+  HREF="node7.html#SECTION00790000000000000000">6.9 Hooks</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html211"
+<LI><A NAME="tex2html217"
   HREF="node8.html">A. The GNU General Public License</A>
-<LI><A NAME="tex2html212"
+<LI><A NAME="tex2html218"
   HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html213"
+<LI><A NAME="tex2html219"
   HREF="node11.html">Index</A>
 </UL>
 <!--End of Table of Contents-->
index 46a988d4e6bc65a5a4595970c37cdcfec5331265..64992630e5f9d77966610d41d03570e9bdd8fcfc 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html425"
+<A NAME="tex2html434"
   HREF="node11.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html419"
+<A NAME="tex2html428"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html413"
+<A NAME="tex2html422"
   HREF="node9.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html421"
+<A NAME="tex2html430"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html423"
+<A NAME="tex2html432"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html426"
+<B> Next:</B> <A NAME="tex2html435"
   HREF="node11.html">Index</A>
-<B> Up:</B> <A NAME="tex2html420"
+<B> Up:</B> <A NAME="tex2html429"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html414"
+<B> Previous:</B> <A NAME="tex2html423"
   HREF="node9.html">B. Full class hierarchy</A>
- &nbsp; <B>  <A NAME="tex2html422"
+ &nbsp; <B>  <A NAME="tex2html431"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html424"
+ &nbsp; <B>  <A NAME="tex2html433"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -77,7 +77,6 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:ioncore.activity_i"><TT>ioncore.activity_i</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.bdoc"><TT>ioncore.bdoc</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.chdir_for"><TT>ioncore.chdir_for</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.clear_tags"><TT>ioncore.clear_tags</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.clientwin_i"><TT>ioncore.clientwin_i</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.compile_cmd"><TT>ioncore.compile_cmd</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.create_ws"><TT>ioncore.create_ws</TT></A>
@@ -141,9 +140,12 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:ioncore.snapshot"><TT>ioncore.snapshot</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.submap"><TT>ioncore.submap</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.submenu"><TT>ioncore.submenu</TT></A>
+<BR><A HREF="node7.html#fn:ioncore.tagged_attach"><TT>ioncore.tagged_attach</TT></A>
+<BR><A HREF="node7.html#fn:ioncore.tagged_clear"><TT>ioncore.tagged_clear</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.tagged_first"><TT>ioncore.tagged_first</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.tagged_i"><TT>ioncore.tagged_i</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.TR"><TT>ioncore.TR</TT></A>
+<BR><A HREF="node7.html#fn:ioncore.unsqueeze"><TT>ioncore.unsqueeze</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.version"><TT>ioncore.version</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.warn"><TT>ioncore.warn</TT></A>
 <BR><A HREF="node7.html#fn:ioncore.warn_traced"><TT>ioncore.warn_traced</TT></A>
@@ -192,10 +194,11 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:mod_query.warn"><TT>mod_query.warn</TT></A>
 <BR><A HREF="node7.html#fn:mod_sp.set_shown"><TT>mod_sp.set_shown</TT></A>
 <BR><A HREF="node7.html#fn:mod_sp.set_shown_on"><TT>mod_sp.set_shown_on</TT></A>
-<BR><A HREF="#fn:mod_statusbar.statusbars"><TT>mod_statusbar.statusbars</TT></A>
+<BR><A HREF="node7.html#fn:mod_statusbar.statusbars"><TT>mod_statusbar.statusbars</TT></A>
 <BR><A HREF="node7.html#fn:mod_tiling.get"><TT>mod_tiling.get</TT></A>
 <BR><A HREF="node7.html#fn:mod_tiling.mkbottom"><TT>mod_tiling.mkbottom</TT></A>
 <BR><A HREF="node7.html#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>
+<BR><A HREF="node7.html#fn:mod_tiling.untile"><TT>mod_tiling.untile</TT></A>
 <BR><A HREF="node7.html#fn:string.shell_safe"><TT>string.shell_safe</TT></A>
 <BR><A HREF="node7.html#fn:table.append"><TT>table.append</TT></A>
 <BR><A HREF="node7.html#fn:table.copy"><TT>table.copy</TT></A>
@@ -259,6 +262,7 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:WGroup.bottom"><TT>WGroup.bottom</TT></A>
 <BR><A HREF="node7.html#fn:WGroup.is_fullscreen"><TT>WGroup.is_fullscreen</TT></A>
 <BR><A HREF="node7.html#fn:WGroup.managed_i"><TT>WGroup.managed_i</TT></A>
+<BR><A HREF="node7.html#fn:WGroup.set_bottom"><TT>WGroup.set_bottom</TT></A>
 <BR><A HREF="node7.html#fn:WGroup.set_fullscreen"><TT>WGroup.set_fullscreen</TT></A>
 <BR><A HREF="node7.html#fn:WGroupWS.attach_framed"><TT>WGroupWS.attach_framed</TT></A>
 <BR><A HREF="node7.html#fn:WInfoWin.set_text"><TT>WInfoWin.set_text</TT></A>
@@ -273,11 +277,12 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:WMenu.typeahead_clear"><TT>WMenu.typeahead_clear</TT></A>
 <BR><A HREF="node7.html#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A>
 <BR><A HREF="node7.html#fn:WMoveresMode.finish"><TT>WMoveresMode.finish</TT></A>
+<BR><A HREF="node7.html#fn:WMoveresMode.geom"><TT>WMoveresMode.geom</TT></A>
 <BR><A HREF="node7.html#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>
 <BR><A HREF="node7.html#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>
+<BR><A HREF="node7.html#fn:WMoveresMode.rqgeom"><TT>WMoveresMode.rqgeom</TT></A>
 <BR><A HREF="node7.html#fn:WMPlex.attach"><TT>WMPlex.attach</TT></A>
 <BR><A HREF="node7.html#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.attach_tagged"><TT>WMPlex.attach_tagged</TT></A>
 <BR><A HREF="node7.html#fn:WMPlex.dec_index"><TT>WMPlex.dec_index</TT></A>
 <BR><A HREF="node7.html#fn:WMPlex.get_index"><TT>WMPlex.get_index</TT></A>
 <BR><A HREF="node7.html#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A>
@@ -297,7 +302,9 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:WRegion.begin_kbresize"><TT>WRegion.begin_kbresize</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.current"><TT>WRegion.current</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.geom"><TT>WRegion.geom</TT></A>
+<BR><A HREF="node7.html#fn:WRegion.get_configuration"><TT>WRegion.get_configuration</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.goto"><TT>WRegion.goto</TT></A>
+<BR><A HREF="node7.html#fn:WRegion.groupleader_of"><TT>WRegion.groupleader_of</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.is_active"><TT>WRegion.is_active</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.is_activity"><TT>WRegion.is_activity</TT></A>
 <BR><A HREF="node7.html#fn:WRegion.is_mapped"><TT>WRegion.is_mapped</TT></A>
@@ -329,12 +336,12 @@ List of functions</A>
 <BR><A HREF="node7.html#fn:WSplitSplit.flip"><TT>WSplitSplit.flip</TT></A>
 <BR><A HREF="node7.html#fn:WSplitSplit.tl"><TT>WSplitSplit.tl</TT></A>
 <BR><A HREF="node7.html#fn:WSplit.transpose"><TT>WSplit.transpose</TT></A>
-<BR><A HREF="#fn:WStatusBar.get_template_table"><TT>WStatusBar.get_template_table</TT></A>
-<BR><A HREF="#fn:WStatusBar.is_systray_extl"><TT>WStatusBar.is_systray_extl</TT></A>
-<BR><A HREF="#fn:WStatusBar.set_systray"><TT>WStatusBar.set_systray</TT></A>
-<BR><A HREF="#fn:WStatusBar.set_template"><TT>WStatusBar.set_template</TT></A>
-<BR><A HREF="#fn:WStatusBar.set_template_table"><TT>WStatusBar.set_template_table</TT></A>
-<BR><A HREF="#fn:WStatusBar.update"><TT>WStatusBar.update</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.get_template_table"><TT>WStatusBar.get_template_table</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.is_systray_extl"><TT>WStatusBar.is_systray_extl</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.set_systray"><TT>WStatusBar.set_systray</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.set_template"><TT>WStatusBar.set_template</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.set_template_table"><TT>WStatusBar.set_template_table</TT></A>
+<BR><A HREF="node7.html#fn:WStatusBar.update"><TT>WStatusBar.update</TT></A>
 <BR><A HREF="node7.html#fn:WTiling.farthest"><TT>WTiling.farthest</TT></A>
 <BR><A HREF="node7.html#fn:WTiling.flip_at"><TT>WTiling.flip_at</TT></A>
 <BR><A HREF="node7.html#fn:WTiling.managed_i"><TT>WTiling.managed_i</TT></A>
@@ -354,31 +361,31 @@ List of functions</A>
 <BR>
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html425"
+<A NAME="tex2html434"
   HREF="node11.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html419"
+<A NAME="tex2html428"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html413"
+<A NAME="tex2html422"
   HREF="node9.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html421"
+<A NAME="tex2html430"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html423"
+<A NAME="tex2html432"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html426"
+<B> Next:</B> <A NAME="tex2html435"
   HREF="node11.html">Index</A>
-<B> Up:</B> <A NAME="tex2html420"
+<B> Up:</B> <A NAME="tex2html429"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html414"
+<B> Previous:</B> <A NAME="tex2html423"
   HREF="node9.html">B. Full class hierarchy</A>
- &nbsp; <B>  <A NAME="tex2html422"
+ &nbsp; <B>  <A NAME="tex2html431"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html424"
+ &nbsp; <B>  <A NAME="tex2html433"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index 76b04812fdf8030b48c126c2f2a3f48bde1acb35..4ad6ff23aa9bc5c0ccfc6120d56a09ffdd7681e8 100644 (file)
@@ -28,26 +28,26 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html437"
+<A NAME="tex2html446"
   HREF="node12.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html433"
+<A NAME="tex2html442"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html427"
+<A NAME="tex2html436"
   HREF="node10.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html435"
+<A NAME="tex2html444"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
 <BR>
-<B> Next:</B> <A NAME="tex2html438"
+<B> Next:</B> <A NAME="tex2html447"
   HREF="node12.html">About this document ...</A>
-<B> Up:</B> <A NAME="tex2html434"
+<B> Up:</B> <A NAME="tex2html443"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html428"
+<B> Previous:</B> <A NAME="tex2html437"
   HREF="node10.html">List of functions</A>
- &nbsp; <B>  <A NAME="tex2html436"
+ &nbsp; <B>  <A NAME="tex2html445"
   HREF="node1.html">Contents</A></B> 
 <BR>
 <BR></DIV>
@@ -58,1035 +58,1085 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 Index</A>
 </H2><HR><DL>
 <DD><STRONG><TT>aboutmsg</TT></STRONG>
- : <A HREF="node7.html#4330"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4407"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>acrobatic</TT></STRONG>
- : <A HREF="node4.html#1429"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1438"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>activity_first</TT></STRONG>
- : <A HREF="node7.html#4332"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4409"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>activity_i</TT></STRONG>
- : <A HREF="node7.html#4334"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4411"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">Alt</SPAN></STRONG>
- : <A HREF="node4.html#864"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#878"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">AnyModifier</SPAN></STRONG>
- : <A HREF="node4.html#862"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#876"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>append</TT></STRONG>
- : <A HREF="node7.html#4623"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
-<DD><STRONG><TT>aspect</TT></STRONG>
- : <A HREF="node4.html#1430"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#4712"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>resizeinc</TT></STRONG>
+ : <A HREF="node4.html#1453"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node4.html#1454"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>attach</TT></STRONG>
- : <A HREF="node7.html#4483"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#4503"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
- | <A HREF="node7.html#9152"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4564"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#4586"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ | <A HREF="node7.html#9346"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>attach_framed</TT></STRONG>
- : <A HREF="node7.html#4497"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#4580"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>attach_new</TT></STRONG>
- : <A HREF="node7.html#4485"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#4505"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>attach_tagged</TT></STRONG>
- : <A HREF="node7.html#4507"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4566"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#4588"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>back</TT></STRONG>
- : <A HREF="node7.html#8041"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8235"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>backspace</TT></STRONG>
- : <A HREF="node7.html#8043"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8237"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>bdoc</TT></STRONG>
- : <A HREF="node7.html#4288"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4365"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>begin_kbresize</TT></STRONG>
- : <A HREF="node7.html#4551"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4636"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>bkill_word</TT></STRONG>
- : <A HREF="node7.html#8045"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8239"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>bol</TT></STRONG>
- : <A HREF="node7.html#8047"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8241"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>bottom</TT></STRONG>
- : <A HREF="node7.html#4487"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#4568"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>br</TT></STRONG>
- : <A HREF="node7.html#6952"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#7135"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG><TT>bskip_word</TT></STRONG>
- : <A HREF="node7.html#8049"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8243"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">Button-n</SPAN></STRONG>
- : <A HREF="node4.html#868"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+ : <A HREF="node4.html#882"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
 <DD><STRONG><TT>cancel</TT></STRONG>
- : <A HREF="node7.html#4542"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
- | <A HREF="node7.html#8108"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#8940"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4623"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ | <A HREF="node7.html#8302"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#9134"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>chdir_for</TT></STRONG>
- : <A HREF="node7.html#4290"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4367"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>class</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1447"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1460"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>clear_mark</TT></STRONG>
- : <A HREF="node7.html#8051"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>clear_tags</TT></STRONG>
- : <A HREF="node7.html#4336"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#8245"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>clientwin_do_manage_alt</TT></STRONG>
- : <A HREF="node7.html#9529"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9877"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>clientwin_i</TT></STRONG>
- : <A HREF="node7.html#4338"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4413"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>clientwin_mapped_hook</TT></STRONG>
- : <A HREF="node7.html#9530"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9878"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>clientwin_property_change_hook</TT></STRONG>
- : <A HREF="node7.html#9531"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9879"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>clientwin_unmapped_hook</TT></STRONG>
- : <A HREF="node7.html#9532"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9880"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>compile_cmd</TT></STRONG>
- : <A HREF="node7.html#4292"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4369"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>complete</TT></STRONG>
- : <A HREF="node7.html#8053"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8247"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>contents</TT></STRONG>
- : <A HREF="node7.html#8055"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8249"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>context</TT></STRONG>
- : <A HREF="node7.html#8057"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8251"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">Control</SPAN></STRONG>
- : <A HREF="node4.html#860"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#874"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>copy</TT></STRONG>
- : <A HREF="node7.html#4625"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
- | <A HREF="node7.html#8059"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4714"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+ | <A HREF="node7.html#8253"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>create_ws</TT></STRONG>
- : <A HREF="node7.html#4294"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4371"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>current</TT></STRONG>
- : <A HREF="node7.html#4340"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4553"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
- | <A HREF="node7.html#6946"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4415"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4638"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ | <A HREF="node7.html#7129"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>current_scr</TT></STRONG>
- : <A HREF="node7.html#4596"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN></A>
+ : <A HREF="node7.html#4685"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN></A>
 <DD><STRONG><TT>cut</TT></STRONG>
- : <A HREF="node7.html#8061"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8255"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>de</TT></STRONG><DL>
-<DD><STRONG><TT>defstyle</TT></STRONG> : <A HREF="node7.html#9324"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>defstyle_rootwin</TT></STRONG> : <A HREF="node7.html#9326"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>reset</TT></STRONG> : <A HREF="node7.html#9328"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>substyle</TT></STRONG> : <A HREF="node7.html#9330"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>defstyle</TT></STRONG> : <A HREF="node7.html#9672"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>defstyle_rootwin</TT></STRONG> : <A HREF="node7.html#9674"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>reset</TT></STRONG> : <A HREF="node7.html#9676"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>substyle</TT></STRONG> : <A HREF="node7.html#9678"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 </DL>
 <DD><STRONG><TT>dec_index</TT></STRONG>
- : <A HREF="node7.html#4509"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4590"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>defbindings</TT></STRONG>
- : <A HREF="node7.html#4296"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4373"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>defcmd</TT></STRONG>
- : <A HREF="node7.html#7978"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8172"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>defctxmenu</TT></STRONG>
- : <A HREF="node7.html#4298"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4375"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>deflayout</TT></STRONG>
- : <A HREF="node7.html#4300"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4377"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>defmenu</TT></STRONG>
- : <A HREF="node4.html#1171"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4302"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#1185"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4379"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>defshortening</TT></STRONG>
- : <A HREF="node7.html#4342"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4417"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>defstyle</TT></STRONG>
- : <A HREF="node7.html#9325"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#9673"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 <DD><STRONG><TT>defstyle_rootwin</TT></STRONG>
- : <A HREF="node7.html#9327"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#9675"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 <DD><STRONG><TT>defwinprop</TT></STRONG>
- : <A HREF="node7.html#4304"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4381"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>delete</TT></STRONG>
- : <A HREF="node7.html#8063"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8257"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>detach</TT></STRONG>
- : <A HREF="node7.html#4344"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4419"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>dir</TT></STRONG>
- : <A HREF="node7.html#6954"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#7137"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG>drawing engine</STRONG>
- : <A HREF="node5.html#1711"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node5.html#1709"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>eol</TT></STRONG>
- : <A HREF="node7.html#8065"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8259"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>ETCDIR</TT></STRONG>
- : <A HREF="node4.html#585"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#591"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>exec</TT></STRONG>
- : <A HREF="node7.html#4346"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4421"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>exec_on</TT></STRONG>
- : <A HREF="node7.html#4306"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4383"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>export</TT></STRONG>
- : <A HREF="node7.html#4610"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN></A>
+ : <A HREF="node7.html#4699"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN></A>
 <DD><STRONG><TT>farthest</TT></STRONG>
- : <A HREF="node7.html#6965"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7148"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>find_manager</TT></STRONG>
- : <A HREF="node7.html#4316"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4393"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>find_screen_id</TT></STRONG>
- : <A HREF="node7.html#4348"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4423"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>finish</TT></STRONG>
- : <A HREF="node7.html#4544"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
- | <A HREF="node7.html#8067"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
- | <A HREF="node7.html#8942"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4625"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ | <A HREF="node7.html#8261"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ | <A HREF="node7.html#9136"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>flip</TT></STRONG>
- : <A HREF="node7.html#6956"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#7139"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG><TT>flip_at</TT></STRONG>
- : <A HREF="node7.html#6961"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7144"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>float</TT></STRONG>
- : <A HREF="node4.html#1431"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1439"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>focushistory_i</TT></STRONG>
- : <A HREF="node7.html#4350"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4425"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>forward</TT></STRONG>
- : <A HREF="node7.html#8069"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8263"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>frame_managed_changed_hook</TT></STRONG>
- : <A HREF="node7.html#9533"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9881"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>fullscreen</TT></STRONG>
- : <A HREF="node4.html#1432"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1440"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>geom</TT></STRONG>
- : <A HREF="node7.html#4555"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
- | <A HREF="node7.html#6937"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4627"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ | <A HREF="node7.html#4640"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ | <A HREF="node7.html#7120"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>get</TT></STRONG>
- : <A HREF="node7.html#4352"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#6930"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
- | <A HREF="node7.html#7980"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#8933"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
- | <A HREF="node7.html#9154"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4427"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#7111"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ | <A HREF="node7.html#8176"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#9127"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ | <A HREF="node7.html#9348"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get_configuration</TT></STRONG>
+ : <A HREF="node7.html#4642"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>get_dir_for</TT></STRONG>
- : <A HREF="node7.html#4318"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4395"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>get_ident</TT></STRONG>
- : <A HREF="node7.html#4453"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4534"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>get_index</TT></STRONG>
- : <A HREF="node7.html#4511"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4592"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>get_paths</TT></STRONG>
- : <A HREF="node7.html#4354"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4429"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>get_savefile</TT></STRONG>
- : <A HREF="node7.html#4310"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4387"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>get_stdisp</TT></STRONG>
- : <A HREF="node7.html#4513"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4594"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>get_template_table</TT></STRONG>
+ : <A HREF="node7.html#9552"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>getbindings</TT></STRONG>
- : <A HREF="node7.html#4320"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4397"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>getctxmenu</TT></STRONG>
- : <A HREF="node7.html#4322"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4399"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>getlayout</TT></STRONG>
- : <A HREF="node7.html#4324"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4401"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>getmenu</TT></STRONG>
- : <A HREF="node7.html#4326"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4403"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>getwinprop</TT></STRONG>
- : <A HREF="node7.html#4328"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4405"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto</TT></STRONG>
- : <A HREF="node7.html#4557"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4644"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>goto_activity</TT></STRONG>
- : <A HREF="node7.html#4356"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4431"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_first</TT></STRONG>
- : <A HREF="node7.html#4358"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4433"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_next</TT></STRONG>
- : <A HREF="node7.html#4360"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4435"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_next_screen</TT></STRONG>
- : <A HREF="node7.html#4362"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4437"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_nth_screen</TT></STRONG>
- : <A HREF="node7.html#4364"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4439"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_prev_screen</TT></STRONG>
- : <A HREF="node7.html#4366"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4441"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>goto_previous</TT></STRONG>
- : <A HREF="node7.html#4368"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4443"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>gr</TT></STRONG><DL>
-<DD><STRONG><TT>read_config</TT></STRONG> : <A HREF="node7.html#4612"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
-<DD><STRONG><TT>refresh</TT></STRONG> : <A HREF="node7.html#4614"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
-<DD><STRONG><TT>select_engine</TT></STRONG> : <A HREF="node7.html#4616"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+<DD><STRONG><TT>read_config</TT></STRONG> : <A HREF="node7.html#4701"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+<DD><STRONG><TT>refresh</TT></STRONG> : <A HREF="node7.html#4703"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+<DD><STRONG><TT>select_engine</TT></STRONG> : <A HREF="node7.html#4705"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
 </DL>
 <DD><STRONG><TT>grabmenu</TT></STRONG>
- : <A HREF="node7.html#8929"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#9123"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>groupleader_of</TT></STRONG>
+ : <A HREF="node7.html#4646"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>history_clear</TT></STRONG>
- : <A HREF="node7.html#7982"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8178"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>history_get</TT></STRONG>
- : <A HREF="node7.html#7984"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8180"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>history_next</TT></STRONG>
- : <A HREF="node7.html#8071"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8265"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>history_prev</TT></STRONG>
- : <A HREF="node7.html#8073"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8267"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>history_push</TT></STRONG>
- : <A HREF="node7.html#7986"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8182"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>history_search</TT></STRONG>
- : <A HREF="node7.html#7988"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8184"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>history_table</TT></STRONG>
- : <A HREF="node7.html#7990"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8186"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>icat</TT></STRONG>
- : <A HREF="node7.html#4627"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+ : <A HREF="node7.html#4716"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
 <DD><STRONG><TT>id</TT></STRONG>
- : <A HREF="node7.html#4599"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
+ : <A HREF="node7.html#4688"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
+<DD><STRONG><TT>ignore_resizeinc</TT></STRONG>
+ : <A HREF="node4.html#1457"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node4.html#1458"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>ignore_cfgrq</TT></STRONG>
- : <A HREF="node4.html#1433"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1441"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>ignore_max_size</TT></STRONG>
+ : <A HREF="node4.html#1455"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>ignore_min_size</TT></STRONG>
+ : <A HREF="node4.html#1456"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>ignore_net_active_window</TT></STRONG>
- : <A HREF="node4.html#1434"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>ignore_resizeinc</TT></STRONG>
- : <A HREF="node4.html#1435"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1442"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>inc_index</TT></STRONG>
- : <A HREF="node7.html#4515"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4596"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>insstr</TT></STRONG>
- : <A HREF="node7.html#8075"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8269"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>instance</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1449"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1462"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>ioncore</TT></STRONG><DL>
-<DD><STRONG><TT>aboutmsg</TT></STRONG> : <A HREF="node7.html#4329"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>activity_first</TT></STRONG> : <A HREF="node7.html#4331"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>activity_i</TT></STRONG> : <A HREF="node7.html#4333"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>bdoc</TT></STRONG> : <A HREF="node7.html#4287"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>chdir_for</TT></STRONG> : <A HREF="node7.html#4289"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>clear_tags</TT></STRONG> : <A HREF="node7.html#4335"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>clientwin_i</TT></STRONG> : <A HREF="node7.html#4337"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>compile_cmd</TT></STRONG> : <A HREF="node7.html#4291"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>create_ws</TT></STRONG> : <A HREF="node7.html#4293"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#4339"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>defbindings</TT></STRONG> : <A HREF="node7.html#4295"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>defctxmenu</TT></STRONG> : <A HREF="node7.html#4297"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>deflayout</TT></STRONG> : <A HREF="node7.html#4299"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>defmenu</TT></STRONG> : <A HREF="node7.html#4301"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>defshortening</TT></STRONG> : <A HREF="node7.html#4341"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>defwinprop</TT></STRONG> : <A HREF="node7.html#4303"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>detach</TT></STRONG> : <A HREF="node7.html#4343"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>exec</TT></STRONG> : <A HREF="node7.html#4345"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>exec_on</TT></STRONG> : <A HREF="node7.html#4305"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>find_manager</TT></STRONG> : <A HREF="node7.html#4315"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>find_screen_id</TT></STRONG> : <A HREF="node7.html#4347"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>focushistory_i</TT></STRONG> : <A HREF="node7.html#4349"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#4351"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>get_dir_for</TT></STRONG> : <A HREF="node7.html#4317"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>get_paths</TT></STRONG> : <A HREF="node7.html#4353"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>get_savefile</TT></STRONG> : <A HREF="node7.html#4309"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>getbindings</TT></STRONG> : <A HREF="node7.html#4319"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>getctxmenu</TT></STRONG> : <A HREF="node7.html#4321"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>getlayout</TT></STRONG> : <A HREF="node7.html#4323"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>getmenu</TT></STRONG> : <A HREF="node7.html#4325"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>getwinprop</TT></STRONG> : <A HREF="node7.html#4327"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_activity</TT></STRONG> : <A HREF="node7.html#4355"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_first</TT></STRONG> : <A HREF="node7.html#4357"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_next</TT></STRONG> : <A HREF="node7.html#4359"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_next_screen</TT></STRONG> : <A HREF="node7.html#4361"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_nth_screen</TT></STRONG> : <A HREF="node7.html#4363"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_prev_screen</TT></STRONG> : <A HREF="node7.html#4365"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>goto_previous</TT></STRONG> : <A HREF="node7.html#4367"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>is_i18n</TT></STRONG> : <A HREF="node7.html#4369"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>kpress</TT></STRONG> : <A HREF="node7.html#4429"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>kpress_wait</TT></STRONG> : <A HREF="node7.html#4431"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>load_module</TT></STRONG> : <A HREF="node7.html#4371"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>lookup_clientwin</TT></STRONG> : <A HREF="node7.html#4373"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>lookup_region</TT></STRONG> : <A HREF="node7.html#4375"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>lookup_script</TT></STRONG> : <A HREF="node7.html#4311"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>match_winprop_name</TT></STRONG> : <A HREF="node7.html#4433"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mclick</TT></STRONG> : <A HREF="node7.html#4435"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mdblclick</TT></STRONG> : <A HREF="node7.html#4437"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mdrag</TT></STRONG> : <A HREF="node7.html#4439"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>menuentry</TT></STRONG> : <A HREF="node7.html#4441"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mpress</TT></STRONG> : <A HREF="node7.html#4443"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>navi_first</TT></STRONG> : <A HREF="node7.html#4377"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>navi_next</TT></STRONG> : <A HREF="node7.html#4379"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>popen_bgread</TT></STRONG> : <A HREF="node7.html#4381"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>progname</TT></STRONG> : <A HREF="node7.html#4383"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>read_savefile</TT></STRONG> : <A HREF="node7.html#4307"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>refresh_stylelist</TT></STRONG> : <A HREF="node7.html#4445"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>region_i</TT></STRONG> : <A HREF="node7.html#4385"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>request_selection</TT></STRONG> : <A HREF="node7.html#4387"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>resign</TT></STRONG> : <A HREF="node7.html#4389"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>restart</TT></STRONG> : <A HREF="node7.html#4391"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>restart_other</TT></STRONG> : <A HREF="node7.html#4393"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#4395"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>set_paths</TT></STRONG> : <A HREF="node7.html#4397"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>set_selection</TT></STRONG> : <A HREF="node7.html#4399"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>shutdown</TT></STRONG> : <A HREF="node7.html#4401"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>snapshot</TT></STRONG> : <A HREF="node7.html#4403"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>submap</TT></STRONG> : <A HREF="node7.html#4447"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>submenu</TT></STRONG> : <A HREF="node7.html#4449"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>tagged_first</TT></STRONG> : <A HREF="node7.html#4405"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>tagged_i</TT></STRONG> : <A HREF="node7.html#4407"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>TR</TT></STRONG> : <A HREF="node7.html#4285"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>version</TT></STRONG> : <A HREF="node7.html#4409"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>warn</TT></STRONG> : <A HREF="node7.html#4411"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>warn_traced</TT></STRONG> : <A HREF="node7.html#4413"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>write_savefile</TT></STRONG> : <A HREF="node7.html#4313"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_change_property</TT></STRONG> : <A HREF="node7.html#4415"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_delete_property</TT></STRONG> : <A HREF="node7.html#4417"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_get_atom_name</TT></STRONG> : <A HREF="node7.html#4419"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_get_text_property</TT></STRONG> : <A HREF="node7.html#4421"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_get_window_property</TT></STRONG> : <A HREF="node7.html#4423"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_intern_atom</TT></STRONG> : <A HREF="node7.html#4425"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>x_set_text_property</TT></STRONG> : <A HREF="node7.html#4427"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>aboutmsg</TT></STRONG> : <A HREF="node7.html#4406"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>activity_first</TT></STRONG> : <A HREF="node7.html#4408"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>activity_i</TT></STRONG> : <A HREF="node7.html#4410"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>bdoc</TT></STRONG> : <A HREF="node7.html#4364"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>chdir_for</TT></STRONG> : <A HREF="node7.html#4366"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>clientwin_i</TT></STRONG> : <A HREF="node7.html#4412"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>compile_cmd</TT></STRONG> : <A HREF="node7.html#4368"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>create_ws</TT></STRONG> : <A HREF="node7.html#4370"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#4414"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>defbindings</TT></STRONG> : <A HREF="node7.html#4372"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>defctxmenu</TT></STRONG> : <A HREF="node7.html#4374"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>deflayout</TT></STRONG> : <A HREF="node7.html#4376"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>defmenu</TT></STRONG> : <A HREF="node7.html#4378"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>defshortening</TT></STRONG> : <A HREF="node7.html#4416"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>defwinprop</TT></STRONG> : <A HREF="node7.html#4380"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>detach</TT></STRONG> : <A HREF="node7.html#4418"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>exec</TT></STRONG> : <A HREF="node7.html#4420"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>exec_on</TT></STRONG> : <A HREF="node7.html#4382"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>find_manager</TT></STRONG> : <A HREF="node7.html#4392"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>find_screen_id</TT></STRONG> : <A HREF="node7.html#4422"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>focushistory_i</TT></STRONG> : <A HREF="node7.html#4424"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#4426"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get_dir_for</TT></STRONG> : <A HREF="node7.html#4394"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get_paths</TT></STRONG> : <A HREF="node7.html#4428"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get_savefile</TT></STRONG> : <A HREF="node7.html#4386"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>getbindings</TT></STRONG> : <A HREF="node7.html#4396"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>getctxmenu</TT></STRONG> : <A HREF="node7.html#4398"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>getlayout</TT></STRONG> : <A HREF="node7.html#4400"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>getmenu</TT></STRONG> : <A HREF="node7.html#4402"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>getwinprop</TT></STRONG> : <A HREF="node7.html#4404"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_activity</TT></STRONG> : <A HREF="node7.html#4430"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_first</TT></STRONG> : <A HREF="node7.html#4432"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_next</TT></STRONG> : <A HREF="node7.html#4434"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_next_screen</TT></STRONG> : <A HREF="node7.html#4436"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_nth_screen</TT></STRONG> : <A HREF="node7.html#4438"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_prev_screen</TT></STRONG> : <A HREF="node7.html#4440"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>goto_previous</TT></STRONG> : <A HREF="node7.html#4442"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>is_i18n</TT></STRONG> : <A HREF="node7.html#4444"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>kpress</TT></STRONG> : <A HREF="node7.html#4508"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>kpress_wait</TT></STRONG> : <A HREF="node7.html#4510"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>load_module</TT></STRONG> : <A HREF="node7.html#4446"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>lookup_clientwin</TT></STRONG> : <A HREF="node7.html#4448"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>lookup_region</TT></STRONG> : <A HREF="node7.html#4450"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>lookup_script</TT></STRONG> : <A HREF="node7.html#4388"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>match_winprop_name</TT></STRONG> : <A HREF="node7.html#4512"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>mclick</TT></STRONG> : <A HREF="node7.html#4514"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>mdblclick</TT></STRONG> : <A HREF="node7.html#4516"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>mdrag</TT></STRONG> : <A HREF="node7.html#4518"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>menuentry</TT></STRONG> : <A HREF="node7.html#4520"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>mpress</TT></STRONG> : <A HREF="node7.html#4522"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>navi_first</TT></STRONG> : <A HREF="node7.html#4452"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>navi_next</TT></STRONG> : <A HREF="node7.html#4454"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>popen_bgread</TT></STRONG> : <A HREF="node7.html#4456"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>progname</TT></STRONG> : <A HREF="node7.html#4458"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>read_savefile</TT></STRONG> : <A HREF="node7.html#4384"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>refresh_stylelist</TT></STRONG> : <A HREF="node7.html#4524"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>region_i</TT></STRONG> : <A HREF="node7.html#4460"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>request_selection</TT></STRONG> : <A HREF="node7.html#4462"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>resign</TT></STRONG> : <A HREF="node7.html#4464"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>restart</TT></STRONG> : <A HREF="node7.html#4466"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>restart_other</TT></STRONG> : <A HREF="node7.html#4468"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#4470"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_paths</TT></STRONG> : <A HREF="node7.html#4472"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_selection</TT></STRONG> : <A HREF="node7.html#4474"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>shutdown</TT></STRONG> : <A HREF="node7.html#4476"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>snapshot</TT></STRONG> : <A HREF="node7.html#4478"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>submap</TT></STRONG> : <A HREF="node7.html#4526"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>submenu</TT></STRONG> : <A HREF="node7.html#4528"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>tagged_attach</TT></STRONG> : <A HREF="node7.html#4530"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>tagged_clear</TT></STRONG> : <A HREF="node7.html#4480"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>tagged_first</TT></STRONG> : <A HREF="node7.html#4482"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>tagged_i</TT></STRONG> : <A HREF="node7.html#4484"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>TR</TT></STRONG> : <A HREF="node7.html#4362"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>unsqueeze</TT></STRONG> : <A HREF="node7.html#4486"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>version</TT></STRONG> : <A HREF="node7.html#4488"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>warn</TT></STRONG> : <A HREF="node7.html#4490"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>warn_traced</TT></STRONG> : <A HREF="node7.html#4492"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>write_savefile</TT></STRONG> : <A HREF="node7.html#4390"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_change_property</TT></STRONG> : <A HREF="node7.html#4494"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_delete_property</TT></STRONG> : <A HREF="node7.html#4496"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_get_atom_name</TT></STRONG> : <A HREF="node7.html#4498"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_get_text_property</TT></STRONG> : <A HREF="node7.html#4500"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_get_window_property</TT></STRONG> : <A HREF="node7.html#4502"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_intern_atom</TT></STRONG> : <A HREF="node7.html#4504"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>x_set_text_property</TT></STRONG> : <A HREF="node7.html#4506"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>ioncore_deinit_hook</TT></STRONG>
- : <A HREF="node7.html#9535"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9883"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>ioncore_post_layout_setup_hook</TT></STRONG>
- : <A HREF="node7.html#9536"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9884"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>ioncore_sigchld_hook</TT></STRONG>
- : <A HREF="node7.html#9534"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9882"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>ioncore_snapshot_hook</TT></STRONG>
- : <A HREF="node7.html#9537"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9885"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>is_active</TT></STRONG>
- : <A HREF="node7.html#4559"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4648"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>is_activity</TT></STRONG>
- : <A HREF="node7.html#4561"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4650"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>is_fullscreen</TT></STRONG>
- : <A HREF="node7.html#4489"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#4570"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>is_hidden</TT></STRONG>
- : <A HREF="node7.html#4517"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4598"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>is_histcompl</TT></STRONG>
- : <A HREF="node7.html#8077"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8271"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>is_i18n</TT></STRONG>
- : <A HREF="node7.html#4370"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4445"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>is_mapped</TT></STRONG>
- : <A HREF="node7.html#4563"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4652"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>is_shaded</TT></STRONG>
- : <A HREF="node7.html#4464"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4545"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>is_systray_extl</TT></STRONG>
+ : <A HREF="node7.html#9554"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>is_tagged</TT></STRONG>
- : <A HREF="node7.html#4565"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4654"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>join</TT></STRONG>
- : <A HREF="node7.html#4629"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+ : <A HREF="node7.html#4718"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
 <DD><STRONG><TT>jumpto</TT></STRONG>
- : <A HREF="node4.html#1436"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1443"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textit">keysymdef.h</SPAN></STRONG>
- : <A HREF="node4.html#858"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#872"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>kill</TT></STRONG>
- : <A HREF="node7.html#4455"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4536"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>kill_line</TT></STRONG>
- : <A HREF="node7.html#8079"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8273"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>kill_to_bol</TT></STRONG>
- : <A HREF="node7.html#8081"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8275"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>kill_to_eol</TT></STRONG>
- : <A HREF="node7.html#8083"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8277"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>kill_word</TT></STRONG>
- : <A HREF="node7.html#8085"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8279"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>kpress</TT></STRONG>
- : <A HREF="node7.html#4430"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4509"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>kpress_wait</TT></STRONG>
- : <A HREF="node7.html#4432"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4511"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>load_module</TT></STRONG>
- : <A HREF="node7.html#4372"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4447"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">Lock</SPAN></STRONG>
- : <A HREF="node4.html#863"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#877"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>lookup_clientwin</TT></STRONG>
- : <A HREF="node7.html#4374"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4449"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>lookup_region</TT></STRONG>
- : <A HREF="node7.html#4376"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4451"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>lookup_script</TT></STRONG>
- : <A HREF="node7.html#4312"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4389"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>managed_i</TT></STRONG>
- : <A HREF="node7.html#4491"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#4519"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
- | <A HREF="node7.html#6967"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#4572"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#4600"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ | <A HREF="node7.html#7150"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>manager</TT></STRONG>
  : <A HREF="node3.html#390"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4567"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ | <A HREF="node7.html#4656"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>map</TT></STRONG>
- : <A HREF="node7.html#4631"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+ : <A HREF="node7.html#4720"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
 <DD><STRONG><TT>mark</TT></STRONG>
- : <A HREF="node7.html#8087"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8281"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>match_winprop_name</TT></STRONG>
- : <A HREF="node7.html#4434"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4513"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>max_size</TT></STRONG>
- : <A HREF="node4.html#1437"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1451"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>maximize_horiz</TT></STRONG>
- : <A HREF="node7.html#4466"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4547"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>maximize_vert</TT></STRONG>
- : <A HREF="node7.html#4468"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4549"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>mclick</TT></STRONG>
- : <A HREF="node7.html#4436"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4515"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>mdblclick</TT></STRONG>
- : <A HREF="node7.html#4438"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4517"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>mdrag</TT></STRONG>
- : <A HREF="node7.html#4440"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4519"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>menu</TT></STRONG>
- : <A HREF="node7.html#8931"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#9125"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG><TT>menuentry</TT></STRONG>
- : <A HREF="node4.html#1172"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4442"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#1186"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4521"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG>menus</STRONG>
- : <A HREF="node4.html#1114"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#1128"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>message</TT></STRONG>
- : <A HREF="node7.html#7992"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8174"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>min_size</TT></STRONG>
- : <A HREF="node4.html#1438"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1452"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>mkbottom</TT></STRONG>
- : <A HREF="node7.html#6932"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#7113"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>mod_dock</TT></STRONG><DL>
-<DD><STRONG><TT>set_floating_shown_on</TT></STRONG> : <A HREF="node7.html#9148"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>set_floating_shown_on</TT></STRONG> : <A HREF="node7.html#9342"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 </DL>
 <DD><STRONG><TT>mod_menu</TT></STRONG><DL>
-<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#8932"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>grabmenu</TT></STRONG> : <A HREF="node7.html#8928"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>menu</TT></STRONG> : <A HREF="node7.html#8930"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>pmenu</TT></STRONG> : <A HREF="node7.html#8936"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#8934"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#9126"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>grabmenu</TT></STRONG> : <A HREF="node7.html#9122"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>menu</TT></STRONG> : <A HREF="node7.html#9124"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>pmenu</TT></STRONG> : <A HREF="node7.html#9130"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#9128"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 </DL>
 <DD><STRONG><TT>mod_query</TT></STRONG><DL>
-<DD><STRONG><TT>defcmd</TT></STRONG> : <A HREF="node7.html#7977"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#7979"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>history_clear</TT></STRONG> : <A HREF="node7.html#7981"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>history_get</TT></STRONG> : <A HREF="node7.html#7983"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>history_push</TT></STRONG> : <A HREF="node7.html#7985"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>history_search</TT></STRONG> : <A HREF="node7.html#7987"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>history_table</TT></STRONG> : <A HREF="node7.html#7989"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>message</TT></STRONG> : <A HREF="node7.html#7991"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>popen_completions</TT></STRONG> : <A HREF="node7.html#7997"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query</TT></STRONG> : <A HREF="node7.html#7999"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_attachclient</TT></STRONG> : <A HREF="node7.html#8001"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_editfile</TT></STRONG> : <A HREF="node7.html#8003"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_exec</TT></STRONG> : <A HREF="node7.html#8005"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_gotoclient</TT></STRONG> : <A HREF="node7.html#8007"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_lua</TT></STRONG> : <A HREF="node7.html#8009"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_man</TT></STRONG> : <A HREF="node7.html#8011"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_menu</TT></STRONG> : <A HREF="node7.html#8013"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_renameframe</TT></STRONG> : <A HREF="node7.html#8015"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_renameworkspace</TT></STRONG> : <A HREF="node7.html#8017"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_restart</TT></STRONG> : <A HREF="node7.html#8019"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_runfile</TT></STRONG> : <A HREF="node7.html#8021"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_shutdown</TT></STRONG> : <A HREF="node7.html#8023"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_ssh</TT></STRONG> : <A HREF="node7.html#8025"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_workspace</TT></STRONG> : <A HREF="node7.html#8028"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>query_yesno</TT></STRONG> : <A HREF="node7.html#8030"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#7993"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>show_about_ion</TT></STRONG> : <A HREF="node7.html#8032"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>show_tree</TT></STRONG> : <A HREF="node7.html#8034"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>warn</TT></STRONG> : <A HREF="node7.html#7995"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>defcmd</TT></STRONG> : <A HREF="node7.html#8171"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#8175"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>history_clear</TT></STRONG> : <A HREF="node7.html#8177"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>history_get</TT></STRONG> : <A HREF="node7.html#8179"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>history_push</TT></STRONG> : <A HREF="node7.html#8181"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>history_search</TT></STRONG> : <A HREF="node7.html#8183"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>history_table</TT></STRONG> : <A HREF="node7.html#8185"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>message</TT></STRONG> : <A HREF="node7.html#8173"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>popen_completions</TT></STRONG> : <A HREF="node7.html#8189"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query</TT></STRONG> : <A HREF="node7.html#8191"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_attachclient</TT></STRONG> : <A HREF="node7.html#8193"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_editfile</TT></STRONG> : <A HREF="node7.html#8195"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_exec</TT></STRONG> : <A HREF="node7.html#8197"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_gotoclient</TT></STRONG> : <A HREF="node7.html#8199"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_lua</TT></STRONG> : <A HREF="node7.html#8201"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_man</TT></STRONG> : <A HREF="node7.html#8203"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_menu</TT></STRONG> : <A HREF="node7.html#8205"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_renameframe</TT></STRONG> : <A HREF="node7.html#8207"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_renameworkspace</TT></STRONG> : <A HREF="node7.html#8209"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_restart</TT></STRONG> : <A HREF="node7.html#8211"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_runfile</TT></STRONG> : <A HREF="node7.html#8213"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_shutdown</TT></STRONG> : <A HREF="node7.html#8215"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_ssh</TT></STRONG> : <A HREF="node7.html#8217"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_workspace</TT></STRONG> : <A HREF="node7.html#8220"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>query_yesno</TT></STRONG> : <A HREF="node7.html#8222"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#8187"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>show_about_ion</TT></STRONG> : <A HREF="node7.html#8224"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>show_tree</TT></STRONG> : <A HREF="node7.html#8226"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>warn</TT></STRONG> : <A HREF="node7.html#8228"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 </DL>
 <DD><STRONG><TT>mod_sp</TT></STRONG><DL>
-<DD><STRONG><TT>set_shown</TT></STRONG> : <A HREF="node7.html#9257"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
-<DD><STRONG><TT>set_shown_on</TT></STRONG> : <A HREF="node7.html#9259"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+<DD><STRONG><TT>set_shown</TT></STRONG> : <A HREF="node7.html#9451"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+<DD><STRONG><TT>set_shown_on</TT></STRONG> : <A HREF="node7.html#9453"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+</DL>
+<DD><STRONG><TT>mod_statusbar</TT></STRONG><DL>
+<DD><STRONG><TT>statusbars</TT></STRONG> : <A HREF="node7.html#9548"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 </DL>
 <DD><STRONG><TT>mod_tiling</TT></STRONG><DL>
-<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#6929"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>mkbottom</TT></STRONG> : <A HREF="node7.html#6931"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#6933"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#7110"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>mkbottom</TT></STRONG> : <A HREF="node7.html#7112"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#7114"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>untile</TT></STRONG> : <A HREF="node7.html#7116"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>mode</TT></STRONG>
- : <A HREF="node7.html#4470"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4551"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">ModN</SPAN></STRONG>
- : <A HREF="node4.html#861"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#875"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>move</TT></STRONG>
- : <A HREF="node7.html#4546"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#4629"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 <DD><STRONG><TT>mpress</TT></STRONG>
- : <A HREF="node7.html#4444"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4523"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>mx_count</TT></STRONG>
- : <A HREF="node7.html#4521"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4602"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>mx_current</TT></STRONG>
- : <A HREF="node7.html#4523"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4604"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>mx_i</TT></STRONG>
- : <A HREF="node7.html#4525"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4606"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>mx_nth</TT></STRONG>
- : <A HREF="node7.html#4527"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4608"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>name</TT></STRONG>
- : <A HREF="node7.html#4569"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4658"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>navi_first</TT></STRONG>
- : <A HREF="node7.html#4378"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4453"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>navi_next</TT></STRONG>
- : <A HREF="node7.html#4380"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4455"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>new_group</TT></STRONG>
- : <A HREF="node4.html#1439"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1444"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>next_completion</TT></STRONG>
- : <A HREF="node7.html#8089"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8283"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>nextto</TT></STRONG>
- : <A HREF="node7.html#6969"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7152"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>node_of</TT></STRONG>
- : <A HREF="node7.html#6971"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7154"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>nudge</TT></STRONG>
- : <A HREF="node7.html#4457"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4538"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">NumLock</SPAN></STRONG>
- : <A HREF="node4.html#866"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#880"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG>Obj</STRONG>
  : <A HREF="node3.html#418"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>oneshot</TT></STRONG>
- : <A HREF="node4.html#1440"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1445"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>p_move</TT></STRONG>
- : <A HREF="node7.html#4604"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+ : <A HREF="node7.html#4693"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
 <DD><STRONG><TT>p_resize</TT></STRONG>
- : <A HREF="node7.html#4606"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+ : <A HREF="node7.html#4695"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
 <DD><STRONG><TT>p_switch_tab</TT></STRONG>
- : <A HREF="node7.html#4472"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4553"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>p_tabdrag</TT></STRONG>
- : <A HREF="node7.html#4474"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4555"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>parent</TT></STRONG>
  : <A HREF="node3.html#375"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4571"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
- | <A HREF="node7.html#6939"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4660"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ | <A HREF="node7.html#7122"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>paste</TT></STRONG>
- : <A HREF="node7.html#8091"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8285"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>pmenu</TT></STRONG>
- : <A HREF="node7.html#8937"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#9131"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG><TT>point</TT></STRONG>
- : <A HREF="node7.html#8093"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8287"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>popen_bgread</TT></STRONG>
- : <A HREF="node7.html#4382"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4457"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>popen_completions</TT></STRONG>
- : <A HREF="node7.html#7998"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8190"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>PREFIX</TT></STRONG>
- : <A HREF="node4.html#584"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#590"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>prev_completion</TT></STRONG>
- : <A HREF="node7.html#8095"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8289"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>progname</TT></STRONG>
- : <A HREF="node7.html#4384"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4459"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>query</TT></STRONG>
- : <A HREF="node7.html#8000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8192"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_attachclient</TT></STRONG>
- : <A HREF="node7.html#8002"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8194"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_editfile</TT></STRONG>
- : <A HREF="node7.html#8004"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8196"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_exec</TT></STRONG>
- : <A HREF="node7.html#8006"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8198"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_gotoclient</TT></STRONG>
- : <A HREF="node7.html#8008"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8200"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_lua</TT></STRONG>
- : <A HREF="node7.html#8010"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8202"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_man</TT></STRONG>
- : <A HREF="node7.html#8012"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8204"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_menu</TT></STRONG>
- : <A HREF="node7.html#8014"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8206"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_renameframe</TT></STRONG>
- : <A HREF="node7.html#8016"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8208"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_renameworkspace</TT></STRONG>
- : <A HREF="node7.html#8018"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8210"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_restart</TT></STRONG>
- : <A HREF="node7.html#8020"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8212"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_runfile</TT></STRONG>
- : <A HREF="node7.html#8022"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8214"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_shutdown</TT></STRONG>
- : <A HREF="node7.html#8024"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8216"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_ssh</TT></STRONG>
- : <A HREF="node7.html#8026"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8218"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_workspace</TT></STRONG>
- : <A HREF="node7.html#8029"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8221"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>query_yesno</TT></STRONG>
- : <A HREF="node7.html#8031"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8223"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>quote_next</TT></STRONG>
- : <A HREF="node7.html#4459"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4540"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>read_config</TT></STRONG>
- : <A HREF="node7.html#4613"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+ : <A HREF="node7.html#4702"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
 <DD><STRONG><TT>read_savefile</TT></STRONG>
- : <A HREF="node7.html#4308"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4385"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>refresh</TT></STRONG>
- : <A HREF="node7.html#4615"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+ : <A HREF="node7.html#4704"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
 <DD><STRONG><TT>refresh_stylelist</TT></STRONG>
- : <A HREF="node7.html#4446"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4525"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>reg</TT></STRONG>
- : <A HREF="node7.html#6949"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#7132"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>region_do_warp_alt</TT></STRONG>
- : <A HREF="node7.html#9539"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9887"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>region_i</TT></STRONG>
- : <A HREF="node7.html#4386"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4461"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>region_notify_hook</TT></STRONG>
- : <A HREF="node7.html#9541"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9889"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>request_selection</TT></STRONG>
- : <A HREF="node7.html#4388"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4463"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>reset</TT></STRONG>
- : <A HREF="node7.html#9329"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#9677"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 <DD><STRONG><TT>resign</TT></STRONG>
- : <A HREF="node7.html#4390"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4465"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>resize</TT></STRONG>
- : <A HREF="node7.html#4548"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
- | <A HREF="node7.html#9156"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4631"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ | <A HREF="node7.html#9350"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>restart</TT></STRONG>
- : <A HREF="node7.html#4392"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4467"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>restart_other</TT></STRONG>
- : <A HREF="node7.html#4394"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4469"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>role</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1448"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1461"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG>root window</STRONG>
  : <A HREF="node3.html#336"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>rootwin_of</TT></STRONG>
- : <A HREF="node7.html#4573"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4662"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>rqclose</TT></STRONG>
- : <A HREF="node7.html#4575"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4664"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>rqclose_propagate</TT></STRONG>
- : <A HREF="node7.html#4577"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4666"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>rqgeom</TT></STRONG>
- : <A HREF="node7.html#4579"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
- | <A HREF="node7.html#6941"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4633"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ | <A HREF="node7.html#4668"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ | <A HREF="node7.html#7124"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>rqorder</TT></STRONG>
- : <A HREF="node7.html#4581"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4670"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG>screen</STRONG><DL>
 <DD><STRONG>physical</STRONG> : <A HREF="node3.html#338"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG>X</STRONG> : <A HREF="node3.html#337"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>screen_managed_changed_hook</TT></STRONG>
- : <A HREF="node7.html#9540"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9888"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>screen_of</TT></STRONG>
- : <A HREF="node7.html#4583"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4672"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>scrolldown</TT></STRONG>
- : <A HREF="node7.html#8110"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8304"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">ScrollLock</SPAN></STRONG>
- : <A HREF="node4.html#867"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#881"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>scrollup</TT></STRONG>
- : <A HREF="node7.html#8112"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8306"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>select_engine</TT></STRONG>
- : <A HREF="node7.html#4617"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
+ : <A HREF="node7.html#4706"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN></A>
 <DD><STRONG><TT>select_next</TT></STRONG>
- : <A HREF="node7.html#8944"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#9138"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>select_nth</TT></STRONG>
- : <A HREF="node7.html#8946"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#9140"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>select_prev</TT></STRONG>
- : <A HREF="node7.html#8948"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#9142"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set</TT></STRONG>
- : <A HREF="node7.html#4396"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#6934"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
- | <A HREF="node7.html#7994"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
- | <A HREF="node7.html#8935"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
- | <A HREF="node7.html#9158"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4471"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#7115"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ | <A HREF="node7.html#8188"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ | <A HREF="node7.html#9129"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ | <A HREF="node7.html#9352"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_activity</TT></STRONG>
- : <A HREF="node7.html#4585"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4674"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_bottom</TT></STRONG>
+ : <A HREF="node7.html#4574"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>set_completions</TT></STRONG>
- : <A HREF="node7.html#8038"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#8232"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_context</TT></STRONG>
- : <A HREF="node7.html#8097"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8291"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>set_floating</TT></STRONG>
- : <A HREF="node7.html#6975"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7158"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>set_floating_at</TT></STRONG>
- : <A HREF="node7.html#6973"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7156"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>set_floating_shown_on</TT></STRONG>
- : <A HREF="node7.html#9149"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#9343"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>set_fullscreen</TT></STRONG>
- : <A HREF="node7.html#4493"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#4576"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>set_hidden</TT></STRONG>
- : <A HREF="node7.html#4529"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4610"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>set_index</TT></STRONG>
- : <A HREF="node7.html#4531"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4612"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>set_managed_offset</TT></STRONG>
- : <A HREF="node7.html#4601"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
+ : <A HREF="node7.html#4690"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
 <DD><STRONG><TT>set_mark</TT></STRONG>
- : <A HREF="node7.html#8099"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8293"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>set_mode</TT></STRONG>
- : <A HREF="node7.html#4476"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4557"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>set_name</TT></STRONG>
- : <A HREF="node7.html#4587"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4676"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>set_name_exact</TT></STRONG>
- : <A HREF="node7.html#4589"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4678"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>set_numbers</TT></STRONG>
- : <A HREF="node7.html#4478"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4559"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>set_paths</TT></STRONG>
- : <A HREF="node7.html#4398"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4473"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_selection</TT></STRONG>
- : <A HREF="node7.html#4400"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4475"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_shaded</TT></STRONG>
- : <A HREF="node7.html#4480"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#4561"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>set_shown</TT></STRONG>
- : <A HREF="node7.html#9258"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+ : <A HREF="node7.html#9452"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
 <DD><STRONG><TT>set_shown_on</TT></STRONG>
- : <A HREF="node7.html#9260"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+ : <A HREF="node7.html#9454"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
 <DD><STRONG><TT>set_stdisp</TT></STRONG>
- : <A HREF="node7.html#4533"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4614"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>set_systray</TT></STRONG>
+ : <A HREF="node7.html#9556"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_tagged</TT></STRONG>
- : <A HREF="node7.html#4591"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4680"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_template</TT></STRONG>
+ : <A HREF="node7.html#9558"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_template_table</TT></STRONG>
+ : <A HREF="node7.html#9560"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>set_text</TT></STRONG>
- : <A HREF="node7.html#4500"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+ : <A HREF="node7.html#4583"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
 <DD><STRONG><TT>shell_safe</TT></STRONG>
- : <A HREF="node7.html#4620"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN></A>
+ : <A HREF="node7.html#4709"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textbf">Shift</SPAN></STRONG>
- : <A HREF="node4.html#859"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#873"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>show_about_ion</TT></STRONG>
- : <A HREF="node7.html#8033"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8225"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>show_tree</TT></STRONG>
- : <A HREF="node7.html#8035"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#8227"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>shutdown</TT></STRONG>
- : <A HREF="node7.html#4402"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4477"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>size_hints</TT></STRONG>
- : <A HREF="node7.html#4593"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+ : <A HREF="node7.html#4682"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>skip_word</TT></STRONG>
- : <A HREF="node7.html#8101"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8295"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>snapshot</TT></STRONG>
- : <A HREF="node7.html#4404"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4479"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>split</TT></STRONG>
- : <A HREF="node7.html#6977"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7160"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>split_at</TT></STRONG>
- : <A HREF="node7.html#6979"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7162"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>split_top</TT></STRONG>
- : <A HREF="node7.html#6981"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7164"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>split_tree</TT></STRONG>
- : <A HREF="node7.html#6983"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7166"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>statusbar</TT></STRONG>
- : <A HREF="node4.html#1441"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1446"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>statusbars</TT></STRONG>
+ : <A HREF="node7.html#9549"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>string</TT></STRONG><DL>
-<DD><STRONG><TT>shell_safe</TT></STRONG> : <A HREF="node7.html#4619"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN></A>
+<DD><STRONG><TT>shell_safe</TT></STRONG> : <A HREF="node7.html#4708"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN></A>
 </DL>
 <DD><STRONG>style</STRONG>
- : <A HREF="node5.html#1710"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node5.html#1708"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>submap</TT></STRONG>
- : <A HREF="node7.html#4448"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4527"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>submenu</TT></STRONG>
- : <A HREF="node4.html#1173"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4450"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#1187"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4529"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>substyle</TT></STRONG>
- : <A HREF="node5.html#1722"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#9331"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node5.html#1720"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#9679"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 <DD><STRONG><TT>switch_next</TT></STRONG>
- : <A HREF="node7.html#4535"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4616"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>switch_nth</TT></STRONG>
- : <A HREF="node7.html#4537"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4618"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>switch_prev</TT></STRONG>
- : <A HREF="node7.html#4539"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+ : <A HREF="node7.html#4620"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 <DD><STRONG><TT>switchto</TT></STRONG>
- : <A HREF="node4.html#1442"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1447"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textit">system.mk</SPAN></STRONG>
- : <A HREF="node4.html#586"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node4.html#592"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>table</TT></STRONG><DL>
-<DD><STRONG><TT>append</TT></STRONG> : <A HREF="node7.html#4622"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
-<DD><STRONG><TT>copy</TT></STRONG> : <A HREF="node7.html#4624"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
-<DD><STRONG><TT>icat</TT></STRONG> : <A HREF="node7.html#4626"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
-<DD><STRONG><TT>join</TT></STRONG> : <A HREF="node7.html#4628"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
-<DD><STRONG><TT>map</TT></STRONG> : <A HREF="node7.html#4630"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>append</TT></STRONG> : <A HREF="node7.html#4711"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>copy</TT></STRONG> : <A HREF="node7.html#4713"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>icat</TT></STRONG> : <A HREF="node7.html#4715"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>join</TT></STRONG> : <A HREF="node7.html#4717"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
+<DD><STRONG><TT>map</TT></STRONG> : <A HREF="node7.html#4719"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN></A>
 </DL>
+<DD><STRONG><TT>tagged_attach</TT></STRONG>
+ : <A HREF="node7.html#4531"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>tagged_clear</TT></STRONG>
+ : <A HREF="node7.html#4481"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>tagged_first</TT></STRONG>
- : <A HREF="node7.html#4406"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4483"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>tagged_i</TT></STRONG>
- : <A HREF="node7.html#4408"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4485"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>target</TT></STRONG>
- : <A HREF="node4.html#1443"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1448"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>tiling_placement_alt</TT></STRONG>
- : <A HREF="node7.html#9538"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+ : <A HREF="node7.html#9886"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 <DD><STRONG><TT>tl</TT></STRONG>
- : <A HREF="node7.html#6958"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+ : <A HREF="node7.html#7141"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
 <DD><STRONG><TT>TR</TT></STRONG>
- : <A HREF="node7.html#4286"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4363"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG>transient</STRONG>
- : <A HREF="node4.html#1406"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node4.html#1415"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>transient_mode</TT></STRONG>
- : <A HREF="node4.html#1444"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>transients_at_top</TT></STRONG>
- : <A HREF="node4.html#1445"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1449"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>transparent</TT></STRONG>
- : <A HREF="node4.html#1446"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1450"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>transpose</TT></STRONG>
- : <A HREF="node7.html#6943"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#7126"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>transpose_at</TT></STRONG>
- : <A HREF="node7.html#6963"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7146"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>transpose_chars</TT></STRONG>
- : <A HREF="node7.html#8103"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8297"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>transpose_words</TT></STRONG>
- : <A HREF="node7.html#8105"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node7.html#8299"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 <DD><STRONG><TT>typeahead_clear</TT></STRONG>
- : <A HREF="node7.html#8950"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#9144"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>unsplit_at</TT></STRONG>
- : <A HREF="node7.html#6985"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node7.html#7168"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>unsqueeze</TT></STRONG>
+ : <A HREF="node7.html#4487"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>untile</TT></STRONG>
+ : <A HREF="node7.html#7117"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>update</TT></STRONG>
+ : <A HREF="node7.html#9562"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>userpos</TT></STRONG>
+ : <A HREF="node4.html#1459"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>version</TT></STRONG>
- : <A HREF="node7.html#4410"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4489"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>warn</TT></STRONG>
- : <A HREF="node7.html#4412"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#7996"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+ : <A HREF="node7.html#4491"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#8229"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 <DD><STRONG><TT>warn_traced</TT></STRONG>
- : <A HREF="node7.html#4414"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4493"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>WClientWin</TT></STRONG>
  : <A HREF="node3.html#420"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>get_ident</TT></STRONG> : <A HREF="node7.html#4452"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>kill</TT></STRONG> : <A HREF="node7.html#4454"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>nudge</TT></STRONG> : <A HREF="node7.html#4456"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>quote_next</TT></STRONG> : <A HREF="node7.html#4458"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>xid</TT></STRONG> : <A HREF="node7.html#4460"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get_ident</TT></STRONG> : <A HREF="node7.html#4533"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>kill</TT></STRONG> : <A HREF="node7.html#4535"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>nudge</TT></STRONG> : <A HREF="node7.html#4537"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>quote_next</TT></STRONG> : <A HREF="node7.html#4539"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>xid</TT></STRONG> : <A HREF="node7.html#4541"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>WComplProxy</TT></STRONG><DL>
-<DD><STRONG><TT>set_completions</TT></STRONG> : <A HREF="node7.html#8037"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_completions</TT></STRONG> : <A HREF="node7.html#8231"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>WDock</TT></STRONG><DL>
-<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#9151"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#9153"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>resize</TT></STRONG> : <A HREF="node7.html#9155"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#9157"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#9345"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>get</TT></STRONG> : <A HREF="node7.html#9347"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>resize</TT></STRONG> : <A HREF="node7.html#9349"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set</TT></STRONG> : <A HREF="node7.html#9351"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>WEdln</TT></STRONG>
  : <A HREF="node3.html#433"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>back</TT></STRONG> : <A HREF="node7.html#8040"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>backspace</TT></STRONG> : <A HREF="node7.html#8042"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>bkill_word</TT></STRONG> : <A HREF="node7.html#8044"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>bol</TT></STRONG> : <A HREF="node7.html#8046"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>bskip_word</TT></STRONG> : <A HREF="node7.html#8048"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>clear_mark</TT></STRONG> : <A HREF="node7.html#8050"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>complete</TT></STRONG> : <A HREF="node7.html#8052"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>contents</TT></STRONG> : <A HREF="node7.html#8054"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>context</TT></STRONG> : <A HREF="node7.html#8056"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>copy</TT></STRONG> : <A HREF="node7.html#8058"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>cut</TT></STRONG> : <A HREF="node7.html#8060"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>delete</TT></STRONG> : <A HREF="node7.html#8062"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>eol</TT></STRONG> : <A HREF="node7.html#8064"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#8066"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>forward</TT></STRONG> : <A HREF="node7.html#8068"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>history_next</TT></STRONG> : <A HREF="node7.html#8070"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>history_prev</TT></STRONG> : <A HREF="node7.html#8072"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>insstr</TT></STRONG> : <A HREF="node7.html#8074"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>is_histcompl</TT></STRONG> : <A HREF="node7.html#8076"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>kill_line</TT></STRONG> : <A HREF="node7.html#8078"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>kill_to_bol</TT></STRONG> : <A HREF="node7.html#8080"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>kill_to_eol</TT></STRONG> : <A HREF="node7.html#8082"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>kill_word</TT></STRONG> : <A HREF="node7.html#8084"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>mark</TT></STRONG> : <A HREF="node7.html#8086"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>next_completion</TT></STRONG> : <A HREF="node7.html#8088"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>paste</TT></STRONG> : <A HREF="node7.html#8090"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>point</TT></STRONG> : <A HREF="node7.html#8092"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>prev_completion</TT></STRONG> : <A HREF="node7.html#8094"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set_context</TT></STRONG> : <A HREF="node7.html#8096"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set_mark</TT></STRONG> : <A HREF="node7.html#8098"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>skip_word</TT></STRONG> : <A HREF="node7.html#8100"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>transpose_chars</TT></STRONG> : <A HREF="node7.html#8102"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>transpose_words</TT></STRONG> : <A HREF="node7.html#8104"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>back</TT></STRONG> : <A HREF="node7.html#8234"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>backspace</TT></STRONG> : <A HREF="node7.html#8236"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>bkill_word</TT></STRONG> : <A HREF="node7.html#8238"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>bol</TT></STRONG> : <A HREF="node7.html#8240"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>bskip_word</TT></STRONG> : <A HREF="node7.html#8242"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>clear_mark</TT></STRONG> : <A HREF="node7.html#8244"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>complete</TT></STRONG> : <A HREF="node7.html#8246"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>contents</TT></STRONG> : <A HREF="node7.html#8248"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>context</TT></STRONG> : <A HREF="node7.html#8250"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>copy</TT></STRONG> : <A HREF="node7.html#8252"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>cut</TT></STRONG> : <A HREF="node7.html#8254"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>delete</TT></STRONG> : <A HREF="node7.html#8256"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>eol</TT></STRONG> : <A HREF="node7.html#8258"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#8260"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>forward</TT></STRONG> : <A HREF="node7.html#8262"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>history_next</TT></STRONG> : <A HREF="node7.html#8264"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>history_prev</TT></STRONG> : <A HREF="node7.html#8266"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>insstr</TT></STRONG> : <A HREF="node7.html#8268"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>is_histcompl</TT></STRONG> : <A HREF="node7.html#8270"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>kill_line</TT></STRONG> : <A HREF="node7.html#8272"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>kill_to_bol</TT></STRONG> : <A HREF="node7.html#8274"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>kill_to_eol</TT></STRONG> : <A HREF="node7.html#8276"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>kill_word</TT></STRONG> : <A HREF="node7.html#8278"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>mark</TT></STRONG> : <A HREF="node7.html#8280"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>next_completion</TT></STRONG> : <A HREF="node7.html#8282"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>paste</TT></STRONG> : <A HREF="node7.html#8284"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>point</TT></STRONG> : <A HREF="node7.html#8286"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>prev_completion</TT></STRONG> : <A HREF="node7.html#8288"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set_context</TT></STRONG> : <A HREF="node7.html#8290"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set_mark</TT></STRONG> : <A HREF="node7.html#8292"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>skip_word</TT></STRONG> : <A HREF="node7.html#8294"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>transpose_chars</TT></STRONG> : <A HREF="node7.html#8296"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>transpose_words</TT></STRONG> : <A HREF="node7.html#8298"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>WFrame</TT></STRONG>
  : <A HREF="node3.html#424"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>is_shaded</TT></STRONG> : <A HREF="node7.html#4463"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>maximize_horiz</TT></STRONG> : <A HREF="node7.html#4465"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>maximize_vert</TT></STRONG> : <A HREF="node7.html#4467"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>mode</TT></STRONG> : <A HREF="node7.html#4469"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>p_switch_tab</TT></STRONG> : <A HREF="node7.html#4471"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>p_tabdrag</TT></STRONG> : <A HREF="node7.html#4473"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set_mode</TT></STRONG> : <A HREF="node7.html#4475"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set_numbers</TT></STRONG> : <A HREF="node7.html#4477"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>set_shaded</TT></STRONG> : <A HREF="node7.html#4479"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>is_shaded</TT></STRONG> : <A HREF="node7.html#4544"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>maximize_horiz</TT></STRONG> : <A HREF="node7.html#4546"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>maximize_vert</TT></STRONG> : <A HREF="node7.html#4548"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>mode</TT></STRONG> : <A HREF="node7.html#4550"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>p_switch_tab</TT></STRONG> : <A HREF="node7.html#4552"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>p_tabdrag</TT></STRONG> : <A HREF="node7.html#4554"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set_mode</TT></STRONG> : <A HREF="node7.html#4556"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set_numbers</TT></STRONG> : <A HREF="node7.html#4558"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>set_shaded</TT></STRONG> : <A HREF="node7.html#4560"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>WGroup</TT></STRONG>
  : <A HREF="node3.html#425"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#4482"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>attach_new</TT></STRONG> : <A HREF="node7.html#4484"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>bottom</TT></STRONG> : <A HREF="node7.html#4486"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>is_fullscreen</TT></STRONG> : <A HREF="node7.html#4488"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#4490"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>set_fullscreen</TT></STRONG> : <A HREF="node7.html#4492"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#4563"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>attach_new</TT></STRONG> : <A HREF="node7.html#4565"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>bottom</TT></STRONG> : <A HREF="node7.html#4567"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>is_fullscreen</TT></STRONG> : <A HREF="node7.html#4569"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#4571"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>set_bottom</TT></STRONG> : <A HREF="node7.html#4573"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>set_fullscreen</TT></STRONG> : <A HREF="node7.html#4575"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 </DL>
 <DD><STRONG>WGroupCW</STRONG>
  : <A HREF="node3.html#427"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>WGroupWS</TT></STRONG>
  : <A HREF="node3.html#426"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>attach_framed</TT></STRONG> : <A HREF="node7.html#4496"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>attach_framed</TT></STRONG> : <A HREF="node7.html#4579"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 </DL>
 <DD><STRONG><TT>WInfoWin</TT></STRONG><DL>
-<DD><STRONG><TT>set_text</TT></STRONG> : <A HREF="node7.html#4499"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
+<DD><STRONG><TT>set_text</TT></STRONG> : <A HREF="node7.html#4582"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
 </DL>
 <DD><STRONG>Winprops</STRONG>
- : <A HREF="node4.html#1269"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#1283"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG><TT>WInput</TT></STRONG>
  : <A HREF="node3.html#432"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#8107"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>scrolldown</TT></STRONG> : <A HREF="node7.html#8109"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>scrollup</TT></STRONG> : <A HREF="node7.html#8111"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#8301"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>scrolldown</TT></STRONG> : <A HREF="node7.html#8303"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>scrollup</TT></STRONG> : <A HREF="node7.html#8305"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 </DL>
 <DD><STRONG><TT>WMenu</TT></STRONG><DL>
-<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#8939"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#8941"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>select_next</TT></STRONG> : <A HREF="node7.html#8943"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>select_nth</TT></STRONG> : <A HREF="node7.html#8945"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>select_prev</TT></STRONG> : <A HREF="node7.html#8947"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>typeahead_clear</TT></STRONG> : <A HREF="node7.html#8949"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#9133"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#9135"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>select_next</TT></STRONG> : <A HREF="node7.html#9137"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>select_nth</TT></STRONG> : <A HREF="node7.html#9139"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>select_prev</TT></STRONG> : <A HREF="node7.html#9141"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>typeahead_clear</TT></STRONG> : <A HREF="node7.html#9143"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG>WMessage</STRONG>
  : <A HREF="node3.html#434"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>WMoveresMode</TT></STRONG><DL>
-<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#4541"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
-<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#4543"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
-<DD><STRONG><TT>move</TT></STRONG> : <A HREF="node7.html#4545"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
-<DD><STRONG><TT>resize</TT></STRONG> : <A HREF="node7.html#4547"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>cancel</TT></STRONG> : <A HREF="node7.html#4622"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>finish</TT></STRONG> : <A HREF="node7.html#4624"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>geom</TT></STRONG> : <A HREF="node7.html#4626"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>move</TT></STRONG> : <A HREF="node7.html#4628"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>resize</TT></STRONG> : <A HREF="node7.html#4630"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
+<DD><STRONG><TT>rqgeom</TT></STRONG> : <A HREF="node7.html#4632"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN></A>
 </DL>
 <DD><STRONG><TT>WMPlex</TT></STRONG><DL>
-<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#4502"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>attach_new</TT></STRONG> : <A HREF="node7.html#4504"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>attach_tagged</TT></STRONG> : <A HREF="node7.html#4506"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>dec_index</TT></STRONG> : <A HREF="node7.html#4508"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>get_index</TT></STRONG> : <A HREF="node7.html#4510"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>get_stdisp</TT></STRONG> : <A HREF="node7.html#4512"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>inc_index</TT></STRONG> : <A HREF="node7.html#4514"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>is_hidden</TT></STRONG> : <A HREF="node7.html#4516"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#4518"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>mx_count</TT></STRONG> : <A HREF="node7.html#4520"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>mx_current</TT></STRONG> : <A HREF="node7.html#4522"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>mx_i</TT></STRONG> : <A HREF="node7.html#4524"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>mx_nth</TT></STRONG> : <A HREF="node7.html#4526"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>set_hidden</TT></STRONG> : <A HREF="node7.html#4528"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>set_index</TT></STRONG> : <A HREF="node7.html#4530"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>set_stdisp</TT></STRONG> : <A HREF="node7.html#4532"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>switch_next</TT></STRONG> : <A HREF="node7.html#4534"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>switch_nth</TT></STRONG> : <A HREF="node7.html#4536"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
-<DD><STRONG><TT>switch_prev</TT></STRONG> : <A HREF="node7.html#4538"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>attach</TT></STRONG> : <A HREF="node7.html#4585"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>attach_new</TT></STRONG> : <A HREF="node7.html#4587"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>dec_index</TT></STRONG> : <A HREF="node7.html#4589"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>get_index</TT></STRONG> : <A HREF="node7.html#4591"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>get_stdisp</TT></STRONG> : <A HREF="node7.html#4593"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>inc_index</TT></STRONG> : <A HREF="node7.html#4595"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>is_hidden</TT></STRONG> : <A HREF="node7.html#4597"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#4599"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>mx_count</TT></STRONG> : <A HREF="node7.html#4601"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>mx_current</TT></STRONG> : <A HREF="node7.html#4603"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>mx_i</TT></STRONG> : <A HREF="node7.html#4605"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>mx_nth</TT></STRONG> : <A HREF="node7.html#4607"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>set_hidden</TT></STRONG> : <A HREF="node7.html#4609"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>set_index</TT></STRONG> : <A HREF="node7.html#4611"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>set_stdisp</TT></STRONG> : <A HREF="node7.html#4613"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>switch_next</TT></STRONG> : <A HREF="node7.html#4615"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>switch_nth</TT></STRONG> : <A HREF="node7.html#4617"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
+<DD><STRONG><TT>switch_prev</TT></STRONG> : <A HREF="node7.html#4619"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN></A>
 </DL>
 <DD><STRONG><TT>WRegion</TT></STRONG>
  : <A HREF="node3.html#419"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>begin_kbresize</TT></STRONG> : <A HREF="node7.html#4550"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#4552"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>geom</TT></STRONG> : <A HREF="node7.html#4554"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>goto</TT></STRONG> : <A HREF="node7.html#4556"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>is_active</TT></STRONG> : <A HREF="node7.html#4558"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>is_activity</TT></STRONG> : <A HREF="node7.html#4560"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>is_mapped</TT></STRONG> : <A HREF="node7.html#4562"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>is_tagged</TT></STRONG> : <A HREF="node7.html#4564"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>manager</TT></STRONG> : <A HREF="node7.html#4566"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>name</TT></STRONG> : <A HREF="node7.html#4568"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>parent</TT></STRONG> : <A HREF="node7.html#4570"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>rootwin_of</TT></STRONG> : <A HREF="node7.html#4572"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>rqclose</TT></STRONG> : <A HREF="node7.html#4574"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>rqclose_propagate</TT></STRONG> : <A HREF="node7.html#4576"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>rqgeom</TT></STRONG> : <A HREF="node7.html#4578"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>rqorder</TT></STRONG> : <A HREF="node7.html#4580"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>screen_of</TT></STRONG> : <A HREF="node7.html#4582"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>set_activity</TT></STRONG> : <A HREF="node7.html#4584"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>set_name</TT></STRONG> : <A HREF="node7.html#4586"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>set_name_exact</TT></STRONG> : <A HREF="node7.html#4588"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>set_tagged</TT></STRONG> : <A HREF="node7.html#4590"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>size_hints</TT></STRONG> : <A HREF="node7.html#4592"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>begin_kbresize</TT></STRONG> : <A HREF="node7.html#4635"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#4637"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>geom</TT></STRONG> : <A HREF="node7.html#4639"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>get_configuration</TT></STRONG> : <A HREF="node7.html#4641"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>goto</TT></STRONG> : <A HREF="node7.html#4643"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>groupleader_of</TT></STRONG> : <A HREF="node7.html#4645"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>is_active</TT></STRONG> : <A HREF="node7.html#4647"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>is_activity</TT></STRONG> : <A HREF="node7.html#4649"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>is_mapped</TT></STRONG> : <A HREF="node7.html#4651"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>is_tagged</TT></STRONG> : <A HREF="node7.html#4653"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>manager</TT></STRONG> : <A HREF="node7.html#4655"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>name</TT></STRONG> : <A HREF="node7.html#4657"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>parent</TT></STRONG> : <A HREF="node7.html#4659"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>rootwin_of</TT></STRONG> : <A HREF="node7.html#4661"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>rqclose</TT></STRONG> : <A HREF="node7.html#4663"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>rqclose_propagate</TT></STRONG> : <A HREF="node7.html#4665"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>rqgeom</TT></STRONG> : <A HREF="node7.html#4667"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>rqorder</TT></STRONG> : <A HREF="node7.html#4669"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>screen_of</TT></STRONG> : <A HREF="node7.html#4671"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_activity</TT></STRONG> : <A HREF="node7.html#4673"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_name</TT></STRONG> : <A HREF="node7.html#4675"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_name_exact</TT></STRONG> : <A HREF="node7.html#4677"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>set_tagged</TT></STRONG> : <A HREF="node7.html#4679"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
+<DD><STRONG><TT>size_hints</TT></STRONG> : <A HREF="node7.html#4681"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
 </DL>
 <DD><STRONG><TT>write_savefile</TT></STRONG>
- : <A HREF="node7.html#4314"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4391"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>WRootWin</TT></STRONG>
  : <A HREF="node3.html#422"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>current_scr</TT></STRONG> : <A HREF="node7.html#4595"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN></A>
+<DD><STRONG><TT>current_scr</TT></STRONG> : <A HREF="node7.html#4684"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN></A>
 </DL>
 <DD><STRONG><TT>WScreen</TT></STRONG>
  : <A HREF="node3.html#423"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>id</TT></STRONG> : <A HREF="node7.html#4598"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
-<DD><STRONG><TT>set_managed_offset</TT></STRONG> : <A HREF="node7.html#4600"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
+<DD><STRONG><TT>id</TT></STRONG> : <A HREF="node7.html#4687"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
+<DD><STRONG><TT>set_managed_offset</TT></STRONG> : <A HREF="node7.html#4689"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN></A>
 </DL>
 <DD><STRONG><TT>WSplit</TT></STRONG>
  : <A HREF="node3.html#430"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>geom</TT></STRONG> : <A HREF="node7.html#6936"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>parent</TT></STRONG> : <A HREF="node7.html#6938"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>rqgeom</TT></STRONG> : <A HREF="node7.html#6940"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>transpose</TT></STRONG> : <A HREF="node7.html#6942"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>geom</TT></STRONG> : <A HREF="node7.html#7119"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>parent</TT></STRONG> : <A HREF="node7.html#7121"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>rqgeom</TT></STRONG> : <A HREF="node7.html#7123"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>transpose</TT></STRONG> : <A HREF="node7.html#7125"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>WSplitInner</TT></STRONG><DL>
-<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#6945"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+<DD><STRONG><TT>current</TT></STRONG> : <A HREF="node7.html#7128"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
 </DL>
 <DD><STRONG><TT>WSplitRegion</TT></STRONG><DL>
-<DD><STRONG><TT>reg</TT></STRONG> : <A HREF="node7.html#6948"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
+<DD><STRONG><TT>reg</TT></STRONG> : <A HREF="node7.html#7131"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 </DL>
 <DD><STRONG><TT>WSplitSplit</TT></STRONG><DL>
-<DD><STRONG><TT>br</TT></STRONG> : <A HREF="node7.html#6951"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>dir</TT></STRONG> : <A HREF="node7.html#6953"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>flip</TT></STRONG> : <A HREF="node7.html#6955"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG><TT>tl</TT></STRONG> : <A HREF="node7.html#6957"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>br</TT></STRONG> : <A HREF="node7.html#7134"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>dir</TT></STRONG> : <A HREF="node7.html#7136"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>flip</TT></STRONG> : <A HREF="node7.html#7138"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+<DD><STRONG><TT>tl</TT></STRONG> : <A HREF="node7.html#7140"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
+</DL>
+<DD><STRONG><TT>WStatusBar</TT></STRONG><DL>
+<DD><STRONG><TT>get_template_table</TT></STRONG> : <A HREF="node7.html#9551"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>is_systray_extl</TT></STRONG> : <A HREF="node7.html#9553"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_systray</TT></STRONG> : <A HREF="node7.html#9555"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_template</TT></STRONG> : <A HREF="node7.html#9557"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>set_template_table</TT></STRONG> : <A HREF="node7.html#9559"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+<DD><STRONG><TT>update</TT></STRONG> : <A HREF="node7.html#9561"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 </DL>
 <DD><STRONG><TT>WTiling</TT></STRONG>
  : <A HREF="node3.html#429"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>farthest</TT></STRONG> : <A HREF="node7.html#6964"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>flip_at</TT></STRONG> : <A HREF="node7.html#6960"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#6966"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>nextto</TT></STRONG> : <A HREF="node7.html#6968"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>node_of</TT></STRONG> : <A HREF="node7.html#6970"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>set_floating</TT></STRONG> : <A HREF="node7.html#6974"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>set_floating_at</TT></STRONG> : <A HREF="node7.html#6972"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>split</TT></STRONG> : <A HREF="node7.html#6976"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>split_at</TT></STRONG> : <A HREF="node7.html#6978"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>split_top</TT></STRONG> : <A HREF="node7.html#6980"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>split_tree</TT></STRONG> : <A HREF="node7.html#6982"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>transpose_at</TT></STRONG> : <A HREF="node7.html#6962"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>unsplit_at</TT></STRONG> : <A HREF="node7.html#6984"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>farthest</TT></STRONG> : <A HREF="node7.html#7147"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>flip_at</TT></STRONG> : <A HREF="node7.html#7143"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>managed_i</TT></STRONG> : <A HREF="node7.html#7149"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>nextto</TT></STRONG> : <A HREF="node7.html#7151"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>node_of</TT></STRONG> : <A HREF="node7.html#7153"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>set_floating</TT></STRONG> : <A HREF="node7.html#7157"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>set_floating_at</TT></STRONG> : <A HREF="node7.html#7155"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>split</TT></STRONG> : <A HREF="node7.html#7159"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>split_at</TT></STRONG> : <A HREF="node7.html#7161"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>split_top</TT></STRONG> : <A HREF="node7.html#7163"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>split_tree</TT></STRONG> : <A HREF="node7.html#7165"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>transpose_at</TT></STRONG> : <A HREF="node7.html#7145"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+<DD><STRONG><TT>unsplit_at</TT></STRONG> : <A HREF="node7.html#7167"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 </DL>
 <DD><STRONG><TT>WWindow</TT></STRONG>
  : <A HREF="node3.html#421"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DL>
-<DD><STRONG><TT>p_move</TT></STRONG> : <A HREF="node7.html#4603"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
-<DD><STRONG><TT>p_resize</TT></STRONG> : <A HREF="node7.html#4605"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
-<DD><STRONG><TT>xid</TT></STRONG> : <A HREF="node7.html#4607"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+<DD><STRONG><TT>p_move</TT></STRONG> : <A HREF="node7.html#4692"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+<DD><STRONG><TT>p_resize</TT></STRONG> : <A HREF="node7.html#4694"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+<DD><STRONG><TT>xid</TT></STRONG> : <A HREF="node7.html#4696"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
 </DL>
 <DD><STRONG><TT>x_change_property</TT></STRONG>
- : <A HREF="node7.html#4416"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4495"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_delete_property</TT></STRONG>
- : <A HREF="node7.html#4418"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4497"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_get_atom_name</TT></STRONG>
- : <A HREF="node7.html#4420"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4499"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_get_text_property</TT></STRONG>
- : <A HREF="node7.html#4422"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4501"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_get_window_property</TT></STRONG>
- : <A HREF="node7.html#4424"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4503"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_intern_atom</TT></STRONG>
- : <A HREF="node7.html#4426"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4505"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>x_set_text_property</TT></STRONG>
- : <A HREF="node7.html#4428"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ : <A HREF="node7.html#4507"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><TT>xid</TT></STRONG>
- : <A HREF="node7.html#4461"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node7.html#4608"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
+ : <A HREF="node7.html#4542"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
+ | <A HREF="node7.html#4697"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN></A>
 <DD><STRONG>Xinerama</STRONG>
  : <A HREF="node3.html#339"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
 <DD><STRONG><SPAN  CLASS="textit">xmodmap</SPAN></STRONG>
- : <A HREF="node4.html#865"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
+ : <A HREF="node4.html#879"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
 <DD><STRONG>xprop</STRONG>
- : <A HREF="node4.html#1402"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
+ : <A HREF="node4.html#1411"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
 
 </DL>
 
index b55a763a2b4ef95d28bebbefea6480344fd4041c..0bbefa4b3e63212f530020a14e0e7cafbcd0ed53 100644 (file)
@@ -27,26 +27,26 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png"> 
-<A NAME="tex2html443"
+<A NAME="tex2html452"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html439"
+<A NAME="tex2html448"
   HREF="node11.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html445"
+<A NAME="tex2html454"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html447"
+<A NAME="tex2html456"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Up:</B> <A NAME="tex2html444"
+<B> Up:</B> <A NAME="tex2html453"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html440"
+<B> Previous:</B> <A NAME="tex2html449"
   HREF="node11.html">Index</A>
- &nbsp; <B>  <A NAME="tex2html446"
+ &nbsp; <B>  <A NAME="tex2html455"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html448"
+ &nbsp; <B>  <A NAME="tex2html457"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -70,7 +70,7 @@ Mathematics Department, Macquarie University, Sydney.
 The command line arguments were: <BR>
  <STRONG>latex2html</STRONG> <TT>-show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 3 ionconf</TT>
 <P>
-The translation was initiated by tuomov on 2007-02-03
+The translation was initiated by tuomov on 2007-03-18
 <BR><HR>
 
 </BODY>
index 9d85352463a7d5f279d430b09ff0a2573af6e2b0..daebdf487a17e78f6bd16082fd506ac2f0a24715 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html226"
+<A NAME="tex2html232"
   HREF="node3.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html220"
+<A NAME="tex2html226"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html214"
+<A NAME="tex2html220"
   HREF="node1.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html222"
+<A NAME="tex2html228"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html224"
+<A NAME="tex2html230"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html227"
+<B> Next:</B> <A NAME="tex2html233"
   HREF="node3.html">2. Preliminaries: Key concepts</A>
-<B> Up:</B> <A NAME="tex2html221"
+<B> Up:</B> <A NAME="tex2html227"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html215"
+<B> Previous:</B> <A NAME="tex2html221"
   HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html223"
+ &nbsp; <B>  <A NAME="tex2html229"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html225"
+ &nbsp; <B>  <A NAME="tex2html231"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -131,31 +131,31 @@ listing of all these functions.
 
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html226"
+<A NAME="tex2html232"
   HREF="node3.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html220"
+<A NAME="tex2html226"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html214"
+<A NAME="tex2html220"
   HREF="node1.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html222"
+<A NAME="tex2html228"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html224"
+<A NAME="tex2html230"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html227"
+<B> Next:</B> <A NAME="tex2html233"
   HREF="node3.html">2. Preliminaries: Key concepts</A>
-<B> Up:</B> <A NAME="tex2html221"
+<B> Up:</B> <A NAME="tex2html227"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html215"
+<B> Previous:</B> <A NAME="tex2html221"
   HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html223"
+ &nbsp; <B>  <A NAME="tex2html229"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html225"
+ &nbsp; <B>  <A NAME="tex2html231"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index cc7578a7f485aab9c7fee85a960386465d45794d..63c26668fb6f41c2581e2abe1966454a50abadbd 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html240"
+<A NAME="tex2html246"
   HREF="node4.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html234"
+<A NAME="tex2html240"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html228"
+<A NAME="tex2html234"
   HREF="node2.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html236"
+<A NAME="tex2html242"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html238"
+<A NAME="tex2html244"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html241"
+<B> Next:</B> <A NAME="tex2html247"
   HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html235"
+<B> Up:</B> <A NAME="tex2html241"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html229"
+<B> Previous:</B> <A NAME="tex2html235"
   HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html237"
+ &nbsp; <B>  <A NAME="tex2html243"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html239"
+ &nbsp; <B>  <A NAME="tex2html245"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,22 +61,22 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html242"
+<LI><A NAME="tex2html248"
   HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
-<LI><A NAME="tex2html243"
+<LI><A NAME="tex2html249"
   HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
 <UL>
-<LI><A NAME="tex2html244"
+<LI><A NAME="tex2html250"
   HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html245"
+<LI><A NAME="tex2html251"
   HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
 <UL>
-<LI><A NAME="tex2html246"
+<LI><A NAME="tex2html252"
   HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html247"
+<LI><A NAME="tex2html253"
   HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
 </UL>
-<LI><A NAME="tex2html248"
+<LI><A NAME="tex2html254"
   HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
 </UL></UL>
 <!--End of Table of Child-Links-->
@@ -453,10 +453,12 @@ Most common manager-managed relations</CAPTION>
           |         |--&gt; WClientWin
           |--&gt;WGroupWSs for workspaces
           |    |--&gt;WTiling
-          |    |    |--&gt;possibly a WEdln, WMessage or WMenu
           |    |    |--&gt;WFrames
-          |    |         |--&gt;WGroupCWs (with contents as above)
+          |    |    |    |--&gt;WGroupCWs (with contents as above)
+          |    |    |--&gt;possibly a WStatusBar or WDock
           |    |--&gt;WFrames for floating content
+          |    |--&gt;possibly a WEdln, WMessage or WMenu
+          |    |--&gt;possibly a WStatusBar or WDock (if no tiling)
           |--&gt;WFrames for sticky stuff, such as the scratchpad
 </PRE></TD></TR>
 </TABLE>
@@ -510,31 +512,31 @@ consideration:
 </DL>
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html240"
+<A NAME="tex2html246"
   HREF="node4.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html234"
+<A NAME="tex2html240"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html228"
+<A NAME="tex2html234"
   HREF="node2.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html236"
+<A NAME="tex2html242"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html238"
+<A NAME="tex2html244"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html241"
+<B> Next:</B> <A NAME="tex2html247"
   HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html235"
+<B> Up:</B> <A NAME="tex2html241"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html229"
+<B> Previous:</B> <A NAME="tex2html235"
   HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html237"
+ &nbsp; <B>  <A NAME="tex2html243"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html239"
+ &nbsp; <B>  <A NAME="tex2html245"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index d156abd426bc9cb0516db9e6753a0984443e03db..0aab7ccf5ef6e25be645d51f6ef38fe919a96ca4 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html261"
+<A NAME="tex2html267"
   HREF="node5.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html255"
+<A NAME="tex2html261"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html249"
+<A NAME="tex2html255"
   HREF="node3.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html257"
+<A NAME="tex2html263"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html259"
+<A NAME="tex2html265"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html262"
+<B> Next:</B> <A NAME="tex2html268"
   HREF="node5.html">4. Graphical styles</A>
-<B> Up:</B> <A NAME="tex2html256"
+<B> Up:</B> <A NAME="tex2html262"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html250"
+<B> Previous:</B> <A NAME="tex2html256"
   HREF="node3.html">2. Preliminaries: Key concepts</A>
- &nbsp; <B>  <A NAME="tex2html258"
+ &nbsp; <B>  <A NAME="tex2html264"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html260"
+ &nbsp; <B>  <A NAME="tex2html266"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,58 +61,60 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html263"
+<LI><A NAME="tex2html269"
   HREF="node4.html#SECTION00410000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> The configuration files</A>
-<LI><A NAME="tex2html264"
+<LI><A NAME="tex2html270"
   HREF="node4.html#SECTION00420000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> A walk through <SPAN  CLASS="textit">cfg_ion.lua</SPAN></A>
-<LI><A NAME="tex2html265"
+<LI><A NAME="tex2html271"
   HREF="node4.html#SECTION00430000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Keys and rodents</A>
 <UL>
-<LI><A NAME="tex2html266"
+<LI><A NAME="tex2html272"
   HREF="node4.html#SECTION00431000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Binding handlers and special variables</A>
-<LI><A NAME="tex2html267"
+<LI><A NAME="tex2html273"
   HREF="node4.html#SECTION00432000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Guards</A>
-<LI><A NAME="tex2html268"
+<LI><A NAME="tex2html274"
   HREF="node4.html#SECTION00433000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining the bindings</A>
-<LI><A NAME="tex2html269"
+<LI><A NAME="tex2html275"
   HREF="node4.html#SECTION00434000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Examples</A>
-<LI><A NAME="tex2html270"
+<LI><A NAME="tex2html276"
   HREF="node4.html#SECTION00435000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Key specifications</A>
-<LI><A NAME="tex2html271"
+<LI><A NAME="tex2html277"
   HREF="node4.html#SECTION00436000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> Button specifications</A>
-<LI><A NAME="tex2html272"
+<LI><A NAME="tex2html278"
   HREF="node4.html#SECTION00437000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">7</SPAN> A further note on the default binding configuration</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html273"
+<LI><A NAME="tex2html279"
   HREF="node4.html#SECTION00440000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Menus</A>
 <UL>
-<LI><A NAME="tex2html274"
+<LI><A NAME="tex2html280"
   HREF="node4.html#SECTION00441000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Defining menus</A>
-<LI><A NAME="tex2html275"
+<LI><A NAME="tex2html281"
   HREF="node4.html#SECTION00442000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Special menus</A>
-<LI><A NAME="tex2html276"
+<LI><A NAME="tex2html282"
   HREF="node4.html#SECTION00443000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining context menus</A>
-<LI><A NAME="tex2html277"
+<LI><A NAME="tex2html283"
   HREF="node4.html#SECTION00444000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">4</SPAN> Displaying menus</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html278"
+<LI><A NAME="tex2html284"
   HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
 <UL>
-<LI><A NAME="tex2html279"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Classes, roles and instances</A>
-<LI><A NAME="tex2html280"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Finding window identification</A>
-<LI><A NAME="tex2html281"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Some common examples</A>
+<LI><A NAME="tex2html285"
+  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
+<LI><A NAME="tex2html286"
+  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
+<LI><A NAME="tex2html287"
+  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
+<LI><A NAME="tex2html288"
+  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
 <UL>
-<LI><A NAME="tex2html282"
-  HREF="node4.html#SECTION00453100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
-<LI><A NAME="tex2html283"
-  HREF="node4.html#SECTION00453200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
-<LI><A NAME="tex2html284"
-  HREF="node4.html#SECTION00453300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
+<LI><A NAME="tex2html289"
+  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
+<LI><A NAME="tex2html290"
+  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+<LI><A NAME="tex2html291"
+  HREF="node4.html#SECTION00454300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
 </UL></UL></UL>
 <!--End of Table of Child-Links-->
 <HR>
@@ -153,9 +155,9 @@ explained. For a reference on exported functions, see section
 Ion3, to which document applies, stores its stock configuration files in
 <SPAN  CLASS="textit">/usr/local/etc/ion3/</SPAN> unless you, the OS package maintainer or 
 whoever  installed the package on the system has modified the variables
-<TT>PREFIX</TT><A NAME="584"></A> or
-<TT>ETCDIR</TT><A NAME="585"></A> in
-<SPAN  CLASS="textit">system.mk</SPAN><A NAME="586"></A> before compiling Ion.
+<TT>PREFIX</TT><A NAME="590"></A> or
+<TT>ETCDIR</TT><A NAME="591"></A> in
+<SPAN  CLASS="textit">system.mk</SPAN><A NAME="592"></A> before compiling Ion.
 In the first case you probably know where to find the files and in 
 the other case the system administrator or the OS package maintainer
 should  have provided documentation to point to the correct location. 
@@ -199,6 +201,9 @@ files:
 <TD ALIGN="LEFT">Settings to get some applications behave more nicely have been 
     collected here. See section <A HREF="#sec:winprops">3.5</A>.</TD>
 </TR>
+<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_layouts.lua</SPAN></TD>
+<TD ALIGN="LEFT">Some workspace layouts are defined here.</TD>
+</TR>
 <TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_tiling.lua</SPAN> 
     <SPAN  CLASS="textit">cfg_query.lua</SPAN> 
     <SPAN  CLASS="textit">cfg_menu.lua</SPAN> 
@@ -270,15 +275,26 @@ The first of these two settings enables opaque resize mode: in move/resize
 move frames and other objects mirror you actions immediately. If opaque
 resize is disabled, a XOR rubber band is shown during the mode instead.
 This will, unfortunately, cause Ion to also grab the X server and has some
-side effects.
+side effects. 
+
+<P>
+There are some other options as well; see the documentation
+for <A HREF="node7.html#fn:ioncore.set"><TT>ioncore.set</TT></A> for details.
 
 <P>
-Next we load the configuration for Ion's core, and some kludges:
+As a next step, in the actual <SPAN  CLASS="textit">cfg_ion.lua</SPAN> file, we load
+<SPAN  CLASS="textit">cfg_defaults.lua</SPAN>. However, it is merely a conveniency file for
+doing exactly what we will going through below, and what is commented
+out in the actual file. If you do not want to load what 
+<SPAN  CLASS="textit">cfg_defaults.lua</SPAN> loads, just comment out the corresponding 
+line, and uncomment the lines for the files that you want:
 
 <P>
 <PRE>
+--dopath("cfg_defaults")
 dopath("cfg_ioncore")
 dopath("cfg_kludges")
+dopath("cfg_layouts")
 </PRE>
 
 <P>
@@ -298,6 +314,8 @@ expression that is used to match against the title and the next is
 a rule to construct a new title of a match occurs. This particular
 rule is used to shorten e.g. 'Foo: barbaz&lt;3&gt;' to 'barba...&lt;3&gt;'; for
 details see the function reference entry for <A HREF="node7.html#fn:ioncore.defshortening"><TT>ioncore.defshortening</TT></A>.
+Finally, <SPAN  CLASS="textit">cfg_layouts.lua</SPAN> defines some workspace layouts, available
+through the <SPAN  CLASS="textbf">F9</SPAN> workspace creation query.
 
 <P>
 To actually be able to do something besides display windows in full screen
@@ -305,22 +323,14 @@ mode, we must next load some modules:
 
 <P>
 <PRE>
-dopath("cfg_modules")
---dopath("mod_query")
---dopath("mod_menu")
---dopath("mod_tiling")
---dopath("mod_statusbar")
+dopath("mod_query")
+dopath("mod_menu")
+dopath("mod_tiling")
+dopath("mod_statusbar")
 --dopath("mod_dock")
---dopath("mod_sp")
+dopath("mod_sp")
 </PRE>
 
-<P>
-We actually load there another file listing the default selection of
-modules. If you only want to load additional modules, just uncomment
-the corresponding line. If you want to disable loading some modules,
-comment out the the line loading <SPAN  CLASS="textit">cfg_modules</SPAN>, and uncomment
-the lines for the modules you want, or add more.
-
 <P>
 
 <H2><A NAME="SECTION00430000000000000000"></A>
@@ -573,8 +583,8 @@ defbindings("WFrame", {
 As seen above, the functions that create key binding specifications require
 a <TT>keyspec</TT> argument. This argument should be a string containing the
 name of a key as listed in the X header file <SPAN  CLASS="textit">keysymdef.h</SPAN><A NAME="tex2html7"
-  HREF="#foot857"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> without the <TT>XK_</TT> prefix.
-<A NAME="858"></A>
+  HREF="#foot871"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> without the <TT>XK_</TT> prefix.
+<A NAME="872"></A>
 Most of the key names are quite intuitive while some are not. For example,
 the <SPAN  CLASS="textbf">Enter</SPAN> key on the main part of the keyboard has the less common
 name <SPAN  CLASS="textbf">Return</SPAN> while the one the numpad is called <SPAN  CLASS="textbf">KP_Enter</SPAN>.
@@ -586,23 +596,23 @@ modifiers:
 <BLOCKQUOTE>
 <SPAN  CLASS="textbf">Shift</SPAN>, <SPAN  CLASS="textbf">Control</SPAN>, <SPAN  CLASS="textbf">Mod1</SPAN> to <SPAN  CLASS="textbf">Mod5</SPAN>,
 <SPAN  CLASS="textbf">AnyModifier</SPAN> and <SPAN  CLASS="textbf">Lock</SPAN>.
-<A NAME="859"></A>
-<A NAME="860"></A>
-<A NAME="861"></A>
-<A NAME="862"></A>
-<A NAME="863"></A>
+<A NAME="873"></A>
+<A NAME="874"></A>
+<A NAME="875"></A>
+<A NAME="876"></A>
+<A NAME="877"></A>
 
 </BLOCKQUOTE>
 
 <P>
 X allows binding all of these modifiers to almost any key and while this
 list of modifiers does not explicitly list keys such as 
-<SPAN  CLASS="textbf">Alt</SPAN><A NAME="864"></A> that are common on modern keyboards, such
+<SPAN  CLASS="textbf">Alt</SPAN><A NAME="878"></A> that are common on modern keyboards, such
 keys are bound to one of the <SPAN  CLASS="textbf">ModN</SPAN>. On systems running XFree86
 <SPAN  CLASS="textbf">Alt</SPAN> is usually <SPAN  CLASS="textbf">Mod1</SPAN>. On Suns <SPAN  CLASS="textbf">Mod1</SPAN> is the diamond key
 and <SPAN  CLASS="textbf">Alt</SPAN> something else. One of the ''flying window'' keys on so
 called Windows-keyboards is probably mapped to <SPAN  CLASS="textbf">Mod3</SPAN> if you have
-such a key. Use the program <SPAN  CLASS="textit">xmodmap</SPAN><A NAME="865"></A>
+such a key. Use the program <SPAN  CLASS="textit">xmodmap</SPAN><A NAME="879"></A>
 to find out what exactly is bound where. 
 
 <P>
@@ -614,10 +624,10 @@ default.
 
 <P>
 Ion ignores the <SPAN  CLASS="textbf">Lock</SPAN> modifier and any <SPAN  CLASS="textbf">ModN</SPAN> (<SPAN CLASS="MATH"></SPAN>)
-bound to <SPAN  CLASS="textbf">NumLock</SPAN><A NAME="866"></A> or
-<SPAN  CLASS="textbf">ScrollLock</SPAN><A NAME="867"></A>
+bound to <SPAN  CLASS="textbf">NumLock</SPAN><A NAME="880"></A> or
+<SPAN  CLASS="textbf">ScrollLock</SPAN><A NAME="881"></A>
 by default because such<A NAME="tex2html8"
-  HREF="#foot836"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> locking keys may otherwise
+  HREF="#foot850"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> locking keys may otherwise
 cause confusion.
 
 <P>
@@ -630,7 +640,7 @@ cause confusion.
 Button specifications are similar to key definitions but now
 instead of specifying modifiers and a key, you specify modifiers
 and one of the button names <SPAN  CLASS="textbf">Button1</SPAN> to
-<SPAN  CLASS="textbf">Button5</SPAN><A NAME="868"></A>. Additionally the
+<SPAN  CLASS="textbf">Button5</SPAN><A NAME="882"></A>. Additionally the
 specification may end with an optional area name following an @-sign.
 Only frames currently support areas, and the supported values in this
 case are
@@ -681,10 +691,10 @@ to it is available virtually everywhere.
 </H3>
 
 <P>
-<A NAME="1114"></A>
-<A NAME="1171"></A>
-<A NAME="1172"></A>
-<A NAME="1173"></A>
+<A NAME="1128"></A>
+<A NAME="1185"></A>
+<A NAME="1186"></A>
+<A NAME="1187"></A>
 In the stock configuration file setup, menus are defined in the file
 <SPAN  CLASS="textit">cfg_menus.lua</SPAN> as previously mentioned. The <SPAN  CLASS="textit">mod_menu</SPAN> module
 must be loaded for one to be able to define menus, and this is done with
@@ -821,7 +831,7 @@ handlers (and elsewhere):
       after which the selected entry is activated. This function is meant to 
       be used for implementing, for example, Win***s-style <SPAN  CLASS="textbf">Alt-Tab</SPAN> 
       handling.<A NAME="tex2html9"
-  HREF="#foot1174"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></TD>
+  HREF="#foot1188"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></TD>
 </TR>
 </TABLE>
 
@@ -849,7 +859,7 @@ defbindings("WFrame", {
 </H2>
 
 <P>
-The so-called ''winprops''<A NAME="1269"></A> can be used to change how
+The so-called ''winprops''<A NAME="1283"></A> can be used to change how
 specific windows are handled and to set up some kludges to deal with
 badly behaving applications. They are defined by calling the function
 <TT>defwinprop</TT> with a table containing the properties to set and the
@@ -867,7 +877,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1429"></A>
+<DD><A NAME="1438"></A>
     Set this to <TT>true</TT> for Acrobat Reader. It has an annoying
     habit of trying to manage its dialogs instead of setting them as
     transients and letting the window manager do its job, causing
@@ -877,21 +887,6 @@ usual method of identifying windows, and how to obtain this information.
 </DD>
 </DL>
 
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>aspect</TT> (table)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1430"></A>
-    The table should contain the entries <TT>w</TT> and <TT>h</TT> that
-    override application-supplied aspect ratio hint.
-
-</DD>
-</DL>
-
 <P>
 
   <DL>
@@ -900,7 +895,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1431"></A>
+<DD><A NAME="1439"></A>
     Set this to open the window in a floating frame, when
     in a group.
 
@@ -915,7 +910,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1432"></A>
+<DD><A NAME="1440"></A>
     Should the window be initially in full screen mode?
 
 </DD>
@@ -929,7 +924,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1433"></A>
+<DD><A NAME="1441"></A>
     Should configure requests on the window be ignored?
     Only has effect on floating windows.
 
@@ -944,26 +939,12 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1434"></A>
+<DD><A NAME="1442"></A>
     Ignore extended WM hints <TT>_NET_ACTIVE_WINDOW</TT> request.
 
 </DD>
 </DL>
 
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>ignore_resizeinc</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1435"></A>
-    Should application supplied size increments be ignored?
-
-</DD>
-</DL>
-
 <P>
 
   <DL>
@@ -972,42 +953,13 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1436"></A>
+<DD><A NAME="1443"></A>
     Should a newly created client window always be made
     active, even if the allocated frame isn't.
 
 </DD>
 </DL>
 
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>max_size</TT> (table)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1437"></A>
-    The table should contain the entries <TT>w</TT> and <TT>h</TT> that
-    override application-supplied maximum size hint.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>min_size</TT> (table)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1438"></A>
-    Similar to <TT>max_size</TT> but for the minimum size hint.
-
-</DD>
-</DL>
-
 <P>
 
   <DL>
@@ -1016,7 +968,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1439"></A>
+<DD><A NAME="1444"></A>
     If the region specified by <TT>target</TT> winprop does not exist
     (or that winprop is not set), create a new workspace using the 
     previously stored layout (see <A HREF="node7.html#fn:ioncore.deflayout"><TT>ioncore.deflayout</TT></A>) named by
@@ -1035,7 +987,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1440"></A>
+<DD><A NAME="1445"></A>
     Discard this winprop after first use.
 
 </DD>
@@ -1049,11 +1001,11 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1441"></A>
-    Put the window on the statusbar, in the named tray component,
-    (The default tray component is called simply ``<TT>systray</TT>''
+<DD><A NAME="1446"></A>
+    Put the window in the statusbar, in the named tray component,
+    (The default tray component is called simply <TT>"systray"</TT>
     and others you give names to in your custom template, always 
-    prefixed by ``<TT>systray_</TT>''.
+    prefixed by <TT>"systray_"</TT>.
 
 </DD>
 </DL>
@@ -1066,7 +1018,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1442"></A>
+<DD><A NAME="1447"></A>
     Should a newly mapped client window be switched to within
     its frame.
 
@@ -1081,7 +1033,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1443"></A>
+<DD><A NAME="1448"></A>
     The name of an object (workspace, frame) that should manage 
     windows of this type. See also <TT>new_group</TT>.
 
@@ -1096,33 +1048,17 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1444"></A>
-    "normal": No change in behaviour. "current": The window
-    should be thought of as a transient for the current active
-    client window (if any) even if it is not marked as a
-    transient by the application. "off": The window should be
-    handled as a normal window even if it is marked as a
+<DD><A NAME="1449"></A>
+    <TT>"normal"</TT>: No change in behaviour. <TT>"current"</TT>:
+    The window should be thought of as a transient for the current
+    active client window (if any) even if it is not marked as a
+    transient by the application. <TT>"off"</TT>: The window should 
+    be handled as a normal window even if it is marked as a
     transient by the application.
 
 </DD>
 </DL>
 
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>transients_at_top</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1445"></A>
-    When transients are managed by the client window itself (as it
-    is the case on tiled workspaces), should the transients be
-    placed at the top of the window instead of bottom?
-
-</DD>
-</DL>
-
 <P>
 
   <DL>
@@ -1131,7 +1067,7 @@ usual method of identifying windows, and how to obtain this information.
       
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1446"></A>
+<DD><A NAME="1450"></A>
     Should frames be made transparent when this window is selected? 
 <BR>  
   
@@ -1140,17 +1076,47 @@ usual method of identifying windows, and how to obtain this information.
 
 <P>
 
-<H3><A NAME="SECTION00451000000000000000"></A>
+<H3><A NAME="SECTION00451000000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
+</H3>
+
+<P>
+Additionally, the winprops 
+<TT>max_size</TT><A NAME="1451"></A>,
+<TT>min_size</TT><A NAME="1452"></A>,
+<TT>aspect</TT><A NAME="1453"></A>,
+<TT>resizeinc</TT><A NAME="1454"></A>,
+and
+<TT>ignore_max_size</TT><A NAME="1455"></A>,
+<TT>ignore_min_size</TT><A NAME="1456"></A>,
+<TT>ignore_aspect</TT><A NAME="1457"></A>,
+<TT>ignore_resizeinc</TT><A NAME="1458"></A>,
+may be used to override application-supplied size hints. The four
+first ones are tables with the fields <TT>w</TT> and <TT>h</TT>, indicating
+the width and height size hints in pixels, and the latter ignore
+winprop is a boolean. 
+
+<P>
+Finally, the boolean
+<TT>userpos</TT><A NAME="1459"></A> option may be used to
+override the <TT>USPosition</TT> flag of the size hints. Normally,
+when this flag is set, Ion tries to respect the supplied window
+position more than when it is not set. Obviously, this makes sense
+only for floating windows.
+
+<P>
+
+<H3><A NAME="SECTION00452000000000000000"></A>
 <A NAME="sec:classesrolesinstances"></A>
 <BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Classes, roles and instances
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances
 </H3>
 
 <P>
 The identification information in the winprop specification is usually the
-<TT>class</TT><A NAME="1447"></A>,
-<TT>role</TT><A NAME="1448"></A>,
-<TT>instance</TT><A NAME="1449"></A> and
+<TT>class</TT><A NAME="1460"></A>,
+<TT>role</TT><A NAME="1461"></A>,
+<TT>instance</TT><A NAME="1462"></A> and
 <TT>name</TT>
 of the window. The <TT>name</TT> field is a Lua-style regular expression
 matched against the window's title and the rest are strings that must
@@ -1223,8 +1189,8 @@ the same but different <TT>name</TT>, the longest match is chosen.
 
 <P>
 
-<H3><A NAME="SECTION00452000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Finding window identification</A>
+<H3><A NAME="SECTION00453000000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
 </H3>
 
 <P>
@@ -1233,7 +1199,7 @@ can be used to list the identification information required to set winprops
 for a window and all the transient windows managed within it. 
 
 <P>
-<A NAME="1402"></A> 
+<A NAME="1411"></A> 
 Another way to get the identification information is to use <TT>xprop</TT>.
 Simply run To get class and instance, simply run <TT>xprop WM_CLASS</TT>
 and click on the particular window of interest. The class is the latter of
@@ -1242,7 +1208,7 @@ windows have this property - use the command <TT>xprop WM_ROLE</TT>.
 This method, however, will not work on transients. 
 
 <P>
-<A NAME="1406"></A>
+<A NAME="1415"></A>
 So-called ''transient windows'' are usually short-lived dialogs (although
 some programs abuse this property) that have a parent window that they are
 ''transient for''. On tiled workspaces Ion displays these windows 
@@ -1251,7 +1217,7 @@ Unfortunately <TT>xprop</TT> is stupid and can't cope with this situation,
 returning the parent window's properties when the transient is clicked on.
 For this reason you'll have to do a little extra work to get the properties
 for that window.<A NAME="tex2html11"
-  HREF="#foot1451"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A>
+  HREF="#foot1464"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A>
 <P>
 Finally, it should be mentioned that too many authors these days
 ''forget'' to set this vital identification to anything meaningful:
@@ -1260,14 +1226,14 @@ windows, for example.
 
 <P>
 
-<H3><A NAME="SECTION00453000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Some common examples</A>
+<H3><A NAME="SECTION00454000000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
 </H3>
 
 <P>
 
-<H4><A NAME="SECTION00453100000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
+<H4><A NAME="SECTION00454100000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
 </H4>
 
 <P>
@@ -1284,8 +1250,8 @@ defwinprop{
 
 <P>
 
-<H4><A NAME="SECTION00453200000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
+<H4><A NAME="SECTION00454200000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Fixing a Mozilla Firebird transient</A>
 </H4>
 
 <P>
@@ -1313,8 +1279,8 @@ defwinprop{
 
 <P>
 
-<H4><A NAME="SECTION00453300000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
+<H4><A NAME="SECTION00454300000000000000">
+<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Forcing newly created windows in named frames</A>
 </H4>
 
 <P>
@@ -1351,26 +1317,26 @@ default name formed from the frame's class name and an instance number.
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot857">...keysymdef.h</A><A
+<DT><A NAME="foot871">...keysymdef.h</A><A
  HREF="node4.html#tex2html7"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
 <DD>This file can usually be found in the directory
 <SPAN  CLASS="textit">/usr/X11R6/include/X11/</SPAN>.
 
 </DD>
-<DT><A NAME="foot836">... such</A><A
+<DT><A NAME="foot850">... such</A><A
  HREF="node4.html#tex2html8"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
 <DD>Completely useless keys that should be
 gotten rid of in the author's opinion.
 
 </DD>
-<DT><A NAME="foot1174">... handling.</A><A
+<DT><A NAME="foot1188">... handling.</A><A
  HREF="node4.html#tex2html9"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
 <DD>See the <SPAN  CLASS="textit">wcirculate.lua</SPAN> script in the Ion 
         scripts repository <TT><A NAME="tex2html10"
   HREF="http://iki.fi/tuomov/repos/ion-scripts-3/">http://iki.fi/tuomov/repos/ion-scripts-3/</A></TT>.
 
 </DD>
-<DT><A NAME="foot1451">... window.</A><A
+<DT><A NAME="foot1464">... window.</A><A
  HREF="node4.html#tex2html11"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
 <DD>There's a patch to <TT>xprop</TT> to
 fix this, but nothing seems to be happening with respect to including it in 
@@ -1380,31 +1346,31 @@ XFree86.
 </DL>
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html261"
+<A NAME="tex2html267"
   HREF="node5.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html255"
+<A NAME="tex2html261"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html249"
+<A NAME="tex2html255"
   HREF="node3.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html257"
+<A NAME="tex2html263"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html259"
+<A NAME="tex2html265"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html262"
+<B> Next:</B> <A NAME="tex2html268"
   HREF="node5.html">4. Graphical styles</A>
-<B> Up:</B> <A NAME="tex2html256"
+<B> Up:</B> <A NAME="tex2html262"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html250"
+<B> Previous:</B> <A NAME="tex2html256"
   HREF="node3.html">2. Preliminaries: Key concepts</A>
- &nbsp; <B>  <A NAME="tex2html258"
+ &nbsp; <B>  <A NAME="tex2html264"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html260"
+ &nbsp; <B>  <A NAME="tex2html266"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index da15f290ec3e9ac40f8a9b7ca79a322ee6448e8a..de5ae5ec4bc23893e205c9a005e7cc940289f971 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html297"
+<A NAME="tex2html304"
   HREF="node6.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html291"
+<A NAME="tex2html298"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html285"
+<A NAME="tex2html292"
   HREF="node4.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html293"
+<A NAME="tex2html300"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html295"
+<A NAME="tex2html302"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html298"
+<B> Next:</B> <A NAME="tex2html305"
   HREF="node6.html">5. Scripting</A>
-<B> Up:</B> <A NAME="tex2html292"
+<B> Up:</B> <A NAME="tex2html299"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html286"
+<B> Previous:</B> <A NAME="tex2html293"
   HREF="node4.html">3. Basic configuration</A>
- &nbsp; <B>  <A NAME="tex2html294"
+ &nbsp; <B>  <A NAME="tex2html301"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html296"
+ &nbsp; <B>  <A NAME="tex2html303"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,50 +61,50 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html299"
+<LI><A NAME="tex2html306"
   HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
 <UL>
-<LI><A NAME="tex2html300"
+<LI><A NAME="tex2html307"
   HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
 <UL>
-<LI><A NAME="tex2html301"
+<LI><A NAME="tex2html308"
   HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
-<LI><A NAME="tex2html302"
+<LI><A NAME="tex2html309"
   HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
-<LI><A NAME="tex2html303"
+<LI><A NAME="tex2html310"
   HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
 </UL>
 </UL>
 <BR>
-<LI><A NAME="tex2html304"
+<LI><A NAME="tex2html311"
   HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
 <UL>
-<LI><A NAME="tex2html305"
+<LI><A NAME="tex2html312"
   HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
-<LI><A NAME="tex2html306"
+<LI><A NAME="tex2html313"
   HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
 <UL>
-<LI><A NAME="tex2html307"
+<LI><A NAME="tex2html314"
   HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
-<LI><A NAME="tex2html308"
+<LI><A NAME="tex2html315"
   HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
-<LI><A NAME="tex2html309"
+<LI><A NAME="tex2html316"
   HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
-<LI><A NAME="tex2html310"
+<LI><A NAME="tex2html317"
   HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-<LI><A NAME="tex2html311"
+<LI><A NAME="tex2html318"
   HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
 </UL>
-<LI><A NAME="tex2html312"
+<LI><A NAME="tex2html319"
   HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html313"
+<LI><A NAME="tex2html320"
   HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
 <UL>
-<LI><A NAME="tex2html314"
+<LI><A NAME="tex2html321"
   HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Extra fields for style <TT>frame</TT></A>
-<LI><A NAME="tex2html315"
+<LI><A NAME="tex2html322"
   HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style <TT>dock</TT></A>
 </UL></UL>
 <!--End of Table of Child-Links-->
@@ -125,7 +125,7 @@ for the default drawing engine.
 <P>
 
 <H2><A NAME="SECTION00510000000000000000"></A>
-<A NAME="sec:engines"></A><A NAME="1710"></A><A NAME="1711"></A>
+<A NAME="sec:engines"></A><A NAME="1708"></A><A NAME="1709"></A>
 <BR>
 <SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles
 </H2>
@@ -177,7 +177,7 @@ specified, also in the form
 <PRE>
 attr1-attr2-...-attrn
 </PRE>
-These extra attributes are called <SPAN  CLASS="textit">substyles</SPAN><A NAME="1722"></A>
+These extra attributes are called <SPAN  CLASS="textit">substyles</SPAN><A NAME="1720"></A>
 and allow, for example, the state of the object to be indicated 
 by  different colour sets while keeping the interface at an 
 abstract level and the drawing engine completely ignorant 
@@ -412,7 +412,7 @@ border elements and styles referred to there are explained in Figure
 
 <P>
 
-<DIV ALIGN="CENTER"><A NAME="fig:borders"></A><A NAME="1819"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:borders"></A><A NAME="1817"></A>
 <TABLE>
 <CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
 Sketch of different border styles and elements</CAPTION>
@@ -488,6 +488,12 @@ indicating a number of pixels.
                     elevated/inlaid/ridge/groove as seen in the
                     above sketch.</TD>
 </TR>
+<TR><TD ALIGN="LEFT"><TT>border_sides</TT></TD>
+<TD ALIGN="LEFT">A string indicating which sides of the border
+                     to draw: all/tb/lr for all, top and bottom, and
+                     left and right. To control between left/right
+                     and top/bottom, use the pixel options below.</TD>
+</TR>
 <TR><TD ALIGN="LEFT"><TT>highlight_pixels</TT></TD>
 <TD ALIGN="LEFT">Width of the highlight part of the border in pixels.</TD>
 </TR>
@@ -693,31 +699,31 @@ style configuration files.
 
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html297"
+<A NAME="tex2html304"
   HREF="node6.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html291"
+<A NAME="tex2html298"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html285"
+<A NAME="tex2html292"
   HREF="node4.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html293"
+<A NAME="tex2html300"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html295"
+<A NAME="tex2html302"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html298"
+<B> Next:</B> <A NAME="tex2html305"
   HREF="node6.html">5. Scripting</A>
-<B> Up:</B> <A NAME="tex2html292"
+<B> Up:</B> <A NAME="tex2html299"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html286"
+<B> Previous:</B> <A NAME="tex2html293"
   HREF="node4.html">3. Basic configuration</A>
- &nbsp; <B>  <A NAME="tex2html294"
+ &nbsp; <B>  <A NAME="tex2html301"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html296"
+ &nbsp; <B>  <A NAME="tex2html303"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index 8c985d1cb3fa2bed420c7114658bcb529fc9f1be..17e8f34d6980950fb3a4ff4a8d13ce17a1511dd1 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html328"
+<A NAME="tex2html335"
   HREF="node7.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html322"
+<A NAME="tex2html329"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html316"
+<A NAME="tex2html323"
   HREF="node5.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html324"
+<A NAME="tex2html331"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html326"
+<A NAME="tex2html333"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html329"
+<B> Next:</B> <A NAME="tex2html336"
   HREF="node7.html">6. Function reference</A>
-<B> Up:</B> <A NAME="tex2html323"
+<B> Up:</B> <A NAME="tex2html330"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html317"
+<B> Previous:</B> <A NAME="tex2html324"
   HREF="node5.html">4. Graphical styles</A>
- &nbsp; <B>  <A NAME="tex2html325"
+ &nbsp; <B>  <A NAME="tex2html332"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html327"
+ &nbsp; <B>  <A NAME="tex2html334"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,20 +61,20 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html330"
+<LI><A NAME="tex2html337"
   HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
-<LI><A NAME="tex2html331"
+<LI><A NAME="tex2html338"
   HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
 <UL>
-<LI><A NAME="tex2html332"
+<LI><A NAME="tex2html339"
   HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
-<LI><A NAME="tex2html333"
+<LI><A NAME="tex2html340"
   HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html334"
+<LI><A NAME="tex2html341"
   HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html335"
+<LI><A NAME="tex2html342"
   HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -122,7 +122,7 @@ ioncore.get_hook("ioncore_snapshot_hook"):add(
 <P>
 In this example the hook handler has no parameters, but many hook
 handlers do. The types of parameters for each hook are listed in
-the hook reference, section <A HREF="node7.html#sec:hookref">6.8</A>.
+the hook reference, section <A HREF="node7.html#sec:hookref">6.9</A>.
 
 <P>
 Note that many of the hooks are called in ''protected mode'' and can not 
@@ -319,31 +319,31 @@ local settings=table.join(statusd.get_config("foo"), defaults)
 
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html328"
+<A NAME="tex2html335"
   HREF="node7.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html322"
+<A NAME="tex2html329"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html316"
+<A NAME="tex2html323"
   HREF="node5.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html324"
+<A NAME="tex2html331"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html326"
+<A NAME="tex2html333"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html329"
+<B> Next:</B> <A NAME="tex2html336"
   HREF="node7.html">6. Function reference</A>
-<B> Up:</B> <A NAME="tex2html323"
+<B> Up:</B> <A NAME="tex2html330"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html317"
+<B> Previous:</B> <A NAME="tex2html324"
   HREF="node5.html">4. Graphical styles</A>
- &nbsp; <B>  <A NAME="tex2html325"
+ &nbsp; <B>  <A NAME="tex2html332"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html327"
+ &nbsp; <B>  <A NAME="tex2html334"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index 628a67028af7057943ef75d7a974892bc334e55d..9b8b3e3d8db7d7e16466be2f186f92927422364a 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html348"
+<A NAME="tex2html355"
   HREF="node8.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html342"
+<A NAME="tex2html349"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html336"
+<A NAME="tex2html343"
   HREF="node6.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html344"
+<A NAME="tex2html351"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html346"
+<A NAME="tex2html353"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html349"
+<B> Next:</B> <A NAME="tex2html356"
   HREF="node8.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html343"
+<B> Up:</B> <A NAME="tex2html350"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html337"
+<B> Previous:</B> <A NAME="tex2html344"
   HREF="node6.html">5. Scripting</A>
- &nbsp; <B>  <A NAME="tex2html345"
+ &nbsp; <B>  <A NAME="tex2html352"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html347"
+ &nbsp; <B>  <A NAME="tex2html354"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,89 +61,96 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html350"
+<LI><A NAME="tex2html357"
   HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
 <UL>
-<LI><A NAME="tex2html351"
+<LI><A NAME="tex2html358"
   HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
-<LI><A NAME="tex2html352"
+<LI><A NAME="tex2html359"
   HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
-<LI><A NAME="tex2html353"
+<LI><A NAME="tex2html360"
   HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
-<LI><A NAME="tex2html354"
+<LI><A NAME="tex2html361"
   HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
-<LI><A NAME="tex2html355"
+<LI><A NAME="tex2html362"
   HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
-<LI><A NAME="tex2html356"
+<LI><A NAME="tex2html363"
   HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WInfoWin functions</A>
-<LI><A NAME="tex2html357"
+<LI><A NAME="tex2html364"
   HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WMPlex functions</A>
-<LI><A NAME="tex2html358"
+<LI><A NAME="tex2html365"
   HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMoveresMode functions</A>
-<LI><A NAME="tex2html359"
+<LI><A NAME="tex2html366"
   HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WRegion functions</A>
-<LI><A NAME="tex2html360"
+<LI><A NAME="tex2html367"
   HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRootWin functions</A>
-<LI><A NAME="tex2html361"
+<LI><A NAME="tex2html368"
   HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WScreen functions</A>
-<LI><A NAME="tex2html362"
+<LI><A NAME="tex2html369"
   HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WWindow functions</A>
-<LI><A NAME="tex2html363"
+<LI><A NAME="tex2html370"
   HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> global functions</A>
-<LI><A NAME="tex2html364"
+<LI><A NAME="tex2html371"
   HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> gr functions</A>
-<LI><A NAME="tex2html365"
+<LI><A NAME="tex2html372"
   HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> string functions</A>
-<LI><A NAME="tex2html366"
+<LI><A NAME="tex2html373"
   HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> table functions</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html367"
+<LI><A NAME="tex2html374"
   HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
 <UL>
-<LI><A NAME="tex2html368"
+<LI><A NAME="tex2html375"
   HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
-<LI><A NAME="tex2html369"
+<LI><A NAME="tex2html376"
   HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
-<LI><A NAME="tex2html370"
+<LI><A NAME="tex2html377"
   HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
-<LI><A NAME="tex2html371"
+<LI><A NAME="tex2html378"
   HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
-<LI><A NAME="tex2html372"
+<LI><A NAME="tex2html379"
   HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html373"
+<LI><A NAME="tex2html380"
   HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
 <UL>
-<LI><A NAME="tex2html374"
+<LI><A NAME="tex2html381"
   HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
-<LI><A NAME="tex2html375"
+<LI><A NAME="tex2html382"
   HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
-<LI><A NAME="tex2html376"
+<LI><A NAME="tex2html383"
   HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html377"
+<LI><A NAME="tex2html384"
   HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
 <UL>
-<LI><A NAME="tex2html378"
+<LI><A NAME="tex2html385"
   HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html379"
+<LI><A NAME="tex2html386"
   HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
 <UL>
-<LI><A NAME="tex2html380"
+<LI><A NAME="tex2html387"
   HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
 </UL>
 <BR>
-<LI><A NAME="tex2html381"
+<LI><A NAME="tex2html388"
   HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
-<LI><A NAME="tex2html382"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
-<LI><A NAME="tex2html383"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks</A>
+<LI><A NAME="tex2html389"
+  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
+<UL>
+<LI><A NAME="tex2html390"
+  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html391"
+  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
+<LI><A NAME="tex2html392"
+  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
 </UL>
 <!--End of Table of Child-Links-->
 <HR>
@@ -163,8 +170,8 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 </H2>
 
   <DL>
-<DD><A NAME="4285"></A>
-<A NAME="4286"></A>
+<DD><A NAME="4362"></A>
+<A NAME="4363"></A>
 <A NAME="fn:ioncore.TR"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -180,8 +187,8 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <P>
 
   <DL>
-<DD><A NAME="4287"></A>
-<A NAME="4288"></A>
+<DD><A NAME="4364"></A>
+<A NAME="4365"></A>
 <A NAME="fn:ioncore.bdoc"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -198,8 +205,8 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <P>
 
   <DL>
-<DD><A NAME="4289"></A>
-<A NAME="4290"></A>
+<DD><A NAME="4366"></A>
+<A NAME="4367"></A>
 <A NAME="fn:ioncore.chdir_for"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -215,8 +222,8 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <P>
 
   <DL>
-<DD><A NAME="4291"></A>
-<A NAME="4292"></A>
+<DD><A NAME="4368"></A>
+<A NAME="4369"></A>
 <A NAME="fn:ioncore.compile_cmd"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -242,8 +249,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4293"></A>
-<A NAME="4294"></A>
+<DD><A NAME="4370"></A>
+<A NAME="4371"></A>
 <A NAME="fn:ioncore.create_ws"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -261,8 +268,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4295"></A>
-<A NAME="4296"></A>
+<DD><A NAME="4372"></A>
+<A NAME="4373"></A>
 <A NAME="fn:ioncore.defbindings"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -280,8 +287,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4297"></A>
-<A NAME="4298"></A>
+<DD><A NAME="4374"></A>
+<A NAME="4375"></A>
 <A NAME="fn:ioncore.defctxmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -298,8 +305,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4299"></A>
-<A NAME="4300"></A>
+<DD><A NAME="4376"></A>
+<A NAME="4377"></A>
 <A NAME="fn:ioncore.deflayout"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -317,8 +324,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4301"></A>
-<A NAME="4302"></A>
+<DD><A NAME="4378"></A>
+<A NAME="4379"></A>
 <A NAME="fn:ioncore.defmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -336,8 +343,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4303"></A>
-<A NAME="4304"></A>
+<DD><A NAME="4380"></A>
+<A NAME="4381"></A>
 <A NAME="fn:ioncore.defwinprop"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -353,8 +360,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4305"></A>
-<A NAME="4306"></A>
+<DD><A NAME="4382"></A>
+<A NAME="4383"></A>
 <A NAME="fn:ioncore.exec_on"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -376,8 +383,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4307"></A>
-<A NAME="4308"></A>
+<DD><A NAME="4384"></A>
+<A NAME="4385"></A>
 <A NAME="fn:ioncore.read_savefile"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -393,8 +400,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4309"></A>
-<A NAME="4310"></A>
+<DD><A NAME="4386"></A>
+<A NAME="4387"></A>
 <A NAME="fn:ioncore.get_savefile"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -411,8 +418,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4311"></A>
-<A NAME="4312"></A>
+<DD><A NAME="4388"></A>
+<A NAME="4389"></A>
 <A NAME="fn:ioncore.lookup_script"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -429,8 +436,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4313"></A>
-<A NAME="4314"></A>
+<DD><A NAME="4390"></A>
+<A NAME="4391"></A>
 <A NAME="fn:ioncore.write_savefile"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -447,8 +454,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4315"></A>
-<A NAME="4316"></A>
+<DD><A NAME="4392"></A>
+<A NAME="4393"></A>
 <A NAME="fn:ioncore.find_manager"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -465,8 +472,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4317"></A>
-<A NAME="4318"></A>
+<DD><A NAME="4394"></A>
+<A NAME="4395"></A>
 <A NAME="fn:ioncore.get_dir_for"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -482,8 +489,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4319"></A>
-<A NAME="4320"></A>
+<DD><A NAME="4396"></A>
+<A NAME="4397"></A>
 <A NAME="fn:ioncore.getbindings"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -499,8 +506,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4321"></A>
-<A NAME="4322"></A>
+<DD><A NAME="4398"></A>
+<A NAME="4399"></A>
 <A NAME="fn:ioncore.getctxmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -516,8 +523,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4323"></A>
-<A NAME="4324"></A>
+<DD><A NAME="4400"></A>
+<A NAME="4401"></A>
 <A NAME="fn:ioncore.getlayout"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -534,8 +541,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4325"></A>
-<A NAME="4326"></A>
+<DD><A NAME="4402"></A>
+<A NAME="4403"></A>
 <A NAME="fn:ioncore.getmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -551,8 +558,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4327"></A>
-<A NAME="4328"></A>
+<DD><A NAME="4404"></A>
+<A NAME="4405"></A>
 <A NAME="fn:ioncore.getwinprop"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -568,8 +575,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4329"></A>
-<A NAME="4330"></A>
+<DD><A NAME="4406"></A>
+<A NAME="4407"></A>
 <A NAME="fn:ioncore.aboutmsg"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -585,8 +592,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4331"></A>
-<A NAME="4332"></A>
+<DD><A NAME="4408"></A>
+<A NAME="4409"></A>
 <A NAME="fn:ioncore.activity_first"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -602,8 +609,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4333"></A>
-<A NAME="4334"></A>
+<DD><A NAME="4410"></A>
+<A NAME="4411"></A>
 <A NAME="fn:ioncore.activity_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -621,25 +628,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4335"></A>
-<A NAME="4336"></A>
-<A NAME="fn:ioncore.clear_tags"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.clear_tags()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Untag all regions.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="4337"></A>
-<A NAME="4338"></A>
+<DD><A NAME="4412"></A>
+<A NAME="4413"></A>
 <A NAME="fn:ioncore.clientwin_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -657,8 +647,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4339"></A>
-<A NAME="4340"></A>
+<DD><A NAME="4414"></A>
+<A NAME="4415"></A>
 <A NAME="fn:ioncore.current"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -674,8 +664,8 @@ The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently
 <P>
 
   <DL>
-<DD><A NAME="4341"></A>
-<A NAME="4342"></A>
+<DD><A NAME="4416"></A>
+<A NAME="4417"></A>
 <A NAME="fn:ioncore.defshortening"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -728,8 +718,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4343"></A>
-<A NAME="4344"></A>
+<DD><A NAME="4418"></A>
+<A NAME="4419"></A>
 <A NAME="fn:ioncore.detach"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -752,8 +742,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4345"></A>
-<A NAME="4346"></A>
+<DD><A NAME="4420"></A>
+<A NAME="4421"></A>
 <A NAME="fn:ioncore.exec"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -772,8 +762,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4347"></A>
-<A NAME="4348"></A>
+<DD><A NAME="4422"></A>
+<A NAME="4423"></A>
 <A NAME="fn:ioncore.find_screen_id"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -789,8 +779,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4349"></A>
-<A NAME="4350"></A>
+<DD><A NAME="4424"></A>
+<A NAME="4425"></A>
 <A NAME="fn:ioncore.focushistory_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -808,8 +798,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4351"></A>
-<A NAME="4352"></A>
+<DD><A NAME="4426"></A>
+<A NAME="4427"></A>
 <A NAME="fn:ioncore.get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -825,8 +815,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4353"></A>
-<A NAME="4354"></A>
+<DD><A NAME="4428"></A>
+<A NAME="4429"></A>
 <A NAME="fn:ioncore.get_paths"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -842,8 +832,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4355"></A>
-<A NAME="4356"></A>
+<DD><A NAME="4430"></A>
+<A NAME="4431"></A>
 <A NAME="fn:ioncore.goto_activity"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -859,8 +849,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4357"></A>
-<A NAME="4358"></A>
+<DD><A NAME="4432"></A>
+<A NAME="4433"></A>
 <A NAME="fn:ioncore.goto_first"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -880,8 +870,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4359"></A>
-<A NAME="4360"></A>
+<DD><A NAME="4434"></A>
+<A NAME="4435"></A>
 <A NAME="fn:ioncore.goto_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -901,8 +891,8 @@ Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
 <P>
 
   <DL>
-<DD><A NAME="4361"></A>
-<A NAME="4362"></A>
+<DD><A NAME="4436"></A>
+<A NAME="4437"></A>
 <A NAME="fn:ioncore.goto_next_screen"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -922,8 +912,8 @@ Note that this function is asynchronous; the screen will not
 <P>
 
   <DL>
-<DD><A NAME="4363"></A>
-<A NAME="4364"></A>
+<DD><A NAME="4438"></A>
+<A NAME="4439"></A>
 <A NAME="fn:ioncore.goto_nth_screen"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -943,8 +933,8 @@ Note that this function is asynchronous; the screen will not
 <P>
 
   <DL>
-<DD><A NAME="4365"></A>
-<A NAME="4366"></A>
+<DD><A NAME="4440"></A>
+<A NAME="4441"></A>
 <A NAME="fn:ioncore.goto_prev_screen"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -964,8 +954,8 @@ Note that this function is asynchronous; the screen will not
 <P>
 
   <DL>
-<DD><A NAME="4367"></A>
-<A NAME="4368"></A>
+<DD><A NAME="4442"></A>
+<A NAME="4443"></A>
 <A NAME="fn:ioncore.goto_previous"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -985,8 +975,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4369"></A>
-<A NAME="4370"></A>
+<DD><A NAME="4444"></A>
+<A NAME="4445"></A>
 <A NAME="fn:ioncore.is_i18n"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1002,8 +992,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4371"></A>
-<A NAME="4372"></A>
+<DD><A NAME="4446"></A>
+<A NAME="4447"></A>
 <A NAME="fn:ioncore.load_module"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1019,8 +1009,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4373"></A>
-<A NAME="4374"></A>
+<DD><A NAME="4448"></A>
+<A NAME="4449"></A>
 <A NAME="fn:ioncore.lookup_clientwin"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1036,8 +1026,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4375"></A>
-<A NAME="4376"></A>
+<DD><A NAME="4450"></A>
+<A NAME="4451"></A>
 <A NAME="fn:ioncore.lookup_region"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1054,8 +1044,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4377"></A>
-<A NAME="4378"></A>
+<DD><A NAME="4452"></A>
+<A NAME="4453"></A>
 <A NAME="fn:ioncore.navi_first"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1073,8 +1063,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4379"></A>
-<A NAME="4380"></A>
+<DD><A NAME="4454"></A>
+<A NAME="4455"></A>
 <A NAME="fn:ioncore.navi_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1083,12 +1073,12 @@ Note that this function is asynchronous; the region will not
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
 <DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
- (up/down/left/right/next/prev/any). The table param may
+ (up/down/left/right/next/prev/any). The table <TT>param</TT> may
  contain the boolean field <TT>nowrap</TT>, instructing not to wrap 
  around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
- and functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> from
- <TT>WRegion</TT>s (<TT>to</TT>, <TT>from</TT>), used to decide when to descend
- or ascend into another region. (TODO: more detailed explanation.)
+ and boolean functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> 
+ on <TT>WRegion</TT> pairs (<TT>to</TT>, <TT>from</TT>), are used to decide when
+ to descend or ascend into another region.
   
 </DD>
 </DL>
@@ -1096,8 +1086,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4381"></A>
-<A NAME="4382"></A>
+<DD><A NAME="4456"></A>
+<A NAME="4457"></A>
 <A NAME="fn:ioncore.popen_bgread"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1115,8 +1105,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4383"></A>
-<A NAME="4384"></A>
+<DD><A NAME="4458"></A>
+<A NAME="4459"></A>
 <A NAME="fn:ioncore.progname"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1132,8 +1122,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4385"></A>
-<A NAME="4386"></A>
+<DD><A NAME="4460"></A>
+<A NAME="4461"></A>
 <A NAME="fn:ioncore.region_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1152,8 +1142,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4387"></A>
-<A NAME="4388"></A>
+<DD><A NAME="4462"></A>
+<A NAME="4463"></A>
 <A NAME="fn:ioncore.request_selection"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1170,8 +1160,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4389"></A>
-<A NAME="4390"></A>
+<DD><A NAME="4464"></A>
+<A NAME="4465"></A>
 <A NAME="fn:ioncore.resign"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1188,8 +1178,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4391"></A>
-<A NAME="4392"></A>
+<DD><A NAME="4466"></A>
+<A NAME="4467"></A>
 <A NAME="fn:ioncore.restart"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1205,8 +1195,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4393"></A>
-<A NAME="4394"></A>
+<DD><A NAME="4468"></A>
+<A NAME="4469"></A>
 <A NAME="fn:ioncore.restart_other"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1222,8 +1212,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4395"></A>
-<A NAME="4396"></A>
+<DD><A NAME="4470"></A>
+<A NAME="4471"></A>
 <A NAME="fn:ioncore.set"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1292,6 +1282,15 @@ Note that this function is asynchronous; the region will not
                           One of ''udlr'' (up-down, then left-right), 
                           ''lrud'' (left-right, then up-down) or ''random''.</TD>
 </TR>
+<TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
+<TD ALIGN="LEFT">String: ''disable'' or ''sloppy''.</TD>
+</TR>
+<TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
+<TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
+</TR>
+<TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
+<TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
+</TR>
 </TABLE>
 
 <P>
@@ -1309,8 +1308,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4397"></A>
-<A NAME="4398"></A>
+<DD><A NAME="4472"></A>
+<A NAME="4473"></A>
 <A NAME="fn:ioncore.set_paths"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1326,8 +1325,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4399"></A>
-<A NAME="4400"></A>
+<DD><A NAME="4474"></A>
+<A NAME="4475"></A>
 <A NAME="fn:ioncore.set_selection"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1343,8 +1342,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4401"></A>
-<A NAME="4402"></A>
+<DD><A NAME="4476"></A>
+<A NAME="4477"></A>
 <A NAME="fn:ioncore.shutdown"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1360,8 +1359,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4403"></A>
-<A NAME="4404"></A>
+<DD><A NAME="4478"></A>
+<A NAME="4479"></A>
 <A NAME="fn:ioncore.snapshot"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1377,16 +1376,33 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4405"></A>
-<A NAME="4406"></A>
+<DD><A NAME="4480"></A>
+<A NAME="4481"></A>
+<A NAME="fn:ioncore.tagged_clear"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>void ioncore.tagged_clear()</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Untag all regions.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4482"></A>
+<A NAME="4483"></A>
 <A NAME="fn:ioncore.tagged_first"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.tagged_first()</TT>
+<DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD>Returns first tagged object.
+<DD>Returns first tagged object, untagging it as well if <TT>untag</TT>is set.
   
 </DD>
 </DL>
@@ -1394,8 +1410,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4407"></A>
-<A NAME="4408"></A>
+<DD><A NAME="4484"></A>
+<A NAME="4485"></A>
 <A NAME="fn:ioncore.tagged_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1413,8 +1429,28 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4409"></A>
-<A NAME="4410"></A>
+<DD><A NAME="4486"></A>
+<A NAME="4487"></A>
+<A NAME="fn:ioncore.unsqueeze"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Try to detach <TT>reg</TT> if it fits poorly in its 
+ current location. This function does not do anything,
+ unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
+ of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4488"></A>
+<A NAME="4489"></A>
 <A NAME="fn:ioncore.version"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1430,8 +1466,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4411"></A>
-<A NAME="4412"></A>
+<DD><A NAME="4490"></A>
+<A NAME="4491"></A>
 <A NAME="fn:ioncore.warn"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1448,8 +1484,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4413"></A>
-<A NAME="4414"></A>
+<DD><A NAME="4492"></A>
+<A NAME="4493"></A>
 <A NAME="fn:ioncore.warn_traced"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1465,8 +1501,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4415"></A>
-<A NAME="4416"></A>
+<DD><A NAME="4494"></A>
+<A NAME="4495"></A>
 <A NAME="fn:ioncore.x_change_property"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1485,8 +1521,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4417"></A>
-<A NAME="4418"></A>
+<DD><A NAME="4496"></A>
+<A NAME="4497"></A>
 <A NAME="fn:ioncore.x_delete_property"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1502,8 +1538,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4419"></A>
-<A NAME="4420"></A>
+<DD><A NAME="4498"></A>
+<A NAME="4499"></A>
 <A NAME="fn:ioncore.x_get_atom_name"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1520,8 +1556,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4421"></A>
-<A NAME="4422"></A>
+<DD><A NAME="4500"></A>
+<A NAME="4501"></A>
 <A NAME="fn:ioncore.x_get_text_property"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1540,8 +1576,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4423"></A>
-<A NAME="4424"></A>
+<DD><A NAME="4502"></A>
+<A NAME="4503"></A>
 <A NAME="fn:ioncore.x_get_window_property"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1562,8 +1598,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4425"></A>
-<A NAME="4426"></A>
+<DD><A NAME="4504"></A>
+<A NAME="4505"></A>
 <A NAME="fn:ioncore.x_intern_atom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1579,8 +1615,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4427"></A>
-<A NAME="4428"></A>
+<DD><A NAME="4506"></A>
+<A NAME="4507"></A>
 <A NAME="fn:ioncore.x_set_text_property"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1598,8 +1634,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4429"></A>
-<A NAME="4430"></A>
+<DD><A NAME="4508"></A>
+<A NAME="4509"></A>
 <A NAME="fn:ioncore.kpress"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1617,8 +1653,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4431"></A>
-<A NAME="4432"></A>
+<DD><A NAME="4510"></A>
+<A NAME="4511"></A>
 <A NAME="fn:ioncore.kpress_wait"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1637,8 +1673,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4433"></A>
-<A NAME="4434"></A>
+<DD><A NAME="4512"></A>
+<A NAME="4513"></A>
 <A NAME="fn:ioncore.match_winprop_name"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1654,8 +1690,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4435"></A>
-<A NAME="4436"></A>
+<DD><A NAME="4514"></A>
+<A NAME="4515"></A>
 <A NAME="fn:ioncore.mclick"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1674,8 +1710,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4437"></A>
-<A NAME="4438"></A>
+<DD><A NAME="4516"></A>
+<A NAME="4517"></A>
 <A NAME="fn:ioncore.mdblclick"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1692,8 +1728,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4439"></A>
-<A NAME="4440"></A>
+<DD><A NAME="4518"></A>
+<A NAME="4519"></A>
 <A NAME="fn:ioncore.mdrag"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1713,19 +1749,23 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4441"></A>
-<A NAME="4442"></A>
+<DD><A NAME="4520"></A>
+<A NAME="4521"></A>
 <A NAME="fn:ioncore.menuentry"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.menuentry(name, cmd, guard)</TT>
+<DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
 <DD>Use this function to define normal menu entries. The string <TT>name</TT> 
- is the string shown in the visual representation of menu, and the
- parameter <TT>cmd</TT> and <TT>guard</TT> are similar to those of
- <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.
+ is the string shown in the visual representation of menu. The
+ parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
+ to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.  If <TT>guard_or_opts</TT> is
+ a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
+ field, for controlling positioning of entries in context menus.
+ (The default priority is 1 for most entries, and -1 for auto-generated
+ submenus.)
   
 </DD>
 </DL>
@@ -1733,8 +1773,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4443"></A>
-<A NAME="4444"></A>
+<DD><A NAME="4522"></A>
+<A NAME="4523"></A>
 <A NAME="fn:ioncore.mpress"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1751,8 +1791,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4445"></A>
-<A NAME="4446"></A>
+<DD><A NAME="4524"></A>
+<A NAME="4525"></A>
 <A NAME="fn:ioncore.refresh_stylelist"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1768,8 +1808,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4447"></A>
-<A NAME="4448"></A>
+<DD><A NAME="4526"></A>
+<A NAME="4527"></A>
 <A NAME="fn:ioncore.submap"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1788,8 +1828,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4449"></A>
-<A NAME="4450"></A>
+<DD><A NAME="4528"></A>
+<A NAME="4529"></A>
 <A NAME="fn:ioncore.submenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1808,6 +1848,26 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 </DD>
 </DL>
 
+<P>
+
+  <DL>
+<DD><A NAME="4530"></A>
+<A NAME="4531"></A>
+<A NAME="fn:ioncore.tagged_attach"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>ioncore.tagged_attach(reg, param)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Attach tagged regions to <TT>reg</TT>. The method of attach
+ depends on the types of attached regions and whether <TT>reg</TT> 
+ implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
+ is not set, the default of <code>{switchto=true}</code> is used.
+  
+</DD>
+</DL>
+
 <P>
 
 <H3><A NAME="SECTION00711000000000000000">
@@ -1817,8 +1877,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4452"></A>
-<A NAME="4453"></A>
+<DD><A NAME="4533"></A>
+<A NAME="4534"></A>
 <A NAME="fn:WClientWin.get_ident"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1837,8 +1897,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4454"></A>
-<A NAME="4455"></A>
+<DD><A NAME="4535"></A>
+<A NAME="4536"></A>
 <A NAME="fn:WClientWin.kill"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1855,8 +1915,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4456"></A>
-<A NAME="4457"></A>
+<DD><A NAME="4537"></A>
+<A NAME="4538"></A>
 <A NAME="fn:WClientWin.nudge"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1873,8 +1933,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4458"></A>
-<A NAME="4459"></A>
+<DD><A NAME="4539"></A>
+<A NAME="4540"></A>
 <A NAME="fn:WClientWin.quote_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1890,8 +1950,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4460"></A>
-<A NAME="4461"></A>
+<DD><A NAME="4541"></A>
+<A NAME="4542"></A>
 <A NAME="fn:WClientWin.xid"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1913,8 +1973,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4463"></A>
-<A NAME="4464"></A>
+<DD><A NAME="4544"></A>
+<A NAME="4545"></A>
 <A NAME="fn:WFrame.is_shaded"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1930,8 +1990,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4465"></A>
-<A NAME="4466"></A>
+<DD><A NAME="4546"></A>
+<A NAME="4547"></A>
 <A NAME="fn:WFrame.maximize_horiz"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1947,8 +2007,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4467"></A>
-<A NAME="4468"></A>
+<DD><A NAME="4548"></A>
+<A NAME="4549"></A>
 <A NAME="fn:WFrame.maximize_vert"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1964,8 +2024,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4469"></A>
-<A NAME="4470"></A>
+<DD><A NAME="4550"></A>
+<A NAME="4551"></A>
 <A NAME="fn:WFrame.mode"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1981,8 +2041,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4471"></A>
-<A NAME="4472"></A>
+<DD><A NAME="4552"></A>
+<A NAME="4553"></A>
 <A NAME="fn:WFrame.p_switch_tab"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -1999,8 +2059,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4473"></A>
-<A NAME="4474"></A>
+<DD><A NAME="4554"></A>
+<A NAME="4555"></A>
 <A NAME="fn:WFrame.p_tabdrag"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2018,8 +2078,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4475"></A>
-<A NAME="4476"></A>
+<DD><A NAME="4556"></A>
+<A NAME="4557"></A>
 <A NAME="fn:WFrame.set_mode"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2035,8 +2095,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4477"></A>
-<A NAME="4478"></A>
+<DD><A NAME="4558"></A>
+<A NAME="4559"></A>
 <A NAME="fn:WFrame.set_numbers"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2054,8 +2114,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4479"></A>
-<A NAME="4480"></A>
+<DD><A NAME="4560"></A>
+<A NAME="4561"></A>
 <A NAME="fn:WFrame.set_shaded"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2079,8 +2139,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4482"></A>
-<A NAME="4483"></A>
+<DD><A NAME="4563"></A>
+<A NAME="4564"></A>
 <A NAME="fn:WGroup.attach"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2098,8 +2158,8 @@ When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT>
 <P>
 
   <DL>
-<DD><A NAME="4484"></A>
-<A NAME="4485"></A>
+<DD><A NAME="4565"></A>
+<A NAME="4566"></A>
 <A NAME="fn:WGroup.attach_new"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2145,8 +2205,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4486"></A>
-<A NAME="4487"></A>
+<DD><A NAME="4567"></A>
+<A NAME="4568"></A>
 <A NAME="fn:WGroup.bottom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2162,8 +2222,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4488"></A>
-<A NAME="4489"></A>
+<DD><A NAME="4569"></A>
+<A NAME="4570"></A>
 <A NAME="fn:WGroup.is_fullscreen"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2179,8 +2239,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4490"></A>
-<A NAME="4491"></A>
+<DD><A NAME="4571"></A>
+<A NAME="4572"></A>
 <A NAME="fn:WGroup.managed_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2199,8 +2259,26 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4492"></A>
-<A NAME="4493"></A>
+<DD><A NAME="4573"></A>
+<A NAME="4574"></A>
+<A NAME="fn:WGroup.set_bottom"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Sets the 'bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
+ be managed by <TT>ws</TT>, unless <TT>nil</TT>.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4575"></A>
+<A NAME="4576"></A>
 <A NAME="fn:WGroup.set_fullscreen"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2230,8 +2308,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4496"></A>
-<A NAME="4497"></A>
+<DD><A NAME="4579"></A>
+<A NAME="4580"></A>
 <A NAME="fn:WGroupWS.attach_framed"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2269,12 +2347,12 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4499"></A>
-<A NAME="4500"></A>
+<DD><A NAME="4582"></A>
+<A NAME="4583"></A>
 <A NAME="fn:WInfoWin.set_text"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WInfoWin.set_text(WInfoWin p, string str)</TT>
+<DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
@@ -2292,8 +2370,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4502"></A>
-<A NAME="4503"></A>
+<DD><A NAME="4585"></A>
+<A NAME="4586"></A>
 <A NAME="fn:WMPlex.attach"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2311,8 +2389,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4504"></A>
-<A NAME="4505"></A>
+<DD><A NAME="4587"></A>
+<A NAME="4588"></A>
 <A NAME="fn:WMPlex.attach_new"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2357,8 +2435,7 @@ In addition parameters to the region to be created are passed in this
                   This option overrides <TT>switchto</TT>.</TD>
 </TR>
 <TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
-<TD ALIGN="LEFT">(integer) Size policy.
-                     (TODO: document them somewhere.)</TD>
+<TD ALIGN="LEFT">(integer) Size policy.</TD>
 </TR>
 <TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
 <TD ALIGN="LEFT">(table) Geometry specification.</TD>
@@ -2375,25 +2452,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4506"></A>
-<A NAME="4507"></A>
-<A NAME="fn:WMPlex.attach_tagged"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.attach_tagged(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach all tagged regions to <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="4508"></A>
-<A NAME="4509"></A>
+<DD><A NAME="4589"></A>
+<A NAME="4590"></A>
 <A NAME="fn:WMPlex.dec_index"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2409,8 +2469,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4510"></A>
-<A NAME="4511"></A>
+<DD><A NAME="4591"></A>
+<A NAME="4592"></A>
 <A NAME="fn:WMPlex.get_index"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2418,9 +2478,9 @@ In addition parameters to the region to be created are passed in this
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD>Get index of <TT>reg</TT> within the multiplexer on list 1. The first region 
- managed by <TT>mplex</TT> has index zero. If <TT>reg</TT> is not managed by 
<TT>mplex</TT>, -1 is returned.
+<DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
+ The indices begin from zero.. If <TT>reg</TT> is not on the list,
+ -1 is returned.
   
 </DD>
 </DL>
@@ -2428,8 +2488,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4512"></A>
-<A NAME="4513"></A>
+<DD><A NAME="4593"></A>
+<A NAME="4594"></A>
 <A NAME="fn:WMPlex.get_stdisp"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2446,8 +2506,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4514"></A>
-<A NAME="4515"></A>
+<DD><A NAME="4595"></A>
+<A NAME="4596"></A>
 <A NAME="fn:WMPlex.inc_index"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2463,8 +2523,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4516"></A>
-<A NAME="4517"></A>
+<DD><A NAME="4597"></A>
+<A NAME="4598"></A>
 <A NAME="fn:WMPlex.is_hidden"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2480,8 +2540,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4518"></A>
-<A NAME="4519"></A>
+<DD><A NAME="4599"></A>
+<A NAME="4600"></A>
 <A NAME="fn:WMPlex.managed_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2500,8 +2560,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4520"></A>
-<A NAME="4521"></A>
+<DD><A NAME="4601"></A>
+<A NAME="4602"></A>
 <A NAME="fn:WMPlex.mx_count"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2517,8 +2577,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4522"></A>
-<A NAME="4523"></A>
+<DD><A NAME="4603"></A>
+<A NAME="4604"></A>
 <A NAME="fn:WMPlex.mx_current"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2535,8 +2595,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4524"></A>
-<A NAME="4525"></A>
+<DD><A NAME="4605"></A>
+<A NAME="4606"></A>
 <A NAME="fn:WMPlex.mx_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2555,8 +2615,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4526"></A>
-<A NAME="4527"></A>
+<DD><A NAME="4607"></A>
+<A NAME="4608"></A>
 <A NAME="fn:WMPlex.mx_nth"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2573,8 +2633,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4528"></A>
-<A NAME="4529"></A>
+<DD><A NAME="4609"></A>
+<A NAME="4610"></A>
 <A NAME="fn:WMPlex.set_hidden"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2591,9 +2651,9 @@ In addition parameters to the region to be created are passed in this
 
 <P>
 
-  <DL>
-<DD><A NAME="4530"></A>
-<A NAME="4531"></A>
+  <DL>
+<DD><A NAME="4611"></A>
+<A NAME="4612"></A>
 <A NAME="fn:WMPlex.set_index"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2601,8 +2661,8 @@ In addition parameters to the region to be created are passed in this
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD>Set index of <TT>reg</TT> within the multiplexer to <TT>index</TT> within 
the mutually exclusive list. Special values for <TT>index</TT> are:
+<DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive 
list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
  <TABLE CELLPADDING=3 WIDTH="100%">
 <TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"></SPAN></TD>
 <TD ALIGN="LEFT">Last.</TD>
@@ -2618,8 +2678,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4532"></A>
-<A NAME="4533"></A>
+<DD><A NAME="4613"></A>
+<A NAME="4614"></A>
 <A NAME="fn:WMPlex.set_stdisp"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2658,8 +2718,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4534"></A>
-<A NAME="4535"></A>
+<DD><A NAME="4615"></A>
+<A NAME="4616"></A>
 <A NAME="fn:WMPlex.switch_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2676,8 +2736,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4536"></A>
-<A NAME="4537"></A>
+<DD><A NAME="4617"></A>
+<A NAME="4618"></A>
 <A NAME="fn:WMPlex.switch_nth"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2693,8 +2753,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4538"></A>
-<A NAME="4539"></A>
+<DD><A NAME="4619"></A>
+<A NAME="4620"></A>
 <A NAME="fn:WMPlex.switch_prev"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2717,8 +2777,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4541"></A>
-<A NAME="4542"></A>
+<DD><A NAME="4622"></A>
+<A NAME="4623"></A>
 <A NAME="fn:WMoveresMode.cancel"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2735,8 +2795,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4543"></A>
-<A NAME="4544"></A>
+<DD><A NAME="4624"></A>
+<A NAME="4625"></A>
 <A NAME="fn:WMoveresMode.finish"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2753,8 +2813,25 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4545"></A>
-<A NAME="4546"></A>
+<DD><A NAME="4626"></A>
+<A NAME="4627"></A>
+<A NAME="fn:WMoveresMode.geom"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Returns current geometry.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4628"></A>
+<A NAME="4629"></A>
 <A NAME="fn:WMoveresMode.move"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2786,8 +2863,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4547"></A>
-<A NAME="4548"></A>
+<DD><A NAME="4630"></A>
+<A NAME="4631"></A>
 <A NAME="fn:WMoveresMode.resize"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2803,6 +2880,24 @@ In addition parameters to the region to be created are passed in this
 </DD>
 </DL>
 
+<P>
+
+  <DL>
+<DD><A NAME="4632"></A>
+<A NAME="4633"></A>
+<A NAME="fn:WMoveresMode.rqgeom"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Request exact geometry in move/resize mode. For details on parameters,
+ see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
+  
+</DD>
+</DL>
+
 <P>
 
 <H3><A NAME="SECTION00719000000000000000">
@@ -2812,8 +2907,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4550"></A>
-<A NAME="4551"></A>
+<DD><A NAME="4635"></A>
+<A NAME="4636"></A>
 <A NAME="fn:WRegion.begin_kbresize"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2834,8 +2929,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4552"></A>
-<A NAME="4553"></A>
+<DD><A NAME="4637"></A>
+<A NAME="4638"></A>
 <A NAME="fn:WRegion.current"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2852,8 +2947,8 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4554"></A>
-<A NAME="4555"></A>
+<DD><A NAME="4639"></A>
+<A NAME="4640"></A>
 <A NAME="fn:WRegion.geom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2870,8 +2965,26 @@ In addition parameters to the region to be created are passed in this
 <P>
 
   <DL>
-<DD><A NAME="4556"></A>
-<A NAME="4557"></A>
+<DD><A NAME="4641"></A>
+<A NAME="4642"></A>
+<A NAME="fn:WRegion.get_configuration"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
+ are filtered out.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4643"></A>
+<A NAME="4644"></A>
 <A NAME="fn:WRegion.goto"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2892,8 +3005,26 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4558"></A>
-<A NAME="4559"></A>
+<DD><A NAME="4645"></A>
+<A NAME="4646"></A>
+<A NAME="fn:WRegion.groupleader_of"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
+ and <TT>reg</TT> itself otherwise.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="4647"></A>
+<A NAME="4648"></A>
 <A NAME="fn:WRegion.is_active"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2909,8 +3040,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4560"></A>
-<A NAME="4561"></A>
+<DD><A NAME="4649"></A>
+<A NAME="4650"></A>
 <A NAME="fn:WRegion.is_activity"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2926,8 +3057,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4562"></A>
-<A NAME="4563"></A>
+<DD><A NAME="4651"></A>
+<A NAME="4652"></A>
 <A NAME="fn:WRegion.is_mapped"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2943,8 +3074,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4564"></A>
-<A NAME="4565"></A>
+<DD><A NAME="4653"></A>
+<A NAME="4654"></A>
 <A NAME="fn:WRegion.is_tagged"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2960,8 +3091,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4566"></A>
-<A NAME="4567"></A>
+<DD><A NAME="4655"></A>
+<A NAME="4656"></A>
 <A NAME="fn:WRegion.manager"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2977,8 +3108,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4568"></A>
-<A NAME="4569"></A>
+<DD><A NAME="4657"></A>
+<A NAME="4658"></A>
 <A NAME="fn:WRegion.name"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -2994,8 +3125,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4570"></A>
-<A NAME="4571"></A>
+<DD><A NAME="4659"></A>
+<A NAME="4660"></A>
 <A NAME="fn:WRegion.parent"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3011,8 +3142,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4572"></A>
-<A NAME="4573"></A>
+<DD><A NAME="4661"></A>
+<A NAME="4662"></A>
 <A NAME="fn:WRegion.rootwin_of"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3028,12 +3159,12 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4574"></A>
-<A NAME="4575"></A>
+<DD><A NAME="4663"></A>
+<A NAME="4664"></A>
 <A NAME="fn:WRegion.rqclose"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.rqclose(WRegion reg, bool relocate)</TT>
+<DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
@@ -3041,12 +3172,11 @@ Note that this function is asynchronous; the region will not
  depends on whether the particular type of region in question has
  implemented the feature and, in case of client windows, whether
  the client supports the <TT>WM_DELETE</TT> protocol (see also
- <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). If the operation is likely to succeed,
- <TT>true</TT> is returned, otherwise <TT>false</TT>. In most cases the
- region will not have been actually destroyed when this function returns.
- If <TT>relocate</TT> is not set, and <TT>reg</TT> manages other regions, it
- will not be closed. Otherwise the managed regions will be attempted
- to be relocated.
+ <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
+ this function returns. To find out if and when it is destroyed,
+ use the "deinit" notification. If <TT>relocate</TT> is not set, and
+ <TT>reg</TT> manages other regions, it will not be closed. Otherwise
+ the managed regions will be attempted to be relocated.
   
 </DD>
 </DL>
@@ -3054,8 +3184,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4576"></A>
-<A NAME="4577"></A>
+<DD><A NAME="4665"></A>
+<A NAME="4666"></A>
 <A NAME="fn:WRegion.rqclose_propagate"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3066,8 +3196,8 @@ Note that this function is asynchronous; the region will not
 <DD>Recursively attempt to close a region or one of the regions managed by 
  it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
  <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
- returned or NULL if nothing can be closed. Also see notes for
- <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
+ returned, or NULL if nothing can be closed. For further details, see
notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
   
 </DD>
 </DL>
@@ -3075,8 +3205,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4578"></A>
-<A NAME="4579"></A>
+<DD><A NAME="4667"></A>
+<A NAME="4668"></A>
 <A NAME="fn:WRegion.rqgeom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3095,8 +3225,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4580"></A>
-<A NAME="4581"></A>
+<DD><A NAME="4669"></A>
+<A NAME="4670"></A>
 <A NAME="fn:WRegion.rqorder"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3113,8 +3243,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4582"></A>
-<A NAME="4583"></A>
+<DD><A NAME="4671"></A>
+<A NAME="4672"></A>
 <A NAME="fn:WRegion.screen_of"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3130,8 +3260,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4584"></A>
-<A NAME="4585"></A>
+<DD><A NAME="4673"></A>
+<A NAME="4674"></A>
 <A NAME="fn:WRegion.set_activity"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3148,8 +3278,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4586"></A>
-<A NAME="4587"></A>
+<DD><A NAME="4675"></A>
+<A NAME="4676"></A>
 <A NAME="fn:WRegion.set_name"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3168,8 +3298,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4588"></A>
-<A NAME="4589"></A>
+<DD><A NAME="4677"></A>
+<A NAME="4678"></A>
 <A NAME="fn:WRegion.set_name_exact"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3187,8 +3317,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4590"></A>
-<A NAME="4591"></A>
+<DD><A NAME="4679"></A>
+<A NAME="4680"></A>
 <A NAME="fn:WRegion.set_tagged"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3205,8 +3335,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4592"></A>
-<A NAME="4593"></A>
+<DD><A NAME="4681"></A>
+<A NAME="4682"></A>
 <A NAME="fn:WRegion.size_hints"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3230,8 +3360,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4595"></A>
-<A NAME="4596"></A>
+<DD><A NAME="4684"></A>
+<A NAME="4685"></A>
 <A NAME="fn:WRootWin.current_scr"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3253,8 +3383,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4598"></A>
-<A NAME="4599"></A>
+<DD><A NAME="4687"></A>
+<A NAME="4688"></A>
 <A NAME="fn:WScreen.id"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3270,8 +3400,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4600"></A>
-<A NAME="4601"></A>
+<DD><A NAME="4689"></A>
+<A NAME="4690"></A>
 <A NAME="fn:WScreen.set_managed_offset"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3296,8 +3426,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4603"></A>
-<A NAME="4604"></A>
+<DD><A NAME="4692"></A>
+<A NAME="4693"></A>
 <A NAME="fn:WWindow.p_move"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3315,8 +3445,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4605"></A>
-<A NAME="4606"></A>
+<DD><A NAME="4694"></A>
+<A NAME="4695"></A>
 <A NAME="fn:WWindow.p_resize"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3334,8 +3464,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4607"></A>
-<A NAME="4608"></A>
+<DD><A NAME="4696"></A>
+<A NAME="4697"></A>
 <A NAME="fn:WWindow.xid"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3357,7 +3487,7 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4610"></A>
+<DD><A NAME="4699"></A>
 <A NAME="fn:export"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3379,8 +3509,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4612"></A>
-<A NAME="4613"></A>
+<DD><A NAME="4701"></A>
+<A NAME="4702"></A>
 <A NAME="fn:gr.read_config"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3396,8 +3526,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4614"></A>
-<A NAME="4615"></A>
+<DD><A NAME="4703"></A>
+<A NAME="4704"></A>
 <A NAME="fn:gr.refresh"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3413,8 +3543,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4616"></A>
-<A NAME="4617"></A>
+<DD><A NAME="4705"></A>
+<A NAME="4706"></A>
 <A NAME="fn:gr.select_engine"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3440,8 +3570,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4619"></A>
-<A NAME="4620"></A>
+<DD><A NAME="4708"></A>
+<A NAME="4709"></A>
 <A NAME="fn:string.shell_safe"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3463,8 +3593,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4622"></A>
-<A NAME="4623"></A>
+<DD><A NAME="4711"></A>
+<A NAME="4712"></A>
 <A NAME="fn:table.append"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3480,8 +3610,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4624"></A>
-<A NAME="4625"></A>
+<DD><A NAME="4713"></A>
+<A NAME="4714"></A>
 <A NAME="fn:table.copy"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3498,8 +3628,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4626"></A>
-<A NAME="4627"></A>
+<DD><A NAME="4715"></A>
+<A NAME="4716"></A>
 <A NAME="fn:table.icat"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3515,8 +3645,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4628"></A>
-<A NAME="4629"></A>
+<DD><A NAME="4717"></A>
+<A NAME="4718"></A>
 <A NAME="fn:table.join"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3533,8 +3663,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="4630"></A>
-<A NAME="4631"></A>
+<DD><A NAME="4719"></A>
+<A NAME="4720"></A>
 <A NAME="fn:table.map"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3556,8 +3686,8 @@ Note that this function is asynchronous; the region will not
 </H2>
 
   <DL>
-<DD><A NAME="6929"></A>
-<A NAME="6930"></A>
+<DD><A NAME="7110"></A>
+<A NAME="7111"></A>
 <A NAME="fn:mod_tiling.get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3573,8 +3703,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6931"></A>
-<A NAME="6932"></A>
+<DD><A NAME="7112"></A>
+<A NAME="7113"></A>
 <A NAME="fn:mod_tiling.mkbottom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3591,8 +3721,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6933"></A>
-<A NAME="6934"></A>
+<DD><A NAME="7114"></A>
+<A NAME="7115"></A>
 <A NAME="fn:mod_tiling.set"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3606,6 +3736,24 @@ Note that this function is asynchronous; the region will not
 </DD>
 </DL>
 
+<P>
+
+  <DL>
+<DD><A NAME="7116"></A>
+<A NAME="7117"></A>
+<A NAME="fn:mod_tiling.untile"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>If <TT>tiling</TT> is managed by some group, float the frames in
+ the tiling in that group, and dispose of <TT>tiling</TT>.
+  
+</DD>
+</DL>
+
 <P>
 
 <H3><A NAME="SECTION00721000000000000000">
@@ -3615,8 +3763,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6936"></A>
-<A NAME="6937"></A>
+<DD><A NAME="7119"></A>
+<A NAME="7120"></A>
 <A NAME="fn:WSplit.geom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3632,8 +3780,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6938"></A>
-<A NAME="6939"></A>
+<DD><A NAME="7121"></A>
+<A NAME="7122"></A>
 <A NAME="fn:WSplit.parent"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3649,8 +3797,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6940"></A>
-<A NAME="6941"></A>
+<DD><A NAME="7123"></A>
+<A NAME="7124"></A>
 <A NAME="fn:WSplit.rqgeom"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3668,8 +3816,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6942"></A>
-<A NAME="6943"></A>
+<DD><A NAME="7125"></A>
+<A NAME="7126"></A>
 <A NAME="fn:WSplit.transpose"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3691,8 +3839,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6945"></A>
-<A NAME="6946"></A>
+<DD><A NAME="7128"></A>
+<A NAME="7129"></A>
 <A NAME="fn:WSplitInner.current"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3714,8 +3862,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6948"></A>
-<A NAME="6949"></A>
+<DD><A NAME="7131"></A>
+<A NAME="7132"></A>
 <A NAME="fn:WSplitRegion.reg"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3737,8 +3885,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6951"></A>
-<A NAME="6952"></A>
+<DD><A NAME="7134"></A>
+<A NAME="7135"></A>
 <A NAME="fn:WSplitSplit.br"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3755,8 +3903,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6953"></A>
-<A NAME="6954"></A>
+<DD><A NAME="7136"></A>
+<A NAME="7137"></A>
 <A NAME="fn:WSplitSplit.dir"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3773,8 +3921,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6955"></A>
-<A NAME="6956"></A>
+<DD><A NAME="7138"></A>
+<A NAME="7139"></A>
 <A NAME="fn:WSplitSplit.flip"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3790,8 +3938,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6957"></A>
-<A NAME="6958"></A>
+<DD><A NAME="7140"></A>
+<A NAME="7141"></A>
 <A NAME="fn:WSplitSplit.tl"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3814,8 +3962,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6960"></A>
-<A NAME="6961"></A>
+<DD><A NAME="7143"></A>
+<A NAME="7144"></A>
 <A NAME="fn:WTiling.flip_at"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3831,8 +3979,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6962"></A>
-<A NAME="6963"></A>
+<DD><A NAME="7145"></A>
+<A NAME="7146"></A>
 <A NAME="fn:WTiling.transpose_at"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3848,8 +3996,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6964"></A>
-<A NAME="6965"></A>
+<DD><A NAME="7147"></A>
+<A NAME="7148"></A>
 <A NAME="fn:WTiling.farthest"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3868,8 +4016,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6966"></A>
-<A NAME="6967"></A>
+<DD><A NAME="7149"></A>
+<A NAME="7150"></A>
 <A NAME="fn:WTiling.managed_i"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3888,8 +4036,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6968"></A>
-<A NAME="6969"></A>
+<DD><A NAME="7151"></A>
+<A NAME="7152"></A>
 <A NAME="fn:WTiling.nextto"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3908,8 +4056,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6970"></A>
-<A NAME="6971"></A>
+<DD><A NAME="7153"></A>
+<A NAME="7154"></A>
 <A NAME="fn:WTiling.node_of"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3926,8 +4074,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6972"></A>
-<A NAME="6973"></A>
+<DD><A NAME="7155"></A>
+<A NAME="7156"></A>
 <A NAME="fn:WTiling.set_floating_at"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3946,8 +4094,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6974"></A>
-<A NAME="6975"></A>
+<DD><A NAME="7157"></A>
+<A NAME="7158"></A>
 <A NAME="fn:WTiling.set_floating"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3965,8 +4113,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6976"></A>
-<A NAME="6977"></A>
+<DD><A NAME="7159"></A>
+<A NAME="7160"></A>
 <A NAME="fn:WTiling.split"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -3984,8 +4132,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6978"></A>
-<A NAME="6979"></A>
+<DD><A NAME="7161"></A>
+<A NAME="7162"></A>
 <A NAME="fn:WTiling.split_at"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4006,8 +4154,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6980"></A>
-<A NAME="6981"></A>
+<DD><A NAME="7163"></A>
+<A NAME="7164"></A>
 <A NAME="fn:WTiling.split_top"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4023,8 +4171,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6982"></A>
-<A NAME="6983"></A>
+<DD><A NAME="7165"></A>
+<A NAME="7166"></A>
 <A NAME="fn:WTiling.split_tree"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4040,17 +4188,17 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="6984"></A>
-<A NAME="6985"></A>
+<DD><A NAME="7167"></A>
+<A NAME="7168"></A>
 <A NAME="fn:WTiling.unsplit_at"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTiling.unsplit_at(WTiling ws, WFrame frame)</TT>
+<DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
-<DD>Try to relocate regions managed by <TT>frame</TT> to another frame
- and, if possible, destroy the frame.
+<DD>Try to relocate regions managed by <TT>reg</TT> to another frame
+ and, if possible, destroy it.
   
 </DD>
 </DL>
@@ -4064,8 +4212,8 @@ Note that this function is asynchronous; the region will not
 </H2>
 
   <DL>
-<DD><A NAME="7977"></A>
-<A NAME="7978"></A>
+<DD><A NAME="8171"></A>
+<A NAME="8172"></A>
 <A NAME="fn:mod_query.defcmd"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4081,8 +4229,25 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7979"></A>
-<A NAME="7980"></A>
+<DD><A NAME="8173"></A>
+<A NAME="8174"></A>
+<A NAME="fn:mod_query.message"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>mod_query.message(mplex, str)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Display a message in <TT>mplex</TT>.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="8175"></A>
+<A NAME="8176"></A>
 <A NAME="fn:mod_query.get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4099,8 +4264,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7981"></A>
-<A NAME="7982"></A>
+<DD><A NAME="8177"></A>
+<A NAME="8178"></A>
 <A NAME="fn:mod_query.history_clear"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4116,8 +4281,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7983"></A>
-<A NAME="7984"></A>
+<DD><A NAME="8179"></A>
+<A NAME="8180"></A>
 <A NAME="fn:mod_query.history_get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4133,8 +4298,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7985"></A>
-<A NAME="7986"></A>
+<DD><A NAME="8181"></A>
+<A NAME="8182"></A>
 <A NAME="fn:mod_query.history_push"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4150,8 +4315,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7987"></A>
-<A NAME="7988"></A>
+<DD><A NAME="8183"></A>
+<A NAME="8184"></A>
 <A NAME="fn:mod_query.history_search"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4171,8 +4336,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7989"></A>
-<A NAME="7990"></A>
+<DD><A NAME="8185"></A>
+<A NAME="8186"></A>
 <A NAME="fn:mod_query.history_table"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4188,25 +4353,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7991"></A>
-<A NAME="7992"></A>
-<A NAME="fn:mod_query.message"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WMessage mod_query.message(WMPlex mplex, string p)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display a message in the <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="7993"></A>
-<A NAME="7994"></A>
+<DD><A NAME="8187"></A>
+<A NAME="8188"></A>
 <A NAME="fn:mod_query.set"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4241,25 +4389,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7995"></A>
-<A NAME="7996"></A>
-<A NAME="fn:mod_query.warn"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WMessage mod_query.warn(WMPlex mplex, string p)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display an error message box in the multiplexer <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="7997"></A>
-<A NAME="7998"></A>
+<DD><A NAME="8189"></A>
+<A NAME="8190"></A>
 <A NAME="fn:mod_query.popen_completions"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4282,8 +4413,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="7999"></A>
-<A NAME="8000"></A>
+<DD><A NAME="8191"></A>
+<A NAME="8192"></A>
 <A NAME="fn:mod_query.query"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4309,8 +4440,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8001"></A>
-<A NAME="8002"></A>
+<DD><A NAME="8193"></A>
+<A NAME="8194"></A>
 <A NAME="fn:mod_query.query_attachclient"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4328,8 +4459,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8003"></A>
-<A NAME="8004"></A>
+<DD><A NAME="8195"></A>
+<A NAME="8196"></A>
 <A NAME="fn:mod_query.query_editfile"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4347,8 +4478,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8005"></A>
-<A NAME="8006"></A>
+<DD><A NAME="8197"></A>
+<A NAME="8198"></A>
 <A NAME="fn:mod_query.query_exec"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4368,8 +4499,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8007"></A>
-<A NAME="8008"></A>
+<DD><A NAME="8199"></A>
+<A NAME="8200"></A>
 <A NAME="fn:mod_query.query_gotoclient"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4387,8 +4518,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8009"></A>
-<A NAME="8010"></A>
+<DD><A NAME="8201"></A>
+<A NAME="8202"></A>
 <A NAME="fn:mod_query.query_lua"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4407,8 +4538,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8011"></A>
-<A NAME="8012"></A>
+<DD><A NAME="8203"></A>
+<A NAME="8204"></A>
 <A NAME="fn:mod_query.query_man"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4426,12 +4557,12 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8013"></A>
-<A NAME="8014"></A>
+<DD><A NAME="8205"></A>
+<A NAME="8206"></A>
 <A NAME="fn:mod_query.query_menu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_menu(mplex, themenu, prompt)</TT>
+<DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
 
 </DD>
 <DT><STRONG>Description:</STRONG></DT>
@@ -4443,8 +4574,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8015"></A>
-<A NAME="8016"></A>
+<DD><A NAME="8207"></A>
+<A NAME="8208"></A>
 <A NAME="fn:mod_query.query_renameframe"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4461,8 +4592,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8017"></A>
-<A NAME="8018"></A>
+<DD><A NAME="8209"></A>
+<A NAME="8210"></A>
 <A NAME="fn:mod_query.query_renameworkspace"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4480,8 +4611,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8019"></A>
-<A NAME="8020"></A>
+<DD><A NAME="8211"></A>
+<A NAME="8212"></A>
 <A NAME="fn:mod_query.query_restart"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4498,8 +4629,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8021"></A>
-<A NAME="8022"></A>
+<DD><A NAME="8213"></A>
+<A NAME="8214"></A>
 <A NAME="fn:mod_query.query_runfile"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4517,8 +4648,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8023"></A>
-<A NAME="8024"></A>
+<DD><A NAME="8215"></A>
+<A NAME="8216"></A>
 <A NAME="fn:mod_query.query_shutdown"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4536,8 +4667,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8025"></A>
-<A NAME="8026"></A>
+<DD><A NAME="8217"></A>
+<A NAME="8218"></A>
 <A NAME="fn:mod_query.query_ssh"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4554,8 +4685,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8028"></A>
-<A NAME="8029"></A>
+<DD><A NAME="8220"></A>
+<A NAME="8221"></A>
 <A NAME="fn:mod_query.query_workspace"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4575,8 +4706,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8030"></A>
-<A NAME="8031"></A>
+<DD><A NAME="8222"></A>
+<A NAME="8223"></A>
 <A NAME="fn:mod_query.query_yesno"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4594,8 +4725,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8032"></A>
-<A NAME="8033"></A>
+<DD><A NAME="8224"></A>
+<A NAME="8225"></A>
 <A NAME="fn:mod_query.show_about_ion"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4611,8 +4742,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8034"></A>
-<A NAME="8035"></A>
+<DD><A NAME="8226"></A>
+<A NAME="8227"></A>
 <A NAME="fn:mod_query.show_tree"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4625,6 +4756,23 @@ Note that this function is asynchronous; the region will not
 </DD>
 </DL>
 
+<P>
+
+  <DL>
+<DD><A NAME="8228"></A>
+<A NAME="8229"></A>
+<A NAME="fn:mod_query.warn"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>mod_query.warn(mplex, str)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Display an error message box in the multiplexer <TT>mplex</TT>.
+  
+</DD>
+</DL>
+
 <P>
 
 <H3><A NAME="SECTION00731000000000000000">
@@ -4634,8 +4782,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8037"></A>
-<A NAME="8038"></A>
+<DD><A NAME="8231"></A>
+<A NAME="8232"></A>
 <A NAME="fn:WComplProxy.set_completions"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4661,8 +4809,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8040"></A>
-<A NAME="8041"></A>
+<DD><A NAME="8234"></A>
+<A NAME="8235"></A>
 <A NAME="fn:WEdln.back"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4678,8 +4826,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8042"></A>
-<A NAME="8043"></A>
+<DD><A NAME="8236"></A>
+<A NAME="8237"></A>
 <A NAME="fn:WEdln.backspace"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4695,8 +4843,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8044"></A>
-<A NAME="8045"></A>
+<DD><A NAME="8238"></A>
+<A NAME="8239"></A>
 <A NAME="fn:WEdln.bkill_word"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4713,8 +4861,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8046"></A>
-<A NAME="8047"></A>
+<DD><A NAME="8240"></A>
+<A NAME="8241"></A>
 <A NAME="fn:WEdln.bol"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4730,8 +4878,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8048"></A>
-<A NAME="8049"></A>
+<DD><A NAME="8242"></A>
+<A NAME="8243"></A>
 <A NAME="fn:WEdln.bskip_word"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4748,8 +4896,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8050"></A>
-<A NAME="8051"></A>
+<DD><A NAME="8244"></A>
+<A NAME="8245"></A>
 <A NAME="fn:WEdln.clear_mark"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4765,8 +4913,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8052"></A>
-<A NAME="8053"></A>
+<DD><A NAME="8246"></A>
+<A NAME="8247"></A>
 <A NAME="fn:WEdln.complete"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4788,8 +4936,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8054"></A>
-<A NAME="8055"></A>
+<DD><A NAME="8248"></A>
+<A NAME="8249"></A>
 <A NAME="fn:WEdln.contents"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4805,8 +4953,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8056"></A>
-<A NAME="8057"></A>
+<DD><A NAME="8250"></A>
+<A NAME="8251"></A>
 <A NAME="fn:WEdln.context"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4822,8 +4970,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8058"></A>
-<A NAME="8059"></A>
+<DD><A NAME="8252"></A>
+<A NAME="8253"></A>
 <A NAME="fn:WEdln.copy"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4839,8 +4987,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8060"></A>
-<A NAME="8061"></A>
+<DD><A NAME="8254"></A>
+<A NAME="8255"></A>
 <A NAME="fn:WEdln.cut"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4857,8 +5005,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8062"></A>
-<A NAME="8063"></A>
+<DD><A NAME="8256"></A>
+<A NAME="8257"></A>
 <A NAME="fn:WEdln.delete"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4874,8 +5022,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8064"></A>
-<A NAME="8065"></A>
+<DD><A NAME="8258"></A>
+<A NAME="8259"></A>
 <A NAME="fn:WEdln.eol"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4891,8 +5039,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8066"></A>
-<A NAME="8067"></A>
+<DD><A NAME="8260"></A>
+<A NAME="8261"></A>
 <A NAME="fn:WEdln.finish"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4908,8 +5056,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8068"></A>
-<A NAME="8069"></A>
+<DD><A NAME="8262"></A>
+<A NAME="8263"></A>
 <A NAME="fn:WEdln.forward"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4925,8 +5073,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8070"></A>
-<A NAME="8071"></A>
+<DD><A NAME="8264"></A>
+<A NAME="8265"></A>
 <A NAME="fn:WEdln.history_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4944,8 +5092,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8072"></A>
-<A NAME="8073"></A>
+<DD><A NAME="8266"></A>
+<A NAME="8267"></A>
 <A NAME="fn:WEdln.history_prev"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4963,8 +5111,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8074"></A>
-<A NAME="8075"></A>
+<DD><A NAME="8268"></A>
+<A NAME="8269"></A>
 <A NAME="fn:WEdln.insstr"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4980,8 +5128,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8076"></A>
-<A NAME="8077"></A>
+<DD><A NAME="8270"></A>
+<A NAME="8271"></A>
 <A NAME="fn:WEdln.is_histcompl"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -4997,8 +5145,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8078"></A>
-<A NAME="8079"></A>
+<DD><A NAME="8272"></A>
+<A NAME="8273"></A>
 <A NAME="fn:WEdln.kill_line"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5014,8 +5162,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8080"></A>
-<A NAME="8081"></A>
+<DD><A NAME="8274"></A>
+<A NAME="8275"></A>
 <A NAME="fn:WEdln.kill_to_bol"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5031,8 +5179,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8082"></A>
-<A NAME="8083"></A>
+<DD><A NAME="8276"></A>
+<A NAME="8277"></A>
 <A NAME="fn:WEdln.kill_to_eol"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5048,8 +5196,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8084"></A>
-<A NAME="8085"></A>
+<DD><A NAME="8278"></A>
+<A NAME="8279"></A>
 <A NAME="fn:WEdln.kill_word"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5066,8 +5214,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8086"></A>
-<A NAME="8087"></A>
+<DD><A NAME="8280"></A>
+<A NAME="8281"></A>
 <A NAME="fn:WEdln.mark"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5085,8 +5233,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8088"></A>
-<A NAME="8089"></A>
+<DD><A NAME="8282"></A>
+<A NAME="8283"></A>
 <A NAME="fn:WEdln.next_completion"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5102,8 +5250,8 @@ Note that this function is asynchronous; the region will not
 <P>
 
   <DL>
-<DD><A NAME="8090"></A>
-<A NAME="8091"></A>
+<DD><A NAME="8284"></A>
+<A NAME="8285"></A>
 <A NAME="fn:WEdln.paste"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5124,8 +5272,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8092"></A>
-<A NAME="8093"></A>
+<DD><A NAME="8286"></A>
+<A NAME="8287"></A>
 <A NAME="fn:WEdln.point"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5142,8 +5290,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8094"></A>
-<A NAME="8095"></A>
+<DD><A NAME="8288"></A>
+<A NAME="8289"></A>
 <A NAME="fn:WEdln.prev_completion"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5159,8 +5307,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8096"></A>
-<A NAME="8097"></A>
+<DD><A NAME="8290"></A>
+<A NAME="8291"></A>
 <A NAME="fn:WEdln.set_context"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5176,8 +5324,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8098"></A>
-<A NAME="8099"></A>
+<DD><A NAME="8292"></A>
+<A NAME="8293"></A>
 <A NAME="fn:WEdln.set_mark"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5193,8 +5341,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8100"></A>
-<A NAME="8101"></A>
+<DD><A NAME="8294"></A>
+<A NAME="8295"></A>
 <A NAME="fn:WEdln.skip_word"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5211,8 +5359,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8102"></A>
-<A NAME="8103"></A>
+<DD><A NAME="8296"></A>
+<A NAME="8297"></A>
 <A NAME="fn:WEdln.transpose_chars"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5228,8 +5376,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8104"></A>
-<A NAME="8105"></A>
+<DD><A NAME="8298"></A>
+<A NAME="8299"></A>
 <A NAME="fn:WEdln.transpose_words"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5251,8 +5399,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8107"></A>
-<A NAME="8108"></A>
+<DD><A NAME="8301"></A>
+<A NAME="8302"></A>
 <A NAME="fn:WInput.cancel"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5268,8 +5416,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8109"></A>
-<A NAME="8110"></A>
+<DD><A NAME="8303"></A>
+<A NAME="8304"></A>
 <A NAME="fn:WInput.scrolldown"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5285,8 +5433,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8111"></A>
-<A NAME="8112"></A>
+<DD><A NAME="8305"></A>
+<A NAME="8306"></A>
 <A NAME="fn:WInput.scrollup"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5308,8 +5456,8 @@ Note that this function is asynchronous; the selection will not
 </H2>
 
   <DL>
-<DD><A NAME="8928"></A>
-<A NAME="8929"></A>
+<DD><A NAME="9122"></A>
+<A NAME="9123"></A>
 <A NAME="fn:mod_menu.grabmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5327,8 +5475,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8930"></A>
-<A NAME="8931"></A>
+<DD><A NAME="9124"></A>
+<A NAME="9125"></A>
 <A NAME="fn:mod_menu.menu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5354,8 +5502,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8932"></A>
-<A NAME="8933"></A>
+<DD><A NAME="9126"></A>
+<A NAME="9127"></A>
 <A NAME="fn:mod_menu.get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5371,8 +5519,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8934"></A>
-<A NAME="8935"></A>
+<DD><A NAME="9128"></A>
+<A NAME="9129"></A>
 <A NAME="fn:mod_menu.set"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5406,8 +5554,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8936"></A>
-<A NAME="8937"></A>
+<DD><A NAME="9130"></A>
+<A NAME="9131"></A>
 <A NAME="fn:mod_menu.pmenu"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5431,8 +5579,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8939"></A>
-<A NAME="8940"></A>
+<DD><A NAME="9133"></A>
+<A NAME="9134"></A>
 <A NAME="fn:WMenu.cancel"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5448,8 +5596,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8941"></A>
-<A NAME="8942"></A>
+<DD><A NAME="9135"></A>
+<A NAME="9136"></A>
 <A NAME="fn:WMenu.finish"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5466,8 +5614,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8943"></A>
-<A NAME="8944"></A>
+<DD><A NAME="9137"></A>
+<A NAME="9138"></A>
 <A NAME="fn:WMenu.select_next"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5483,8 +5631,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8945"></A>
-<A NAME="8946"></A>
+<DD><A NAME="9139"></A>
+<A NAME="9140"></A>
 <A NAME="fn:WMenu.select_nth"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5500,8 +5648,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8947"></A>
-<A NAME="8948"></A>
+<DD><A NAME="9141"></A>
+<A NAME="9142"></A>
 <A NAME="fn:WMenu.select_prev"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5517,8 +5665,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="8949"></A>
-<A NAME="8950"></A>
+<DD><A NAME="9143"></A>
+<A NAME="9144"></A>
 <A NAME="fn:WMenu.typeahead_clear"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5540,8 +5688,8 @@ Note that this function is asynchronous; the selection will not
 </H2>
 
   <DL>
-<DD><A NAME="9148"></A>
-<A NAME="9149"></A>
+<DD><A NAME="9342"></A>
+<A NAME="9343"></A>
 <A NAME="fn:mod_dock.set_floating_shown_on"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5563,8 +5711,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="9151"></A>
-<A NAME="9152"></A>
+<DD><A NAME="9345"></A>
+<A NAME="9346"></A>
 <A NAME="fn:WDock.attach"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5580,8 +5728,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="9153"></A>
-<A NAME="9154"></A>
+<DD><A NAME="9347"></A>
+<A NAME="9348"></A>
 <A NAME="fn:WDock.get"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5598,8 +5746,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="9155"></A>
-<A NAME="9156"></A>
+<DD><A NAME="9349"></A>
+<A NAME="9350"></A>
 <A NAME="fn:WDock.resize"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5615,8 +5763,8 @@ Note that this function is asynchronous; the selection will not
 <P>
 
   <DL>
-<DD><A NAME="9157"></A>
-<A NAME="9158"></A>
+<DD><A NAME="9351"></A>
+<A NAME="9352"></A>
 <A NAME="fn:WDock.set"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5671,8 +5819,8 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 </H2>
 
   <DL>
-<DD><A NAME="9257"></A>
-<A NAME="9258"></A>
+<DD><A NAME="9451"></A>
+<A NAME="9452"></A>
 <A NAME="fn:mod_sp.set_shown"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5689,8 +5837,8 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 <P>
 
   <DL>
-<DD><A NAME="9259"></A>
-<A NAME="9260"></A>
+<DD><A NAME="9453"></A>
+<A NAME="9454"></A>
 <A NAME="fn:mod_sp.set_shown_on"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5707,14 +5855,147 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 <P>
 
 <H2><A NAME="SECTION00770000000000000000"></A>
+<A NAME="sec:statusbarref"></A>
+<BR>
+<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN>
+</H2>
+
+  <DL>
+<DD><A NAME="9548"></A>
+<A NAME="9549"></A>
+<A NAME="fn:mod_statusbar.statusbars"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>table mod_statusbar.statusbars()</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Returns a list of all statusbars.
+  
+</DD>
+</DL>
+
+<P>
+
+<H3><A NAME="SECTION00771000000000000000">
+<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
+</H3>
+
+<P>
+
+  <DL>
+<DD><A NAME="9551"></A>
+<A NAME="9552"></A>
+<A NAME="fn:WStatusBar.get_template_table"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Get statusbar template as table.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="9553"></A>
+<A NAME="9554"></A>
+<A NAME="fn:WStatusBar.is_systray_extl"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>bool WStatusBar.is_systray_extl(WStatusBar sb)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Is <TT>sb</TT> used as a systray?
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="9555"></A>
+<A NAME="9556"></A>
+<A NAME="fn:WStatusBar.set_systray"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Enable or disable use of <TT>sb</TT> as systray.
+ The parameter <TT>how</TT> can be one of (set/unset/toggle). 
+ Resulting state is returned.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="9557"></A>
+<A NAME="9558"></A>
+<A NAME="fn:WStatusBar.set_template"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Set statusbar template.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="9559"></A>
+<A NAME="9560"></A>
+<A NAME="fn:WStatusBar.set_template_table"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Set statusbar template as table.
+  
+</DD>
+</DL>
+
+<P>
+
+  <DL>
+<DD><A NAME="9561"></A>
+<A NAME="9562"></A>
+<A NAME="fn:WStatusBar.update"></A>  
+</DD>
+<DT><STRONG>Synopsis:</STRONG></DT>
+<DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
+
+</DD>
+<DT><STRONG>Description:</STRONG></DT>
+<DD>Set statusbar template.
+  
+</DD>
+</DL>
+
+<P>
+
+<H2><A NAME="SECTION00780000000000000000"></A>
 <A NAME="sec:deref"></A>
 <BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN>
+<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN>
 </H2>
 
   <DL>
-<DD><A NAME="9324"></A>
-<A NAME="9325"></A>
+<DD><A NAME="9672"></A>
+<A NAME="9673"></A>
 <A NAME="fn:de.defstyle"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5730,8 +6011,8 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 <P>
 
   <DL>
-<DD><A NAME="9326"></A>
-<A NAME="9327"></A>
+<DD><A NAME="9674"></A>
+<A NAME="9675"></A>
 <A NAME="fn:de.defstyle_rootwin"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5747,8 +6028,8 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 <P>
 
   <DL>
-<DD><A NAME="9328"></A>
-<A NAME="9329"></A>
+<DD><A NAME="9676"></A>
+<A NAME="9677"></A>
 <A NAME="fn:de.reset"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5764,8 +6045,8 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 <P>
 
   <DL>
-<DD><A NAME="9330"></A>
-<A NAME="9331"></A>
+<DD><A NAME="9678"></A>
+<A NAME="9679"></A>
 <A NAME="fn:de.substyle"></A>  
 </DD>
 <DT><STRONG>Synopsis:</STRONG></DT>
@@ -5780,16 +6061,16 @@ Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
 
 <P>
 
-<H2><A NAME="SECTION00780000000000000000"></A>
+<H2><A NAME="SECTION00790000000000000000"></A>
 <A NAME="sec:hookref"></A>
 <BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Hooks
+<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
 </H2>
 
 <P>
 
   <DL>
-<DD><A NAME="9529"></A>
+<DD><A NAME="9877"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5861,7 +6142,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9530"></A>
+<DD><A NAME="9878"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5881,7 +6162,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9531"></A>
+<DD><A NAME="9879"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5902,7 +6183,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9532"></A>
+<DD><A NAME="9880"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5923,7 +6204,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9533"></A>
+<DD><A NAME="9881"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5969,7 +6250,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9534"></A>
+<DD><A NAME="9882"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -5990,7 +6271,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9535"></A>
+<DD><A NAME="9883"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6010,7 +6291,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9536"></A>
+<DD><A NAME="9884"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6031,7 +6312,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9537"></A>
+<DD><A NAME="9885"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6051,7 +6332,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9538"></A>
+<DD><A NAME="9886"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6103,7 +6384,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9539"></A>
+<DD><A NAME="9887"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6124,7 +6405,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9540"></A>
+<DD><A NAME="9888"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6146,7 +6427,7 @@ reg:attach(cwin)
 <P>
 
   <DL>
-<DD><A NAME="9541"></A>
+<DD><A NAME="9889"></A>
 
 </DD>
 <DT><STRONG>Hook name:</STRONG></DT>
@@ -6219,31 +6500,31 @@ A region is pseudoactive, when a) it is itself not active (does
 
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html348"
+<A NAME="tex2html355"
   HREF="node8.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html342"
+<A NAME="tex2html349"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html336"
+<A NAME="tex2html343"
   HREF="node6.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html344"
+<A NAME="tex2html351"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html346"
+<A NAME="tex2html353"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html349"
+<B> Next:</B> <A NAME="tex2html356"
   HREF="node8.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html343"
+<B> Up:</B> <A NAME="tex2html350"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html337"
+<B> Previous:</B> <A NAME="tex2html344"
   HREF="node6.html">5. Scripting</A>
- &nbsp; <B>  <A NAME="tex2html345"
+ &nbsp; <B>  <A NAME="tex2html352"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html347"
+ &nbsp; <B>  <A NAME="tex2html354"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index 7b79bc04cce31077a7d6cf11a58b25c19410e79e..555d7bf0403882659c599de1ae97920e35e26293 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html396"
+<A NAME="tex2html405"
   HREF="node9.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html390"
+<A NAME="tex2html399"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html384"
+<A NAME="tex2html393"
   HREF="node7.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html392"
+<A NAME="tex2html401"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html394"
+<A NAME="tex2html403"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html397"
+<B> Next:</B> <A NAME="tex2html406"
   HREF="node9.html">B. Full class hierarchy</A>
-<B> Up:</B> <A NAME="tex2html391"
+<B> Up:</B> <A NAME="tex2html400"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html385"
+<B> Previous:</B> <A NAME="tex2html394"
   HREF="node7.html">6. Function reference</A>
- &nbsp; <B>  <A NAME="tex2html393"
+ &nbsp; <B>  <A NAME="tex2html402"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html395"
+ &nbsp; <B>  <A NAME="tex2html404"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
@@ -61,7 +61,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
 
 <UL CLASS="ChildLinks">
-<LI><A NAME="tex2html398"
+<LI><A NAME="tex2html407"
   HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
 </UL>
 <!--End of Table of Child-Links-->
@@ -565,31 +565,31 @@ General Public License instead of this License.
 
 <DIV CLASS="navigation"><HR>
 <!--Navigation Panel-->
-<A NAME="tex2html396"
+<A NAME="tex2html405"
   HREF="node9.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html390"
+<A NAME="tex2html399"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html384"
+<A NAME="tex2html393"
   HREF="node7.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html392"
+<A NAME="tex2html401"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html394"
+<A NAME="tex2html403"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html397"
+<B> Next:</B> <A NAME="tex2html406"
   HREF="node9.html">B. Full class hierarchy</A>
-<B> Up:</B> <A NAME="tex2html391"
+<B> Up:</B> <A NAME="tex2html400"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html385"
+<B> Previous:</B> <A NAME="tex2html394"
   HREF="node7.html">6. Function reference</A>
- &nbsp; <B>  <A NAME="tex2html393"
+ &nbsp; <B>  <A NAME="tex2html402"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html395"
+ &nbsp; <B>  <A NAME="tex2html404"
   HREF="node11.html">Index</A></B> </DIV>
 <!--End of Navigation Panel-->
 
index 9d55faa9522b86352c4f3a78ef0661a3dab07f7a..06f669013bd3a0f0ff5a7307938f38c1c41dc703 100644 (file)
@@ -28,31 +28,31 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BODY >
 
 <DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html411"
+<A NAME="tex2html420"
   HREF="node10.html">
 <IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html405"
+<A NAME="tex2html414"
   HREF="ionconf.html">
 <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html399"
+<A NAME="tex2html408"
   HREF="node8.html">
 <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html407"
+<A NAME="tex2html416"
   HREF="node1.html">
 <IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html409"
+<A NAME="tex2html418"
   HREF="node11.html">
 <IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
 <BR>
-<B> Next:</B> <A NAME="tex2html412"
+<B> Next:</B> <A NAME="tex2html421"
   HREF="node10.html">List of functions</A>
-<B> Up:</B> <A NAME="tex2html406"
+<B> Up:</B> <A NAME="tex2html415"
   HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html400"
+<B> Previous:</B> <A NAME="tex2html409"
   HREF="node8.html">A. The GNU General</A>
- &nbsp; <B>  <A NAME="tex2html408"
+ &nbsp; <B>  <A NAME="tex2html417"
   HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html410"
+ &nbsp; <B>  <A NAME="tex2html419"
   HREF="node11.html">Index</A></B> 
 <BR>
 <BR></DIV>
index 599aad6a386aaefd0a3ad94c8b01f430b62f687d..1d53cb60189a766c054dd4fa40ffe6f873df8ee9 100644 (file)
Binary files a/doc/ionnotes.dvi.gz and b/doc/ionnotes.dvi.gz differ
index 2bbff07cc488b76cae151234be7bf9eb1ed86921..d83c4f96f524dab0f7f3f0b155792689c4e9a21d 100644 (file)
Binary files a/doc/ionnotes.ps.gz and b/doc/ionnotes.ps.gz differ
index ad3c8396a0853d7b6f6332c9f912660453906e40..d181c54bab3845079a5915f9fd08b3b322723848 100644 (file)
@@ -354,10 +354,12 @@ Most common manager-managed relations</CAPTION>
           |         |--&gt; WClientWin
           |--&gt;WGroupWSs for workspaces
           |    |--&gt;WTiling
-          |    |    |--&gt;possibly a WEdln, WMessage or WMenu
           |    |    |--&gt;WFrames
-          |    |         |--&gt;WGroupCWs (with contents as above)
+          |    |    |    |--&gt;WGroupCWs (with contents as above)
+          |    |    |--&gt;possibly a WStatusBar or WDock
           |    |--&gt;WFrames for floating content
+          |    |--&gt;possibly a WEdln, WMessage or WMenu
+          |    |--&gt;possibly a WStatusBar or WDock (if no tiling)
           |--&gt;WFrames for sticky stuff, such as the scratchpad
 </PRE></TD></TR>
 </TABLE>
index 78230101dbf17e6ae233ac5ad1f569a0582f3ed8..fd8126b7759406ba932aeb04b4e8fbe7f1ac0228 100644 (file)
@@ -70,7 +70,7 @@ Mathematics Department, Macquarie University, Sydney.
 The command line arguments were: <BR>
  <STRONG>latex2html</STRONG> <TT>-show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 4 ionnotes</TT>
 <P>
-The translation was initiated by tuomov on 2007-02-03
+The translation was initiated by tuomov on 2007-03-18
 <BR><HR>
 
 </BODY>
index 80321fa94cc61cade38de40cdf2d994c0109ec76..5a5b04f54ad7de29a862d98e21d4699364f523e5 100644 (file)
@@ -203,10 +203,12 @@ but all have a parent--a screen if not anything else.
           |         |--> WClientWin
           |-->WGroupWSs for workspaces
           |    |-->WTiling
-          |    |    |-->possibly a WEdln, WMessage or WMenu
           |    |    |-->WFrames
-          |    |         |-->WGroupCWs (with contents as above)
+          |    |    |    |-->WGroupCWs (with contents as above)
+          |    |    |-->possibly a WStatusBar or WDock
           |    |-->WFrames for floating content
+          |    |-->possibly a WEdln, WMessage or WMenu
+          |    |-->possibly a WStatusBar or WDock (if no tiling)
           |-->WFrames for sticky stuff, such as the scratchpad
 \end{verbatim}
 \caption{Most common manager--managed relations}
index 2c5b191a53934f46c19f738875f0a92d9a3d2e21..6a940a12f0d1afe944fa68861ec7b5f46f68663d 100644 (file)
@@ -8,13 +8,16 @@ include $(TOPDIR)/build/system-inc.mk
 
 ######################################
 
-ETC =  cfg_ion.lua cfg_ioncore.lua cfg_kludges.lua cfg_modules.lua \
+ETC =  cfg_ion.lua cfg_ioncore.lua cfg_kludges.lua cfg_defaults.lua \
        cfg_tiling.lua cfg_query.lua cfg_menu.lua \
        cfg_statusbar.lua cfg_dock.lua cfg_layouts.lua \
        look_brownsteel.lua look_clean.lua look_dusky.lua \
        look_greyviolet.lua look_ios.lua look_cleanviolet.lua \
-       look_simpleblue.lua look_cleanios.lua \
-        lookcommon_clean.lua lookcommon_emboss.lua
+       look_simpleblue.lua look_cleanios.lua look_newviolet.lua \
+        lookcommon_clean.lua lookcommon_clean_stdisp.lua \
+        lookcommon_clean_tab.lua lookcommon_clean_frame.lua \
+        lookcommon_emboss.lua lookcommon_emboss_stdisp.lua \
+        lookcommon_emboss_tab.lua lookcommon_emboss_frame.lua
 
 ######################################
 
@@ -24,4 +27,4 @@ include $(TOPDIR)/build/rules.mk
 
 _install: etc_install
        rm -f $(ETCDIR)/look.lua
-       ln -s look_cleanviolet.lua $(ETCDIR)/look.lua
+       ln -s look_newviolet.lua $(ETCDIR)/look.lua
diff --git a/etc/cfg_defaults.lua b/etc/cfg_defaults.lua
new file mode 100644 (file)
index 0000000..096ab9b
--- /dev/null
@@ -0,0 +1,17 @@
+--
+-- Ion default settings
+--
+
+dopath("cfg_ioncore")
+dopath("cfg_kludges")
+dopath("cfg_layouts")
+
+dopath("mod_query")
+dopath("mod_menu")
+dopath("mod_tiling")
+dopath("mod_statusbar")
+--dopath("mod_dock")
+dopath("mod_sp")
+
+-- Deprecated.
+dopath("cfg_user", true)
index 339a026952c9a527e48e4792a9508c171f02a3ce..d1255e5807368c8f85be51113240e38b8fa02e38 100644 (file)
@@ -34,17 +34,23 @@ ioncore.set{
     --warp=true,
 }
 
--- cfg_ioncore contains configuration of the Ion 'core'
-dopath("cfg_ioncore")
+
+-- Load default settings. The file cfg_defaults loads all the files
+-- commented out below, except mod_dock. If you do not want to load
+-- something, comment out this line, and uncomment the lines corresponding
+-- the the modules or configuration files that you want, below.
+dopath("cfg_defaults")
+
+-- Load configuration of the Ion 'core'
+--dopath("cfg_ioncore")
 
 -- Load some kludges to make apps behave better.
-dopath("cfg_kludges")
+--dopath("cfg_kludges")
 
--- Load some modules. Disable the loading of cfg_modules by commenting out 
--- the corresponding line with -- if you don't want the whole default set 
--- (everything except mod_dock). Then uncomment the lines for the modules
--- you want. 
-dopath("cfg_modules")
+-- Define some layouts. 
+--dopath("cfg_layouts")
+
+-- Load some modules. 
 --dopath("mod_query")
 --dopath("mod_menu")
 --dopath("mod_tiling")
@@ -52,9 +58,3 @@ dopath("cfg_modules")
 --dopath("mod_dock")
 --dopath("mod_sp")
 
--- Define some default layouts. This is also done by cfg_modules
--- if loaded.
---dopath("cfg_layouts", true)
-
--- Deprecated.
-dopath("cfg_user", true)
index b10b46c3e31bca7cfb9144f7960b3239dbe5a7bb..4cfe2a336132b8cabc1942b8ee224cf3529aebc3 100644 (file)
@@ -65,7 +65,7 @@ defbindings("WScreen", {
     kpress(META.."F9", "ioncore.create_ws(_)"),
     
     bdoc("Display the main menu."),
-    kpress(ALTMETA.."F12", "mod_query.query_menu(_, 'mainmenu', 'Main menu:')"),
+    kpress(ALTMETA.."F12", "mod_query.query_menu(_, _sub, 'mainmenu', 'Main menu:')"),
     --kpress(ALTMETA.."F12", "mod_menu.menu(_, _sub, 'mainmenu', {big=true})"),
     mpress("Button3", "mod_menu.pmenu(_, _sub, 'mainmenu')"),
     
@@ -178,13 +178,9 @@ defbindings("WMPlex.toplevel", {
     bdoc("Query for a client window to go to."),
     kpress(META.."G", "mod_query.query_gotoclient(_)"),
     
-    bdoc("Query for a client window to attach."),
-    kpress(META.."A", "mod_query.query_attachclient(_)"),
-    
     bdoc("Display context menu."),
-    --kpress(META.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
-    kpress(META.."M", "mod_query.query_menu(_, 'ctxmenu', 'Context menu:')"),
-
+    --kpress(META.."M", "mod_menu.menu(_, _chld, 'ctxmenu')"),
+    kpress(META.."M", "mod_query.query_menu(_, _chld, 'ctxmenu', 'Context menu:')"),
 })
 
 
@@ -201,7 +197,7 @@ defbindings("WFrame", {
     }),
     
     bdoc("Display context menu."),
-    mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"),
+    mpress("Button3", "mod_menu.pmenu(_, _chld, 'ctxmenu')"),
     
     bdoc("Begin move/resize mode."),
     kpress(META.."R", "WFrame.begin_kbresize(_)"),
@@ -229,6 +225,9 @@ defbindings("WFrame.toplevel", {
     bdoc("Tag current object within the frame."),
     kpress(META.."T", "WRegion.set_tagged(_sub, 'toggle')", "_sub:non-nil"),
     
+    bdoc("Query for a client window to attach."),
+    kpress(META.."A", "mod_query.query_attachclient(_)"),
+    
     submap(META.."K", {
         bdoc("Switch to n:th object within the frame."),
         kpress("1", "WFrame.switch_nth(_, 0)"),
@@ -255,7 +254,7 @@ defbindings("WFrame.toplevel", {
         kpress("V", "WFrame.maximize_vert(_)"),
 
         bdoc("Attach tagged objects to this frame."),
-        kpress("A", "WFrame.attach_tagged(_)"),
+        kpress("A", "ioncore.tagged_attach(_)"),
     }),
 })
 
@@ -330,7 +329,8 @@ defbindings("WMoveresMode", {
 
 -- Main menu
 defmenu("mainmenu", {
-    submenu("Programs",         "appmenu"),
+    menuentry("Run...",         "mod_query.query_exec(_)"),
+    menuentry("Terminal",       "ioncore.exec_on(_, XTERM or 'xterm')"),
     menuentry("Lock screen",    "ioncore.exec_on(_, 'xlock')"),
     menuentry("Help",           "mod_query.query_man(_)"),
     menuentry("About Ion",      "mod_query.show_about_ion(_)"),
@@ -339,19 +339,6 @@ defmenu("mainmenu", {
 })
 
 
--- Application menu
-defmenu("appmenu", {
-    menuentry("XTerm",          "ioncore.exec_on(_, 'xterm')"),
-    menuentry("W3M",            "ioncore.exec_on(_, ':w3m -v')"),
-    menuentry("Rxvt",           "ioncore.exec_on(_, 'rxvt')"),
-    menuentry("Opera",          "ioncore.exec_on(_, 'opera')"),
-    menuentry("Links",          "ioncore.exec_on(_, ':links')"),
-    menuentry("Konqueror",      "ioncore.exec_on(_, 'konqueror')"),
-    menuentry("Dillo",          "ioncore.exec_on(_, 'dillo')"),
-    menuentry("Run...",         "mod_query.query_exec(_)"),
-})
-
-
 -- Session control menu
 defmenu("sessionmenu", {
     menuentry("Save",           "ioncore.snapshot()"),
@@ -361,18 +348,23 @@ defmenu("sessionmenu", {
 })
 
 
--- Context menu (frame/client window actions)
+-- Context menu (frame actions etc.)
 defctxmenu("WFrame", "Frame", {
+    -- Note: this propagates the close to any subwindows; it does not
+    -- destroy the frame itself, unless empty. An entry to destroy tiled
+    -- frames is configured in cfg_tiling.lua.
     menuentry("Close",          "WRegion.rqclose_propagate(_, _sub)"),
-    menuentry("Kill",           "WClientWin.kill(_sub)",
-                                "_sub:WClientWin"),
-    menuentry("De/reattach",    "ioncore.detach(_sub, 'toggle')", 
-                                "_sub:non-nil"),
-    menuentry("Toggle tag",     "WRegion.set_tagged(_sub, 'toggle')",
-                                "_sub:non-nil"),
-    menuentry("Attach tagged",  "WFrame.attach_tagged(_)"),
-    menuentry("Clear tags",     "ioncore.clear_tags()"),
-    menuentry("Window info",    "mod_query.show_tree(_, _sub)"),
+    -- Low-priority entries
+    menuentry("Attach tagged", "ioncore.tagged_attach(_)", { priority = 0 }),
+    menuentry("Clear tags",    "ioncore.clear_tags()", { priority = 0 }),
+    menuentry("Window info",   "mod_query.show_tree(_, _sub)", { priority = 0 }),
+})
+
+
+-- Context menu for groups (workspaces, client windows)
+defctxmenu("WGroup", "Group", {
+    menuentry("Toggle tag",     "WRegion.set_tagged(_, 'toggle')"),
+    menuentry("De/reattach",    "ioncore.detach(_, 'toggle')"), 
 })
 
 
@@ -380,5 +372,11 @@ defctxmenu("WFrame", "Frame", {
 defctxmenu("WGroupWS", "Workspace", {
     menuentry("Close",          "WRegion.rqclose(_)"),
     menuentry("Rename",         "mod_query.query_renameworkspace(nil, _)"),
+    menuentry("Attach tagged",  "ioncore.tagged_attach(_)"),
 })
 
+
+-- Context menu for client windows
+defctxmenu("WClientWin", "Client window", {
+    menuentry("Kill",           "WClientWin.kill(_)"),
+})
index cd6fa000ae32a222bd20b1cc55fbf5b525f7db20..974ac088faf4512e794c400ffb58d6355c82375e 100644 (file)
@@ -17,6 +17,13 @@ defwinprop{
     transient_mode = "current",
 }
 
+defwinprop{
+    class = "Xpdf",
+    instance = "openDialog_popup",
+    ignore_cfgrq = true,
+}
+
+
 -- You might want to enable these if you really must use XMMS. 
 --[[
 defwinprop{
index 4299c7613427a6f70fa4a0ddf25c50c70b0a729a..41bda19bd13490766ae203f472ab8e911e346a02 100644 (file)
@@ -2,6 +2,11 @@
 -- Layouts for Ion
 --
 
+--
+-- Helper routines and structures
+--
+
+-- Tiled frame template for the layouts below
 local a_frame = {
     type="WSplitRegion",
     regparams = {
@@ -10,46 +15,61 @@ local a_frame = {
     }
 }
 
+-- Helper function for generating splits for layouts
+local function mksplit(dir, tl, br, float)
+    return {
+        type = (float and "WSplitFloat" or "WSplitSplit"),
+        dir = dir,
+        tls = 1,
+        brs = 1,
+        tl = tl,
+        br = br,
+    }
+end
 
-local horizontally_split = {
-    -- Destroy workspace if the 'bottom' tiling is destroyed last
-    bottom_last_close = true,
-    -- Layout
-    managed = {
-        {
-            type = "WTiling",
-            bottom = true,
-            -- The default is a single 1:1 horizontal split
-            split_tree = {
-                type = "WSplitSplit",
-                dir = "horizontal",
-                tls = 1,
-                brs = 1,
-                tl = a_frame,
-                br = a_frame
+local function mktiling(split_tree)
+    return {
+        managed = {
+            {
+                type = "WTiling",
+                bottom = true, -- Make it the bottom of the group
+                split_tree = split_tree,
             }
-            -- For a single frame
-            --split_tree = nil
         }
     }
-}
+end
+
+--
+-- The layouts
+--
 
+-- Tiling with single 1:1 horizontal split
+local tmp=mktiling(mksplit("horizontal", a_frame, a_frame))
+ioncore.deflayout("hsplit", tmp)
+ioncore.deflayout("default", tmp)
 
-local full_tiled = {
-    -- Destroy workspace if the 'bottom' tiling is destroyed last
-    bottom_last_close = true,
-    -- Layout
-    managed = {
-        {
-            type = "WTiling",
-            bottom = true,
-        }
-    }
-}
+-- Tiling with single 1:1 vertical split
+ioncore.deflayout("vsplit",
+    mktiling(mksplit("vertical", a_frame, a_frame))
+)
+
+-- Tiling with single 1:1 floating horizontal split
+ioncore.deflayout("hfloat", 
+    mktiling(mksplit("horizontal", a_frame, a_frame, true))
+)
 
+-- Tiling with single 1:1 floating vertical split
+ioncore.deflayout("vfloat", 
+    mktiling(mksplit("vertical", a_frame, a_frame, true))
+)
 
--- Let the world know about them
+-- Tiling with horizontal and then vertical splits
+ioncore.deflayout("2x2",
+    mktiling(mksplit("horizontal", 
+                     mksplit("vertical", a_frame, a_frame),
+                     mksplit("vertical", a_frame, a_frame))
+    )
+)
 
-ioncore.deflayout("default", horizontally_split)
-ioncore.deflayout("hsplit", horizontally_split)
-ioncore.deflayout("full", full_tiled)
+-- Tiling with single full screen frame
+ioncore.deflayout("full", mktiling(a_frame))
diff --git a/etc/cfg_modules.lua b/etc/cfg_modules.lua
deleted file mode 100644 (file)
index 7128f15..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---
--- Ion default module set.
---
-
-dopath("mod_query")
-dopath("mod_menu")
-dopath("mod_tiling")
-dopath("mod_statusbar")
---dopath("mod_dock")
-dopath("mod_sp")
-
--- Load some layouts
-dopath("cfg_layouts")
index 84f7da631271437602c3629f7d29c949108b2e16..6abc8a52328c5fa355de8ba496a82f925867568b 100644 (file)
@@ -110,8 +110,12 @@ defbindings("WInput", {
 mod_query.set{
      -- Auto-show completions?    
      autoshowcompl=true,
+     
      -- Delay for completion after latest keypress/modification in 
      -- milliseconds
      autoshowcompl_delay=250,
+     
+     -- Case-insensitive completion? (Some queries only.)
+     caseicompl=true,
 }
 --]]
index b07178e66f66a4b80e868cd31feaf69369e6fcc2..3942f08ba7d854b5376803d3819ed3400b732911 100644 (file)
@@ -48,6 +48,8 @@ defctxmenu("WTiling", "Tiling", {
     menuentry("Flip", "WTiling.flip_at(_, _sub)"),
     menuentry("Transpose", "WTiling.transpose_at(_, _sub)"),
     
+    menuentry("Untile", "mod_tiling.untile(_)"),
+    
     submenu("Float split", {
         menuentry("At left", 
                   "WTiling.set_floating_at(_, _sub, 'toggle', 'left')"),
index 3c11bc8d106b32b4b1625d4b44f370279a097d09..8af15483d915444d8ce95f8a4e61b7df53dc4ce4 100644 (file)
@@ -62,11 +62,5 @@ de.defstyle("input-edln", {
 
 dopath("lookcommon_clean")
 
-de.defstyle("tab-menuentry-big", {
-    based_on = "tab-menuentry",
-    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
-    padding_pixels = 7,
-})
-
 gr.refresh()
 
index 70e8acce664f39572089bcfad8e34fbedce2daaf..d52efacdfb32e1bd0079d76cad8b2c0a85278bb2 100644 (file)
@@ -76,12 +76,5 @@ de.defstyle("input", {
 dopath("lookcommon_clean")
 
 
-de.defstyle("tab-menuentry-big", {
-    based_on = "tab-menuentry",
-    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
-    padding_pixels = 7,
-})
-
-    
 -- Refresh objects' brushes.
 gr.refresh()
diff --git a/etc/look_newviolet.lua b/etc/look_newviolet.lua
new file mode 100644 (file)
index 0000000..76e2d5a
--- /dev/null
@@ -0,0 +1,113 @@
+--
+-- look_newviolet for Ion's default drawing engine. 
+-- Based on look_cleanviolet
+-- 
+
+if not gr.select_engine("de") then
+    return
+end
+
+de.reset()
+
+de.defstyle("*", {
+    highlight_colour = "#e7e7ff",
+    shadow_colour = "#e7e7ff",
+    background_colour = "#b8b8c8",
+    foreground_colour = "#000000",
+    
+    shadow_pixels = 1,
+    highlight_pixels = 2,
+    padding_pixels = 1,
+    spacing = 1,
+    border_style = "elevated",
+    border_sides = "tb",
+    
+    font = "-*-helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*",
+    text_align = "center",
+})
+
+
+de.defstyle("tab", {
+    based_on = "*",
+    font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
+    
+    de.substyle("active-selected", {
+        highlight_colour = "#aaaacc",
+        shadow_colour = "#aaaacc",
+        background_colour = "#666699",
+        foreground_colour = "#eeeeee",
+    }),
+
+    de.substyle("inactive-selected", {
+        highlight_colour = "#cfcfdf",
+        shadow_colour = "#cfcfdf",
+        background_colour = "#9999bb",
+        foreground_colour = "#000000",
+    }),
+})
+
+
+de.defstyle("input", {
+    based_on = "*",
+    text_align = "left",
+    highlight_colour = "#eeeeff",
+    shadow_colour = "#eeeeff",
+    
+    de.substyle("*-selection", {
+        background_colour = "#666699",
+        foreground_colour = "#000000",
+    }),
+
+    de.substyle("*-cursor", {
+        background_colour = "#000000",
+        foreground_colour = "#b8b8c8",
+    }),
+})
+
+
+de.defstyle("input-menu", {
+    based_on = "input",
+    highlight_pixels = 0,
+    shadow_pixels = 0,
+    padding_pixels = 0,
+})
+
+
+de.defstyle("frame", {
+    based_on = "*",
+    background_colour = "#000000",
+    transparent_background = false,
+    shadow_pixels = 1,
+    highlight_pixels = 1,
+    padding_pixels = 0,
+    border_sides = "all",
+    de.substyle("quasiactive", {
+        -- Something detached from the frame is active
+        padding_colour = "#901010",
+    }),
+})
+
+de.defstyle("frame-tiled", {
+    based_on = "frame",
+    shadow_pixels = 0,
+    highlight_pixels = 0,
+    padding_pixels = 1,
+})
+
+de.defstyle("frame-tiled-alt", {
+    based_on = "frame-tiled",
+    bar = "none",
+})
+
+de.defstyle("frame-floating", {
+    based_on = "frame",
+    bar = "shaped",
+    padding_pixels = 0,
+})
+
+
+dopath("lookcommon_clean_stdisp")
+dopath("lookcommon_clean_tab")
+    
+-- Refresh objects' brushes.
+gr.refresh()
index 2c378529142fb304543d89ec3240cf06a19f4ec7..1bce224d1a6611ea680fbab65c0e56265b36f678 100644 (file)
@@ -65,27 +65,6 @@ de.defstyle("tab", {
     text_align = "center",
 })
 
-de.defstyle("tab-frame", {
-    based_on = "tab",
-    de.substyle("*-*-*-*-activity", {
-        shadow_colour = "#907070",
-        highlight_colour = "#907070",
-        background_colour = "#990000",
-        foreground_colour = "#eeeeee",
-    }),
-})
-
-de.defstyle("tab-menuentry", {
-    based_on = "tab",
-    text_align = "left",
-})
-
-de.defstyle("tab-menuentry-big", {
-    based_on = "tab-menuentry",
-    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
-    padding_pixels = 7,
-})
-
 de.defstyle("input", {
     based_on = "*",
     shadow_colour = "black",
index de0efa2323e29f2749b660dab4e1b9700d3f19ed..43399d963721913ef0454ef10cf1f861b757aaee 100644 (file)
@@ -1,101 +1,5 @@
--- Settings common to some styles.
+-- Settings common to the "clean" styles.
 
-de.defstyle("stdisp", {
-    based_on = "*",
-    shadow_pixels = 0,
-    highlight_pixels = 0,
-    text_align = "left",
-    background_colour = "#000000",
-    foreground_colour = "grey",
-    font="-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*",
-    
-    de.substyle("important", {
-        foreground_colour = "green",
-    }),
-
-    de.substyle("critical", {
-        foreground_colour = "red",
-    }),
-})
-
-de.defstyle("actnotify", {
-    based_on = "*",
-    shadow_colour = "#c04040",
-    highlight_colour = "#c04040",
-    background_colour = "#901010",
-    foreground_colour = "#eeeeee",
-})
-
-de.defstyle("tab-frame", {
-    based_on = "tab",
-    -- TODO: some kind of amend option. It should not be necessary to 
-    -- duplicate this definition for both tab-frame and tab-menuentry,
-    -- or for each style, nor use more complex hacks to communicate
-    -- this stuff otherwise.
-    de.substyle("*-*-*-unselected-activity", {
-        shadow_colour = "#c04040",
-        highlight_colour = "#c04040",
-        background_colour = "#901010",
-        foreground_colour = "#eeeeee",
-    }),
-    
-    de.substyle("*-*-*-selected-activity", {
-        shadow_colour = "#c04040",
-        highlight_colour = "#c04040",
-        background_colour = "#b03030",
-        foreground_colour = "#ffffff",
-    }),
-})
-
-de.defstyle("tab-frame-tiled", {
-    based_on = "tab-frame",
-    spacing = 1,
-})
-
-de.defstyle("tab-menuentry", {
-    based_on = "tab",
-    text_align = "left",
-    
-    de.substyle("*-*-*-unselected-activity", {
-        shadow_colour = "#c04040",
-        highlight_colour = "#c04040",
-        background_colour = "#901010",
-        foreground_colour = "#eeeeee",
-    }),
-    
-    de.substyle("*-*-*-selected-activity", {
-        shadow_colour = "#c04040",
-        highlight_colour = "#c04040",
-        background_colour = "#b03030",
-        foreground_colour = "#ffffff",
-    }),
-})
-
-de.defstyle("frame", {
-    based_on = "*",
-    background_colour = "#000000",
-    transparent_background = false,
-    de.substyle("quasiactive", {
-        -- Something detached from the frame is active
-        padding_colour = "#901010",
-    }),
-})
-
-de.defstyle("frame-tiled", {
-    based_on = "frame",
-    shadow_pixels = 0,
-    highlight_pixels = 0,
-    padding_pixels = 1,
-    spacing = 1,
-})
-
-de.defstyle("frame-tiled-alt", {
-    based_on = "frame-tiled",
-    bar = "none",
-})
-
-de.defstyle("frame-floating", {
-    based_on = "frame",
-    bar = "shaped",
-    padding_pixels = 0,
-})
+dopath("lookcommon_clean_stdisp")
+dopath("lookcommon_clean_tab")
+dopath("lookcommon_clean_frame")
diff --git a/etc/lookcommon_clean_frame.lua b/etc/lookcommon_clean_frame.lua
new file mode 100644 (file)
index 0000000..b118558
--- /dev/null
@@ -0,0 +1,30 @@
+-- Common frame settings for the "clean" styles
+
+de.defstyle("frame", {
+    based_on = "*",
+    background_colour = "#000000",
+    transparent_background = false,
+    de.substyle("quasiactive", {
+        -- Something detached from the frame is active
+        padding_colour = "#901010",
+    }),
+})
+
+de.defstyle("frame-tiled", {
+    based_on = "frame",
+    shadow_pixels = 0,
+    highlight_pixels = 0,
+    padding_pixels = 1,
+    spacing = 1,
+})
+
+de.defstyle("frame-tiled-alt", {
+    based_on = "frame-tiled",
+    bar = "none",
+})
+
+de.defstyle("frame-floating", {
+    based_on = "frame",
+    bar = "shaped",
+    padding_pixels = 0,
+})
diff --git a/etc/lookcommon_clean_stdisp.lua b/etc/lookcommon_clean_stdisp.lua
new file mode 100644 (file)
index 0000000..73abd0d
--- /dev/null
@@ -0,0 +1,19 @@
+-- Common stdisp configuration for the "clean styles"
+
+de.defstyle("stdisp", {
+    based_on = "*",
+    shadow_pixels = 0,
+    highlight_pixels = 0,
+    text_align = "left",
+    background_colour = "#000000",
+    foreground_colour = "grey",
+    font="-misc-fixed-medium-r-*-*-13-*-*-*-*-60-*-*",
+    
+    de.substyle("important", {
+        foreground_colour = "green",
+    }),
+
+    de.substyle("critical", {
+        foreground_colour = "red",
+    }),
+})
diff --git a/etc/lookcommon_clean_tab.lua b/etc/lookcommon_clean_tab.lua
new file mode 100644 (file)
index 0000000..e6a619d
--- /dev/null
@@ -0,0 +1,60 @@
+-- Common tab configuration (mostly activity stuff) for the "clean styles"
+
+de.defstyle("actnotify", {
+    based_on = "*",
+    shadow_colour = "#c04040",
+    highlight_colour = "#c04040",
+    background_colour = "#901010",
+    foreground_colour = "#eeeeee",
+})
+
+de.defstyle("tab-frame", {
+    based_on = "tab",
+    -- TODO: some kind of amend option. It should not be necessary to 
+    -- duplicate this definition for both tab-frame and tab-menuentry,
+    -- or for each style, nor use more complex hacks to communicate
+    -- this stuff otherwise.
+    de.substyle("*-*-*-unselected-activity", {
+        shadow_colour = "#c04040",
+        highlight_colour = "#c04040",
+        background_colour = "#901010",
+        foreground_colour = "#eeeeee",
+    }),
+    
+    de.substyle("*-*-*-selected-activity", {
+        shadow_colour = "#c04040",
+        highlight_colour = "#c04040",
+        background_colour = "#b03030",
+        foreground_colour = "#ffffff",
+    }),
+})
+
+de.defstyle("tab-frame-tiled", {
+    based_on = "tab-frame",
+    spacing = 1,
+})
+
+de.defstyle("tab-menuentry", {
+    based_on = "tab",
+    text_align = "left",
+    
+    de.substyle("*-*-*-unselected-activity", {
+        shadow_colour = "#c04040",
+        highlight_colour = "#c04040",
+        background_colour = "#901010",
+        foreground_colour = "#eeeeee",
+    }),
+    
+    de.substyle("*-*-*-selected-activity", {
+        shadow_colour = "#c04040",
+        highlight_colour = "#c04040",
+        background_colour = "#b03030",
+        foreground_colour = "#ffffff",
+    }),
+})
+
+de.defstyle("tab-menuentry-big", {
+    based_on = "tab-menuentry",
+    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
+    padding_pixels = 7,
+})
index 1d771c13dae7f15e8e4df08ddb7f261728fc9b74..b32289a05847ad1f595199800ca15e6acf0b8e1f 100644 (file)
@@ -1,95 +1,5 @@
--- Settings common to some styles.
+-- Settings common to "emboss" styles.
 
-de.defstyle("stdisp", {
-    based_on = "*",
-    shadow_pixels = 0,
-    highlight_pixels = 0,
-    text_align = "left",
-
-    de.substyle("important", {
-        foreground_colour = "green",
-    }),
-
-    de.substyle("critical", {
-        foreground_colour = "red",
-    }),
-})
-
-de.defstyle("actnotify", {
-    based_on = "*",
-    shadow_colour = "#600808",
-    highlight_colour = "#c04040",
-    background_colour = "#b03030",
-    foreground_colour = "#ffffff",
-})
-
-de.defstyle("tab-frame", {
-    based_on = "tab",
-    -- TODO: some kind of amend option. It should not be necessary to 
-    -- duplicate this definition for both tab-frame and tab-menuentry,
-    -- or for each style, nor use more complex hacks to communicate
-    -- this stuff otherwise.
-    de.substyle("*-*-*-unselected-activity", {
-        shadow_colour = "#600808",
-        highlight_colour = "#c04040",
-        background_colour = "#901010",
-        foreground_colour = "#eeeeee",
-    }),
-    
-    de.substyle("*-*-*-selected-activity", {
-        shadow_colour = "#600808",
-        highlight_colour = "#c04040",
-        background_colour = "#b03030",
-        foreground_colour = "#ffffff",
-    }),
-})
-
-de.defstyle("tab-frame-tiled", {
-    based_on = "tab-frame",
-    spacing = 1,
-})
-
-de.defstyle("frame-tiled", {
-    based_on = "frame",
-    border_style = "inlaid",
-    padding_pixels = 1,
-    spacing = 1,
-})
-
-de.defstyle("frame-floating", {
-    based_on = "frame",
-    border_style = "ridge",
-    bar = "shaped"
-})
-
-de.defstyle("frame-tiled-alt", {
-    based_on = "frame-tiled",
-    bar = "none",
-})
-
-de.defstyle("tab-menuentry", {
-    based_on = "tab",
-    text_align = "left",
-    highlight_pixels = 0,
-    shadow_pixels = 0,
-    
-    de.substyle("*-*-*-unselected-activity", {
-        shadow_colour = "#600808",
-        highlight_colour = "#c04040",
-        background_colour = "#901010",
-        foreground_colour = "#eeeeee",
-    }),
-    
-    de.substyle("*-*-*-selected-activity", {
-        shadow_colour = "#600808",
-        highlight_colour = "#c04040",
-        background_colour = "#b03030",
-        foreground_colour = "#ffffff",
-    }),
-})
-
-de.defstyle("tab-menuentry-big", {
-    based_on = "tab-menuentry",
-    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
-    padding_pixels = 7,
-})
+dopath("lookcommon_emboss_stdisp")
+dopath("lookcommon_emboss_tab")
+dopath("lookcommon_emboss_frame")
diff --git a/etc/lookcommon_emboss_frame.lua b/etc/lookcommon_emboss_frame.lua
new file mode 100644 (file)
index 0000000..41e1e95
--- /dev/null
@@ -0,0 +1,17 @@
+de.defstyle("frame-tiled", {
+    based_on = "frame",
+    border_style = "inlaid",
+    padding_pixels = 1,
+    spacing = 1,
+})
+
+de.defstyle("frame-floating", {
+    based_on = "frame",
+    border_style = "ridge",
+    bar = "shaped"
+})
+
+de.defstyle("frame-tiled-alt", {
+    based_on = "frame-tiled",
+    bar = "none",
+})
diff --git a/etc/lookcommon_emboss_stdisp.lua b/etc/lookcommon_emboss_stdisp.lua
new file mode 100644 (file)
index 0000000..b6a0ed2
--- /dev/null
@@ -0,0 +1,16 @@
+-- Common stdisp settings for the "emboss" styles
+
+de.defstyle("stdisp", {
+    based_on = "*",
+    shadow_pixels = 0,
+    highlight_pixels = 0,
+    text_align = "left",
+
+    de.substyle("important", {
+        foreground_colour = "green",
+    }),
+
+    de.substyle("critical", {
+        foreground_colour = "red",
+    }),
+})
diff --git a/etc/lookcommon_emboss_tab.lua b/etc/lookcommon_emboss_tab.lua
new file mode 100644 (file)
index 0000000..614ba82
--- /dev/null
@@ -0,0 +1,62 @@
+-- Common tab settings for the "emboss" styles
+
+de.defstyle("actnotify", {
+    based_on = "*",
+    shadow_colour = "#600808",
+    highlight_colour = "#c04040",
+    background_colour = "#b03030",
+    foreground_colour = "#ffffff",
+})
+
+de.defstyle("tab-frame", {
+    based_on = "tab",
+    -- TODO: some kind of amend option. It should not be necessary to 
+    -- duplicate this definition for both tab-frame and tab-menuentry,
+    -- or for each style, nor use more complex hacks to communicate
+    -- this stuff otherwise.
+    de.substyle("*-*-*-unselected-activity", {
+        shadow_colour = "#600808",
+        highlight_colour = "#c04040",
+        background_colour = "#901010",
+        foreground_colour = "#eeeeee",
+    }),
+    
+    de.substyle("*-*-*-selected-activity", {
+        shadow_colour = "#600808",
+        highlight_colour = "#c04040",
+        background_colour = "#b03030",
+        foreground_colour = "#ffffff",
+    }),
+})
+
+de.defstyle("tab-frame-tiled", {
+    based_on = "tab-frame",
+    spacing = 1,
+})
+
+de.defstyle("tab-menuentry", {
+    based_on = "tab",
+    text_align = "left",
+    highlight_pixels = 0,
+    shadow_pixels = 0,
+    
+    de.substyle("*-*-*-unselected-activity", {
+        shadow_colour = "#600808",
+        highlight_colour = "#c04040",
+        background_colour = "#901010",
+        foreground_colour = "#eeeeee",
+    }),
+    
+    de.substyle("*-*-*-selected-activity", {
+        shadow_colour = "#600808",
+        highlight_colour = "#c04040",
+        background_colour = "#b03030",
+        foreground_colour = "#ffffff",
+    }),
+})
+
+de.defstyle("tab-menuentry-big", {
+    based_on = "tab-menuentry",
+    font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
+    padding_pixels = 7,
+})
index 43c91871cce000ab413f494469b112bfcd1dd487..05c81ed341171efa18fe4affe733dc9fec03afd6 100644 (file)
@@ -1,5 +1,5 @@
 
 Context:
 
-[TAG ion-3ds-20070203
-Tuomo Valkonen <tuomov@iki.fi>**20070203145039
+[TAG ion-3ds-20070318
+Tuomo Valkonen <tuomov@iki.fi>**20070318203122
index 1c7fcf97dcda3faca0591fb6794cea169907453c..7c53d312895a5451790de005ca2f305f362c9f0b 100644 (file)
--- a/ion/ion.c
+++ b/ion/ion.c
@@ -129,7 +129,7 @@ void check_new_user_help()
 static void help()
 {
     int i;
-    printf(TR("Usage: %s [options]\n\n"), prog_execname());
+    printf(TR("Usage: %s [options]\n\n"), libtu_progname());
     for(i=0; ion_opts[i].descr!=NULL; i++)
         ion_opts[i].descr=TR(ion_opts[i].descr);
     optparser_printhelp(OPTP_MIDLONG, ion_opts);
@@ -240,7 +240,7 @@ fail:
             fclose(ef);
             pid=fork();
             if(pid==0){
-                ioncore_setup_environ(DefaultScreen(ioncore_g.dpy));
+                ioncore_setup_display(DefaultScreen(ioncore_g.dpy));
                 if(!may_continue)
                     XCloseDisplay(ioncore_g.dpy);
                 else
index c98fc614e06dd833bbd5bd7c967d0b41ff392e79..ae41fa50c6f0e3d89ac8e1f20e11d65d7fcabfbd 100644 (file)
@@ -24,7 +24,7 @@ SOURCES=binding.c conf-bindings.c cursor.c event.c exec.c focus.c         \
         pholder.c mplexpholder.c llist.c basicpholder.c sizepolicy.c      \
         stacking.c group.c grouppholder.c group-cw.c navi.c              \
         group-ws.c float-placement.c groupedpholder.c framedpholder.c    \
-        return.c detach.c
+        return.c detach.c screen-notify.c
 
 LUA_SOURCES=\
        ioncore_ext.lua ioncore_luaext.lua ioncore_bindings.lua \
index 668d10a95f6bf824a2e579174a5dfbbbbb1435f4..60c051973adb125a0e1ce50db0035ba0ebcfbb19 100644 (file)
@@ -149,6 +149,12 @@ WRegion *ioncore_activity_first()
 }
 
 
+ObjList *ioncore_activity_list()
+{
+    return actlist;
+}
+
+
 /*EXTL_DOC
  * Go to first region on activity list.
  */
index 5971a6c10f000e1cc8e7dc42f21342340325af53..a718f7c1ac5e0483049df9670c35d98cb2e079e5 100644 (file)
@@ -27,5 +27,6 @@ extern void region_clear_mgd_activity(WRegion *mgr);
 extern bool ioncore_activity_i(ExtlFn fn);
 extern WRegion *ioncore_activity_first();
 extern bool ioncore_goto_activity();
+extern ObjList *ioncore_activity_list();
 
 #endif /* ION_IONCORE_ACTIVITY_H */
index 4eeb64e65dc184cc6303c5a7127e1b4a0ff0a05b..a1dc7addf23200034454ea5281bcffaccefb91d8 100644 (file)
@@ -21,6 +21,7 @@
 #include "manage.h"
 #include "extlconv.h"
 #include "names.h"
+#include "focus.h"
 
 
 /*{{{ Helper */
@@ -51,9 +52,20 @@ static WRegion *doit_reparent(WRegion *mgr,
                               WRegion *reg)
 {
     WFitParams fp2;
-
-    if(!region_attach_reparent_check(mgr, reg))
+    WRegion *disposeroot;
+    
+    if(!region_ancestor_check(mgr, reg)){
+        warn(TR("Attempt to make region %s manage its ancestor %s."),
+             region_name(mgr), region_name(reg));
         return NULL;
+    }
+    
+    disposeroot=region_disposeroot(reg);
+    
+    if(disposeroot==NULL){
+        /* Region may not be reparented */
+        return NULL;
+    }
     
     if(fp->mode&REGION_FIT_WHATEVER){
         /* fp->g is not final; substitute size with current to avoid
@@ -75,10 +87,34 @@ static WRegion *doit_reparent(WRegion *mgr,
     region_detach_manager(reg);
     
     if(!cont(mgr, reg, cont_param)){
-        #warning "TODO: What?"
+        WScreen *scr=region_screen_of(reg);
+        
+        warn(TR("Unexpected attach error: "
+                "trying to recover by attaching to screen."));
+        
+        if(scr!=NULL){
+            /* Try to attach to screen, to have `reg` attached at least
+             * somewhere. For better recovery, we could try to get
+             * a placeholder for `reg` before we detach it, but this
+             * would add unnecessary overhead in the usual succesfull
+             * case. (This failure is supposed to be _very_ rare!)
+             * We intentionally also do not region_postdetach_dispose 
+             * on recovery.
+             */
+            int flags=(region_may_control_focus(reg) 
+                       ? MPLEX_ATTACH_SWITCHTO 
+                       : 0);
+            if(mplex_attach_simple(&scr->mplex, reg, flags)!=NULL)
+                return NULL;
+        }
+        
+        warn(TR("Failed recovery."));
+        
         return NULL;
     }
-       
+    
+    region_postdetach_dispose(reg, disposeroot);
+    
     return reg;
 }
 
@@ -138,35 +174,35 @@ WRegion *region_attach_helper(WRegion *mgr,
 /*}}}*/
 
 
-/*{{{ Reparent check */
+/*{{{ Reparent check etc. */
 
 
-bool region_attach_reparent_check(WRegion *mgr, WRegion *reg)
+bool region_ancestor_check(WRegion *dst, WRegion *reg)
 {
     WRegion *reg2;
     
-    /*if(REGION_MANAGER(reg)==mgr){
-        warn(TR("Same manager."));
-        return FALSE;
-    }*/
-    
     /* Check that reg is not a parent or manager of mgr */
-    for(reg2=mgr; reg2!=NULL; reg2=REGION_MANAGER(reg2)){
+    for(reg2=dst; reg2!=NULL; reg2=REGION_MANAGER(reg2)){
         if(reg2==reg)
-            goto err;
+            return FALSE;
     }
     
-    for(reg2=REGION_PARENT_REG(mgr); reg2!=NULL; reg2=REGION_PARENT_REG(reg2)){
+    for(reg2=REGION_PARENT_REG(dst); reg2!=NULL; reg2=REGION_PARENT_REG(reg2)){
         if(reg2==reg)
-            goto err;
+            return FALSE;
     }
 
     return TRUE;
-    
-err:
-    warn(TR("Attempt to make region %s manage its ancestor %s."),
-         region_name(mgr), region_name(reg));
-    return FALSE;
+}
+
+
+void region_postdetach_dispose(WRegion *reg, WRegion *disposeroot)
+{
+    /* disposeroot should be destroyed (as empty and useless) unless it 
+     * still, in fact, is an ancestor of reg.
+     */
+    if(disposeroot!=reg && region_ancestor_check(reg, disposeroot))
+        region_dispose(disposeroot);
 }
 
 
index 8fb94d8712d1f380183cd9d780a4c2628d53fd70..c4a2d964d6ce0c3d8e72f04d99c69619817b5607 100644 (file)
@@ -54,7 +54,9 @@ extern WRegion *region_attach_helper(WRegion *mgr,
                                      WRegionDoAttachFn *fn, void *fn_param,
                                      const WRegionAttachData *data);
 
-extern bool region_attach_reparent_check(WRegion *mgr, WRegion *reg);
+extern bool region_ancestor_check(WRegion *dst, WRegion *reg);
+
+extern void region_postdetach_dispose(WRegion *reg, WRegion *disposeroot);
 
 
 #endif /* ION_IONCORE_ATTACH_H */
index 9c6bd4689b0483cd7de598508b9049a899c0c616..c3be60f243dad4cea9db7db61b1ed51240373077 100644 (file)
  */
 
 #include <libtu/rb.h>
+#include <libextl/extl.h>
 #include "common.h"
 #include "conf-bindings.h"
 #include "binding.h"
-#include <libextl/extl.h>
 #include "framep.h"
 #include "bindmaps.h"
+#include "global.h"
+#include "regbind.h"
 
 
 /* 
@@ -198,3 +200,53 @@ ExtlTab ioncore_do_getbindings()
     return tab;
 }
 
+
+WBindmap *ioncore_create_cycle_bindmap(uint kcb, uint state, 
+                                       ExtlFn cycle, ExtlFn bcycle)
+{
+    WBindmap *bindmap=create_bindmap();
+    WBinding b;
+    
+    if(bindmap==NULL)
+        return NULL;
+        
+    b.ksb=XKeycodeToKeysym(ioncore_g.dpy, kcb, 0);
+    b.kcb=kcb;
+    b.state=state;
+    b.act=BINDING_KEYPRESS;
+    b.area=0;
+    b.wait=FALSE;
+    b.submap=NULL;
+    b.func=extl_ref_fn(cycle);
+    
+    if(!bindmap_add_binding(bindmap, &b)){
+        extl_unref_fn(b.func);
+        bindmap_destroy(bindmap);
+        return NULL;
+    }
+    
+    if((b.state&ShiftMask)==0 && bcycle!=extl_fn_none()){
+        b.func=extl_ref_fn(bcycle);
+        b.state|=ShiftMask;
+        bindmap_add_binding(bindmap, &b);
+    }
+    
+    return bindmap;
+}
+
+
+WBindmap *region_add_cycle_bindmap(WRegion *reg, uint kcb, uint state, 
+                                   ExtlFn cycle, ExtlFn bcycle)
+{
+    WBindmap *bindmap=ioncore_create_cycle_bindmap(kcb, state, cycle, bcycle);
+    
+    if(bindmap!=NULL){
+        if(!region_add_bindmap(reg, bindmap)){
+            bindmap_destroy(bindmap);
+            return NULL;
+        }
+    }
+    
+    return bindmap;
+}
+
index 441aabbf02764c6668cbf072ec9e8d000465c8ed..f9e05791793e354c302de44c790dae2f2ab6e62a 100644 (file)
@@ -42,5 +42,11 @@ extern WBindmap *ioncore_lookup_bindmap(const char *name);
 extern bool ioncore_do_defbindings(const char *name, ExtlTab tab);
 extern ExtlTab ioncore_do_getbindings();
 
+extern WBindmap *ioncore_create_cycle_bindmap(uint kcb, uint state, 
+                                              ExtlFn cycle, ExtlFn bcycle);
+extern WBindmap *region_add_cycle_bindmap(WRegion *reg, 
+                                          uint kcb, uint state, 
+                                          ExtlFn cycle, ExtlFn bcycle);
+
 #endif /* ION_IONCORE_BINDMAP_H */
 
index d80c37b8c73c86395d7879f6d06212f73f47eb2a..4a5b4dacfd40ae08492058395d0d826df1b6c6dc 100644 (file)
@@ -43,6 +43,7 @@
 #include "bindmaps.h"
 #include "return.h"
 #include "conf.h"
+#include "group.h"
 
 
 static void set_clientwin_state(WClientWin *cwin, int state);
@@ -94,10 +95,30 @@ static WSizePolicy get_sizepolicy_winprop(WClientWin *cwin,
 }
 
 
-#define SIZEHINT_PROPS (CLIENTWIN_PROP_MAXSIZE| \
-                        CLIENTWIN_PROP_MINSIZE| \
-                        CLIENTWIN_PROP_ASPECT| \
-                        CLIENTWIN_PROP_IGNORE_RSZINC)
+#define SIZEHINT_PROPS (CLIENTWIN_PROP_MAXSIZE|   \
+                        CLIENTWIN_PROP_MINSIZE|   \
+                        CLIENTWIN_PROP_ASPECT|    \
+                        CLIENTWIN_PROP_RSZINC|    \
+                        CLIENTWIN_PROP_I_MAXSIZE| \
+                        CLIENTWIN_PROP_I_MINSIZE| \
+                        CLIENTWIN_PROP_I_ASPECT|  \
+                        CLIENTWIN_PROP_I_RSZINC)
+
+
+#define DO_SZH(NAME, FLAG, IFLAG, SZHFLAG, W, H, C)  \
+    if(extl_table_is_bool_set(tab, "ignore_" NAME)){ \
+        cwin->flags|=IFLAG;                          \
+    }else if(extl_table_gets_t(tab, NAME, &tab2)){   \
+        if(extl_table_gets_i(tab2, "w", &i1) &&      \
+           extl_table_gets_i(tab2, "h", &i2)){       \
+            cwin->size_hints.W=i1;                   \
+            cwin->size_hints.H=i2;                   \
+            C                                        \
+            cwin->size_hints.flags|=SZHFLAG;         \
+            cwin->flags|=FLAG;                       \
+        }                                            \
+        extl_unref_table(tab2);                      \
+    }
 
 
 static void clientwin_get_winprops(WClientWin *cwin)
@@ -118,44 +139,21 @@ static void clientwin_get_winprops(WClientWin *cwin)
     if(extl_table_is_bool_set(tab, "acrobatic"))
         cwin->flags|=CLIENTWIN_PROP_ACROBATIC;
     
-    if(extl_table_gets_t(tab, "max_size", &tab2)){
-        if(extl_table_gets_i(tab2, "w", &i1) &&
-           extl_table_gets_i(tab2, "h", &i2)){
-            cwin->size_hints.max_width=i1;
-            cwin->size_hints.max_height=i2;
-            cwin->size_hints.flags|=PMaxSize;
-            cwin->flags|=CLIENTWIN_PROP_MAXSIZE;
-        }
-        extl_unref_table(tab2);
-    }
-
-    if(extl_table_gets_t(tab, "min_size", &tab2)){
-        if(extl_table_gets_i(tab2, "w", &i1) &&
-           extl_table_gets_i(tab2, "h", &i2)){
-            cwin->size_hints.min_width=i1;
-            cwin->size_hints.min_height=i2;
-            cwin->size_hints.flags|=PMinSize;
-            cwin->flags|=CLIENTWIN_PROP_MINSIZE;
-        }
-        extl_unref_table(tab2);
-    }
-
-    if(extl_table_gets_t(tab, "aspect", &tab2)){
-        if(extl_table_gets_i(tab2, "w", &i1) &&
-           extl_table_gets_i(tab2, "h", &i2)){
-            cwin->size_hints.min_aspect.x=i1;
-            cwin->size_hints.max_aspect.x=i1;
-            cwin->size_hints.min_aspect.y=i2;
-            cwin->size_hints.max_aspect.y=i2;
-            cwin->size_hints.flags|=PAspect;
-            cwin->flags|=CLIENTWIN_PROP_ASPECT;
-        }
-        extl_unref_table(tab2);
-    }
-    
-    if(extl_table_is_bool_set(tab, "ignore_resizeinc"))
-        cwin->flags|=CLIENTWIN_PROP_IGNORE_RSZINC;
-
+    DO_SZH("max_size", CLIENTWIN_PROP_MAXSIZE, CLIENTWIN_PROP_I_MAXSIZE,
+           PMaxSize, max_width, max_height, );
+           
+    DO_SZH("min_size", CLIENTWIN_PROP_MINSIZE, CLIENTWIN_PROP_I_MINSIZE,
+           PMinSize, min_width, min_height, );
+           
+    DO_SZH("resizeinc", CLIENTWIN_PROP_RSZINC, CLIENTWIN_PROP_I_RSZINC,
+           PResizeInc, width_inc, height_inc, );
+
+    DO_SZH("aspect", CLIENTWIN_PROP_ASPECT, CLIENTWIN_PROP_I_ASPECT,
+           PAspect, min_aspect.x, min_aspect.y, 
+           { cwin->size_hints.max_aspect.x=i1;
+             cwin->size_hints.max_aspect.y=i2;
+           });
+           
     if(extl_table_is_bool_set(tab, "ignore_cfgrq"))
         cwin->flags|=CLIENTWIN_PROP_IGNORE_CFGRQ;
 
@@ -175,26 +173,37 @@ void clientwin_get_size_hints(WClientWin *cwin)
     
     xwindow_get_sizehints(cwin->win, &(cwin->size_hints));
     
-    if(cwin->flags&CLIENTWIN_PROP_MAXSIZE){
+    if(cwin->flags&CLIENTWIN_PROP_I_MAXSIZE){
+        cwin->size_hints.flags&=~PMaxSize;
+    }else if(cwin->flags&CLIENTWIN_PROP_MAXSIZE){
         cwin->size_hints.max_width=tmp.max_width;
         cwin->size_hints.max_height=tmp.max_height;
         cwin->size_hints.flags|=PMaxSize;
     }
-
-    if(cwin->flags&CLIENTWIN_PROP_MINSIZE){
+    
+    if(cwin->flags&CLIENTWIN_PROP_I_MINSIZE){
+        cwin->size_hints.flags&=~PMinSize;
+    }else if(cwin->flags&CLIENTWIN_PROP_MINSIZE){
         cwin->size_hints.min_width=tmp.min_width;
         cwin->size_hints.min_height=tmp.min_height;
         cwin->size_hints.flags|=PMinSize;
     }
     
-    if(cwin->flags&CLIENTWIN_PROP_ASPECT){
+    if(cwin->flags&CLIENTWIN_PROP_I_ASPECT){
+        cwin->size_hints.flags&=~PAspect;
+    }else if(cwin->flags&CLIENTWIN_PROP_ASPECT){
         cwin->size_hints.min_aspect=tmp.min_aspect;
         cwin->size_hints.max_aspect=tmp.max_aspect;
         cwin->size_hints.flags|=PAspect;
     }
     
-    if(cwin->flags&CLIENTWIN_PROP_IGNORE_RSZINC)
+    if(cwin->flags&CLIENTWIN_PROP_I_RSZINC){
         cwin->size_hints.flags&=~PResizeInc;
+    }else if(cwin->flags&CLIENTWIN_PROP_RSZINC){
+        cwin->size_hints.width_inc=tmp.width_inc;
+        cwin->size_hints.height_inc=tmp.height_inc;
+        cwin->size_hints.flags|=PResizeInc;
+    }
 }
 
 
@@ -520,7 +529,6 @@ again:
 
     param.geom=REGION_GEOM(cwin);
     param.maprq=maprq;
-    param.userpos=(cwin->size_hints.flags&USPosition);
     param.switchto=(init_state!=IconicState && clientwin_get_switchto(cwin));
     param.jumpto=extl_table_is_bool_set(cwin->proptab, "jumpto");
     param.gravity=(cwin->size_hints.flags&PWinGravity
@@ -528,6 +536,9 @@ again:
                    : ForgetGravity);
     param.tfor=clientwin_get_transient_for(cwin);
     
+    if(!extl_table_gets_b(cwin->proptab, "userpos", &param.userpos))
+        param.userpos=(cwin->size_hints.flags&USPosition);
+    
     if(cwin->flags&SIZEHINT_PROPS){
         /* If size hints have been messed with, readjust requested geometry
          * here. If programs themselves give incompatible geometries and
@@ -691,7 +702,13 @@ static bool mrsh_u_extl(ExtlFn fn, void *param)
 
 static void clientwin_do_unmapped(WClientWin *cwin, Window win)
 {
-    region_dispose_((WRegion*)cwin);
+    cwin->flags|=CLIENTWIN_UNMAP_RQ;
+    
+    /* First try a graceful chain-dispose */
+    if(!region_rqdispose((WRegion*)cwin)){
+        /* But force dispose anyway */
+        region_dispose((WRegion*)cwin);
+    }
     
     hook_call(clientwin_unmapped_hook, &win, mrsh_u_c, mrsh_u_extl);
 }
@@ -747,7 +764,7 @@ void clientwin_kill(WClientWin *cwin)
 }
 
 
-bool clientwin_rqclose(WClientWin *cwin, bool relocate_ignored)
+void clientwin_rqclose(WClientWin *cwin, bool relocate_ignored)
 {
     /* Ignore relocate parameter -- client windows can always be 
      * destroyed by the application in any case, so way may just as
@@ -757,10 +774,8 @@ bool clientwin_rqclose(WClientWin *cwin, bool relocate_ignored)
     if(cwin->flags&CLIENTWIN_P_WM_DELETE){
         send_clientmsg(cwin->win, ioncore_g.atom_wm_delete, 
                        ioncore_get_timestamp());
-        return TRUE;
     }else{
         warn(TR("Client does not support the WM_DELETE protocol."));
-        return FALSE;
     }
 }
 
@@ -1056,26 +1071,31 @@ ExtlTab clientwin_get_ident(WClientWin *cwin)
 /*{{{ ConfigureRequest */
 
 
-void clientwin_handle_configure_request(WClientWin *cwin,
-                                        XConfigureRequestEvent *ev)
+static bool check_fs_cfgrq(WClientWin *cwin, XConfigureRequestEvent *ev)
 {
-    if(ev->value_mask&CWBorderWidth)
-        cwin->orig_bw=ev->border_width;
-    
-    if(cwin->flags&CLIENTWIN_PROP_IGNORE_CFGRQ){
-        sendconfig_clientwin(cwin);
-        return;
-    }
-
     /* check full screen request */
     if((ev->value_mask&(CWWidth|CWHeight))==(CWWidth|CWHeight)){
-        bool sw=clientwin_fullscreen_may_switchto(cwin);
-        if(clientwin_check_fullscreen_request(cwin, ev->width, ev->height, sw))
-            return;
+        WRegion *grp=region_groupleader_of((WRegion*)cwin);
+        WScreen *scr=clientwin_fullscreen_chkrq(cwin, ev->width, ev->height);
+        
+        if(scr!=NULL && REGION_MANAGER(grp)!=(WRegion*)scr){
+            bool sw=clientwin_fullscreen_may_switchto(cwin);
+            
+            cwin->flags|=CLIENTWIN_FS_RQ;
+            
+            if(!region_fullscreen_scr(grp, scr, sw))
+                cwin->flags&=~CLIENTWIN_FS_RQ;
+        }
+        
+        return TRUE;
     }
 
-    cwin->flags|=CLIENTWIN_NEED_CFGNTFY;
+    return FALSE;
+}
 
+
+static bool check_normal_cfgrq(WClientWin *cwin, XConfigureRequestEvent *ev)
+{
     if(ev->value_mask&(CWX|CWY|CWWidth|CWHeight)){
         WRQGeomParams rq=RQGEOMPARAMS_INIT;
         int gdx=0, gdy=0;
@@ -1130,6 +1150,25 @@ void clientwin_handle_configure_request(WClientWin *cwin,
         }
         
         region_rqgeom((WRegion*)cwin, &rq, NULL);
+        
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
+
+void clientwin_handle_configure_request(WClientWin *cwin,
+                                        XConfigureRequestEvent *ev)
+{
+    if(ev->value_mask&CWBorderWidth)
+        cwin->orig_bw=ev->border_width;
+    
+    cwin->flags|=CLIENTWIN_NEED_CFGNTFY;
+
+    if(!(cwin->flags&CLIENTWIN_PROP_IGNORE_CFGRQ)){
+        if(!check_fs_cfgrq(cwin, ev))
+            check_normal_cfgrq(cwin, ev);
     }
 
     if(cwin->flags&CLIENTWIN_NEED_CFGNTFY){
index f78e8261b6055b982df07c6e623c153c7e7ca56d..855bc9e2b3023a2fa1e4510236688048251cd6af 100644 (file)
 #define CLIENTWIN_P_WM_DELETE        0x00001
 #define CLIENTWIN_P_WM_TAKE_FOCUS    0x00002
 #define CLIENTWIN_PROP_ACROBATIC     0x00010
-#define CLIENTWIN_PROP_MAXSIZE       0x00020
-#define CLIENTWIN_PROP_ASPECT        0x00040
-#define CLIENTWIN_PROP_TRANSPARENT   0x00080
-#define CLIENTWIN_PROP_IGNORE_RSZINC 0x00100
-#define CLIENTWIN_PROP_MINSIZE       0x00200
-#define CLIENTWIN_PROP_IGNORE_CFGRQ  0x00400
-#define CLIENTWIN_NEED_CFGNTFY       0x01000
+#define CLIENTWIN_PROP_TRANSPARENT   0x00020
+#define CLIENTWIN_PROP_IGNORE_CFGRQ  0x00040
+#define CLIENTWIN_PROP_MINSIZE       0x00100
+#define CLIENTWIN_PROP_MAXSIZE       0x00200
+#define CLIENTWIN_PROP_ASPECT        0x00400
+#define CLIENTWIN_PROP_RSZINC        0x00800
+#define CLIENTWIN_PROP_I_MINSIZE     0x01000
+#define CLIENTWIN_PROP_I_MAXSIZE     0x02000
+#define CLIENTWIN_PROP_I_ASPECT      0x04000
+#define CLIENTWIN_PROP_I_RSZINC      0x08000
 #define CLIENTWIN_USE_NET_WM_NAME    0x10000
 #define CLIENTWIN_FS_RQ              0x20000
+#define CLIENTWIN_UNMAP_RQ           0x40000
+#define CLIENTWIN_NEED_CFGNTFY       0x80000
 
 
 DECLCLASS(WClientWin){
@@ -67,7 +72,7 @@ extern void clientwin_get_size_hints(WClientWin *cwin);
 extern void clientwin_unmapped(WClientWin *cwin);
 extern void clientwin_destroyed(WClientWin *cwin);
 extern void clientwin_kill(WClientWin *cwin);
-extern bool clientwin_rqclose(WClientWin *cwin, bool relocate_ignored);
+extern void clientwin_rqclose(WClientWin *cwin, bool relocate_ignored);
 
 extern void clientwin_tfor_changed(WClientWin *cwin);
 
index 62c91f117679ace71fd879314ecc7816058a7f36..b8545e2bf283bd77460aba5d6817b357eb049128 100644 (file)
@@ -76,6 +76,9 @@ static ExtlFn get_layout_fn;
  *  \var{float_placement_method} & (string) How to place floating frames.
  *                          One of ''udlr'' (up-down, then left-right), 
  *                          ''lrud'' (left-right, then up-down) or ''random''. \\
+ *  \var{mousefocus} & String: ''disable'' or ''sloppy''. \\
+ *  \var{unsqueeze} & (boolean) Auto-unsqueeze transients/menus/queries/etc. \\
+ *  \var{autoraise} & (boolean) Autoraise regions in groups on goto. \\
  * \end{tabularx}
  * 
  * When a keyboard resize function is called, and at most \var{kbresize_t_max} 
@@ -99,6 +102,8 @@ void ioncore_set(ExtlTab tab)
     extl_table_gets_b(tab, "switchto", &(ioncore_g.switchto_new));
     extl_table_gets_b(tab, "screen_notify", &(ioncore_g.screen_notify));
     extl_table_gets_b(tab, "framed_transients", &(ioncore_g.framed_transients));
+    extl_table_gets_b(tab, "unsqueeze", &(ioncore_g.unsqueeze_enabled));
+    extl_table_gets_b(tab, "autoraise", &(ioncore_g.autoraise));
     
     if(extl_table_gets_s(tab, "frame_default_index", &tmp)){
         ioncore_g.frame_default_index=stringintmap_value(frame_idxs, 
@@ -106,6 +111,13 @@ void ioncore_set(ExtlTab tab)
                                                          ioncore_g.frame_default_index);
         free(tmp);
     }
+
+    if(extl_table_gets_s(tab, "mousefocus", &tmp)){
+        if(strcmp(tmp, "disabled")==0)
+            ioncore_g.no_mousefocus=TRUE;
+        else if(strcmp(tmp, "sloppy")==0)
+            ioncore_g.no_mousefocus=FALSE;
+    }
     
     if(extl_table_gets_i(tab, "dblclick_delay", &dd))
         ioncore_g.dblclick_delay=maxof(0, dd);
@@ -146,12 +158,20 @@ ExtlTab ioncore_get()
     extl_table_sets_b(tab, "switchto", ioncore_g.switchto_new);
     extl_table_sets_i(tab, "dblclick_delay", ioncore_g.dblclick_delay);
     extl_table_sets_b(tab, "screen_notify", ioncore_g.screen_notify);
+    extl_table_sets_b(tab, "framed_transients", ioncore_g.framed_transients);
+    extl_table_sets_b(tab, "unsqueeze", ioncore_g.unsqueeze_enabled);
+    extl_table_sets_b(tab, "autoraise", ioncore_g.autoraise);
+    
 
     extl_table_sets_s(tab, "frame_default_index", 
                       stringintmap_key(frame_idxs, 
                                        ioncore_g.frame_default_index,
                                        NULL));
     
+    extl_table_sets_s(tab, "mousefocus", (ioncore_g.no_mousefocus
+                                          ? "disabled" 
+                                          : "sloppy"));
+
     ioncore_get_moveres_accel(tab);
     
     ioncore_groupws_get(tab);
index c93ca0cb2154b28d76c195e3811e8c9d73d37a55..8493b9afbca73dc82922b053aafef49d8d8ad9d6 100644 (file)
 #include <libtu/minmax.h>
 
 #include <ioncore/common.h>
+#include <ioncore/global.h>
 #include <ioncore/mplex.h>
 #include <ioncore/focus.h>
 #include <ioncore/group.h>
 #include <ioncore/group-ws.h>
 #include <ioncore/framedpholder.h>
 #include <ioncore/return.h>
+#include <ioncore/sizehint.h>
+#include <ioncore/resize.h>
 
 
 static void get_relative_geom(WRectangle *g, WRegion *reg, WRegion *mgr)
@@ -141,7 +144,7 @@ bool ioncore_detach(WRegion *reg, int sp)
     WGroup *grp;
     bool set, nset;
     
-    reg=region_group_if_bottom(reg);
+    reg=region_groupleader_of(reg);
     
     grp=find_group(check_mplex(reg, &mode));
     
@@ -192,3 +195,41 @@ bool ioncore_detach_extl(WRegion *reg, const char *how)
 }
 
 
+void do_unsqueeze(WRegion *reg)
+{
+    WSizeHints hints;
+    
+    if(REGION_MANAGER_CHK(reg, WScreen)!=NULL)
+        return;
+    
+    region_size_hints(reg, &hints);
+
+    if(!hints.min_set)
+        return;
+        
+    if(hints.min_width<=REGION_GEOM(reg).w &&
+       hints.min_height<=REGION_GEOM(reg).h){
+        return;
+    }
+    
+    if(!ioncore_detach(reg, SETPARAM_SET))
+        return;
+        
+    do_unsqueeze(reg);
+}
+
+
+/*EXTL_DOC
+ * Try to detach \var{reg} if it fits poorly in its 
+ * current location. This function does not do anything,
+ * unless \var{override} is set or the \var{unsqueeze} option
+ * of \fnref{ioncore.set} is set.
+ */
+EXTL_EXPORT
+void ioncore_unsqueeze(WRegion *reg, bool override)
+{
+    if(ioncore_g.unsqueeze_enabled || override)
+        do_unsqueeze(region_groupleader_of(reg));
+}
+
+
index 30b4a4a11c3bbef72d9fa56e63944f6cdfa66cce..237d887b2b913947522f00e119fb362a17750a02 100644 (file)
@@ -16,5 +16,7 @@
 
 extern bool ioncore_detach(WRegion *reg, int sp);
 
+extern void ioncore_unsqueeze(WRegion *reg, bool override);
+
 #endif /* ION_IONCORE_DETACH_H */
 
index 9a3b95790f4b7e33ac19c296835abc14df5908c9..260d6b01e509c6c0dbb0d2d8021a7f61c3be8632 100644 (file)
@@ -172,24 +172,29 @@ static void skip_enterwindow()
 }
 
 
-void ioncore_flush()
+void ioncore_flushfocus()
 {
-    if(ioncore_g.focus_next!=NULL && 
-       ioncore_g.input_mode==IONCORE_INPUTMODE_NORMAL){
-        bool warp=ioncore_g.warp_next;
-        WRegion *next=ioncore_g.focus_next;
+    WRegion *next;
+    bool warp;
+    
+    if(ioncore_g.input_mode!=IONCORE_INPUTMODE_NORMAL)
+        return;
+        
+    next=ioncore_g.focus_next;
+    warp=ioncore_g.warp_next;
+
+    if(next==NULL)
+        return;
         
-        ioncore_g.focus_next=NULL;
+    ioncore_g.focus_next=NULL;
         
-        region_do_set_focus(next, warp);
+    region_do_set_focus(next, warp);
         
-        /* Just greedily eating it all away that X has to offer
-         * seems to be the best we can do with Xlib.
-         */
+    /* Just greedily eating it all away that X has to offer
+     * seems to be the best we can do with Xlib.
+     */
+    if(warp)
         skip_enterwindow();
-    }
-    
-    XFlush(ioncore_g.dpy);
 }
 
 
@@ -225,12 +230,22 @@ void ioncore_mainloop()
     while(1){
         check_signals();
         mainloop_execute_deferred();
-        ioncore_flush();
-
-        if(QLength(ioncore_g.dpy)>0)
-            ioncore_x_connection_handler(ioncore_g.conn, NULL);
-        else
-            mainloop_select();
+        
+        if(QLength(ioncore_g.dpy)==0){
+            XSync(ioncore_g.dpy, False);
+            
+            if(QLength(ioncore_g.dpy)==0){
+                ioncore_flushfocus();
+                XSync(ioncore_g.dpy, False);
+                
+                if(QLength(ioncore_g.dpy)==0){
+                    mainloop_select();
+                    continue;
+                }
+            }
+        }
+        
+        ioncore_x_connection_handler(ioncore_g.conn, NULL);
     }
 }
 
index 5e1e1fe81d9439dafebb3e4b77548b6ec725e68f..0a9a57a05bc4a1ca648cbaf5527b4ae8005190c8 100644 (file)
@@ -63,7 +63,7 @@ bool ioncore_handle_event(XEvent *ev)
         ioncore_handle_property(&(ev->xproperty));
         break;
     CASE_EVENT(FocusIn)
-        ioncore_handle_focus_in(&(ev->xfocus), FALSE);
+        ioncore_handle_focus_in(&(ev->xfocus));
         break;
     CASE_EVENT(FocusOut)
         ioncore_handle_focus_out(&(ev->xfocus));
@@ -305,14 +305,17 @@ void ioncore_handle_expose(const XExposeEvent *ev)
 /*{{{ Enter window, focus */
 
 
-static void do_handle_enter_window(XEvent *ev)
+void ioncore_handle_enter_window(XEvent *ev)
 {
     XEnterWindowEvent *eev=&(ev->xcrossing);
     WRegion *reg=NULL;
     
     if(ioncore_g.input_mode!=IONCORE_INPUTMODE_NORMAL)
         return;
-    
+        
+    if(eev->mode!=NotifyNormal && !ioncore_g.warp_enabled)
+        return;
+                
     reg=XWINDOW_REGION_OF_T(eev->window, WRegion);
     
     if(reg==NULL)
@@ -323,7 +326,12 @@ static void do_handle_enter_window(XEvent *ev)
         
     if(region_skip_focus(reg))
         return;
-
+    
+    if(ioncore_g.focus_next!=NULL &&
+       ioncore_g.focus_next_source<IONCORE_FOCUSNEXT_ENTERWINDOW){
+        return;
+    }
+    
     /* If a child of 'reg' is to be focused, do not process this
      * event. (ioncore_g.focus_next should only be set here by
      * another call to use from ioncore_handle_enter_window below.)
@@ -337,20 +345,11 @@ static void do_handle_enter_window(XEvent *ev)
         }
     }
     
-    region_goto_flags(reg, (REGION_GOTO_FOCUS|
-                            REGION_GOTO_NOWARP|
-                            REGION_GOTO_ENTERWINDOW));
-}
-
-
-void ioncore_handle_enter_window(XEvent *ev)
-{
-    do{
-        /* *sigh*, it doesn't seem reasonably simply possible to
-         * process events in-order.
-         */
-        do_handle_enter_window(ev);
-    }while(XCheckMaskEvent(ioncore_g.dpy, EnterWindowMask, ev));
+    if(region_goto_flags(reg, (REGION_GOTO_FOCUS|
+                               REGION_GOTO_NOWARP|
+                               REGION_GOTO_ENTERWINDOW))){
+        ioncore_g.focus_next_source=IONCORE_FOCUSNEXT_ENTERWINDOW;
+    }
 }
 
 
@@ -367,8 +366,7 @@ static bool pointer_in_root(Window root1)
 }
 
 
-
-void ioncore_handle_focus_in(const XFocusChangeEvent *ev, bool skip)
+void ioncore_handle_focus_in(const XFocusChangeEvent *ev)
 {
     WRegion *reg;
     WWindow *wwin;
@@ -386,18 +384,6 @@ void ioncore_handle_focus_in(const XFocusChangeEvent *ev, bool skip)
     if(ev->detail==NotifyPointer)
         return;
     
-    if(ev->window==region_root_of(reg)){ /* OBJ_IS(reg, WRootWin) */
-        D(fprintf(stderr, "scr-in %d %d %d\n", ROOTWIN_OF(reg)->xscr,
-                  ev->mode, ev->detail));
-        if((ev->detail==NotifyPointerRoot || ev->detail==NotifyDetailNone) &&
-           pointer_in_root(ev->window) && ioncore_g.focus_next==NULL){
-            /* Restore focus */
-            if(!skip)
-                region_set_focus(reg);
-            return;
-        }
-    }
-
     /* Input contexts */
     if(OBJ_IS(reg, WWindow)){
         wwin=(WWindow*)reg;
@@ -409,6 +395,25 @@ void ioncore_handle_focus_in(const XFocusChangeEvent *ev, bool skip)
         netwm_set_active(reg);
     
     region_got_focus(reg);
+    
+    if(ioncore_g.focus_next!=NULL && 
+       ioncore_g.focus_next_source<IONCORE_FOCUSNEXT_FALLBACK){
+        return;
+    }
+    
+    if((ev->detail==NotifyPointerRoot || ev->detail==NotifyDetailNone) 
+       && ev->window==region_root_of(reg) /* OBJ_IS(reg, WRootWin) */){
+        /* Restore focus if it was returned to a root window and we don't
+         * know of a pending focus change.
+         */
+        if(pointer_in_root(ev->window)){
+            region_set_focus(reg);
+            ioncore_g.focus_next_source=IONCORE_FOCUSNEXT_FALLBACK;
+        }
+    }else{
+        /* Something got the focus, don't use fallback. */
+        ioncore_g.focus_next=NULL;
+    }
 }
 
 
@@ -496,7 +501,7 @@ void ioncore_handle_buttonpress(XEvent *ev)
             ioncore_handle_grabs(ev);
             break;
         CASE_EVENT(FocusIn)
-            ioncore_handle_focus_in(&(ev->xfocus), FALSE);
+            ioncore_handle_focus_in(&(ev->xfocus));
             break;
         CASE_EVENT(FocusOut)
             ioncore_handle_focus_out(&(ev->xfocus));
index 84257a4c90db760b050c125e02fdbb21356a0eaf..322079132e499285ff20e617ffa50700966449b4 100644 (file)
@@ -22,7 +22,7 @@ extern void ioncore_handle_enter_window(XEvent *ev);
 extern void ioncore_handle_unmap_notify(const XUnmapEvent *ev);
 extern void ioncore_handle_destroy_notify(const XDestroyWindowEvent *ev);
 extern void ioncore_handle_client_message(const XClientMessageEvent *ev);
-extern void ioncore_handle_focus_in(const XFocusChangeEvent *ev, bool skip);
+extern void ioncore_handle_focus_in(const XFocusChangeEvent *ev);
 extern void ioncore_handle_focus_out(const XFocusChangeEvent *ev);
 extern void ioncore_handle_property(const XPropertyEvent *ev);
 extern void ioncore_handle_buttonpress(XEvent *ev);
index 4147172703bb4318bc4913337485d58309d6a132..06838a65bc2ccbd0542dd17fad40fe769332ed0c 100644 (file)
 /*{{{ Exec */
 
 
-void ioncore_setup_environ(int xscr)
+void ioncore_setup_display(int xscr)
 {
     char *tmp, *ptr;
     char *display;
+
+    /* Set up $DISPLAY */
     
     display=XDisplayName(ioncore_g.display);
     
@@ -54,7 +56,7 @@ void ioncore_setup_environ(int xscr)
         snprintf(tmp+strlen(tmp), 11, ".%u", (unsigned)xscr);
     
     putenv(tmp);
-    
+        
     /* No need to free it, we'll execve soon */
     /*free(tmp);*/
 
@@ -62,25 +64,15 @@ void ioncore_setup_environ(int xscr)
 }
 
 
-typedef struct{
-    WRootWin *rw;
-    const char *wd;
-} ExecP;
-
-
-static void setup_exec(void *p_)
+void ioncore_setup_environ(const WExecP *p)
 {
-    ExecP *p=(ExecP*)p_;
+    /* Set up $DISPLAY */
     
-    close(ioncore_g.conn);
+    ioncore_setup_display(p->target!=NULL 
+                          ? region_rootwin_of(p->target)->xscr
+                          : -1);
     
-    ioncore_g.dpy=NULL;
-    
-#ifndef CF_NO_SETPGID
-    setpgid(0, 0);
-#endif
-    
-    ioncore_setup_environ(p->rw==NULL ? -1 : p->rw->xscr);
+    /* Set up working directory */
     
     if(p->wd!=NULL){
         if(chdir(p->wd)!=0)
@@ -89,13 +81,29 @@ static void setup_exec(void *p_)
 }
 
 
+WHook *ioncore_exec_environ_hook=NULL;
+
+
+static void setup_exec(void *execp)
+{
+    hook_call_p(ioncore_exec_environ_hook, execp, NULL);
+    
+#ifndef CF_NO_SETPGID
+    setpgid(0, 0);
+#endif
+    
+    ioncore_g.dpy=NULL;
+}
+
+
 EXTL_EXPORT
-int ioncore_do_exec_rw(WRootWin *rw, const char *cmd, const char *wd,
+int ioncore_do_exec_on(WRegion *reg, const char *cmd, const char *wd,
                        ExtlFn errh)
 {
-    ExecP p;
+    WExecP p;
     
-    p.rw=rw;
+    p.target=reg;
+    p.cmd=cmd;
     p.wd=wd;
     
     return mainloop_popen_bgread(cmd, setup_exec, (void*)&p, 
@@ -113,7 +121,7 @@ EXTL_SAFE
 EXTL_EXPORT
 int ioncore_exec(const char *cmd)
 {
-    return ioncore_do_exec_rw(NULL, cmd, NULL, extl_fn_none());
+    return ioncore_do_exec_on(NULL, cmd, NULL, extl_fn_none());
 }
 
 
@@ -126,10 +134,11 @@ EXTL_SAFE
 EXTL_EXPORT
 int ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh)
 {
-    ExecP p;
+    WExecP p;
     
-    p.rw=NULL;
+    p.target=NULL;
     p.wd=NULL;
+    p.cmd=cmd;
     
     return mainloop_popen_bgread(cmd, setup_exec, (void*)&p, h, errh);
 }
@@ -196,7 +205,7 @@ void ioncore_do_restart()
     ioncore_deinit();
     if(other!=NULL){
         if(ioncore_g.display!=NULL)
-            ioncore_setup_environ(-1);
+            ioncore_setup_display(-1);
         mainloop_do_exec(other);
         warn_err_obj(other);
     }
index b7f9bced556ad6efae109bb3092acd2dade5b7e8..b76f01e5a650a01451318fd309032ac2d6525ce0 100644 (file)
 #ifndef ION_IONCORE_EXEC_H
 #define ION_IONCORE_EXEC_H
 
+#include <libextl/extl.h>
+#include <libmainloop/hooks.h>
 #include "common.h"
 #include "rootwin.h"
-#include <libextl/extl.h>
 
 enum{
     IONCORE_SM_RESIGN,
@@ -24,11 +25,22 @@ enum{
     IONCORE_SM_SNAPSHOT
 };
 
-extern void ioncore_do_exec(const char *cmd);
-extern bool ioncore_exec_on_rootwin(WRootWin *rootwin, const char *cmd);
+
+INTRSTRUCT(WExecP);
+
+DECLSTRUCT(WExecP){
+    WRegion *target;
+    const char *cmd;
+    const char *wd;
+};
+
+
 extern bool ioncore_exec(const char *cmd);
-extern void ioncore_setup_environ(int scr);
+extern int ioncore_do_exec_on(WRegion *reg, const char *cmd, const char *wd,
+                              ExtlFn errh);
 extern bool ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh);
+extern void ioncore_setup_environ(const WExecP *p);
+extern void ioncore_setup_display(int xscr);
 
 extern bool ioncore_set_smhook(void (*fn)(int what));
 
@@ -44,4 +56,7 @@ extern bool ioncore_do_snapshot();
 
 extern void ioncore_emergency_snapshot();
 
+/* const WExecP* parameter */
+extern WHook *ioncore_exec_environ_hook;
+
 #endif /* ION_IONCORE_EXEC_H */
index 8d5fb2119cdc862972b18fa544d1855258f39681..3f6a64d0089ed8b6a10b81ff277a143e4d364ae0 100644 (file)
@@ -34,18 +34,34 @@ static void ggeom(WRegion *reg, WRectangle *geom)
 }
 
 
+static bool st_filt(WStacking *st, void *lvl)
+{
+    uint level=*(uint*)lvl;
+    
+    return (st->reg!=NULL && 
+            REGION_IS_MAPPED(st->reg) && 
+            st->level==level);
+}
+
+
+#define FOR_ALL_STACKING_NODES(VAR, WS, LVL, TMP)          \
+    for(stacking_iter_init(&(TMP), group_get_stacking(ws), \
+                          st_filt, &LVL),                  \
+        VAR=stacking_iter_nodes(&(TMP));                   \
+        VAR!=NULL;                                         \
+        VAR=stacking_iter_nodes(&(TMP)))
+
+
 #define IGNORE_ST(ST, WS) ((ST)->reg==NULL || (ST)==(WS)->bottom)
 
-static WRegion* is_occupied(WGroup *ws, const WRectangle *r)
+
+static WRegion* is_occupied(WGroup *ws, uint level, const WRectangle *r)
 {
-    WGroupIterTmp tmp;
+    WStackingIterTmp tmp;
     WStacking *st;
     WRectangle p;
     
-    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
-        if(IGNORE_ST(st, ws))
-            continue;
-        
+    FOR_ALL_STACKING_NODES(st, ws, level, tmp){
         ggeom(st->reg, &p);
         
         if(r->x>=p.x+p.w)
@@ -63,17 +79,14 @@ static WRegion* is_occupied(WGroup *ws, const WRectangle *r)
 }
 
 
-static int next_least_x(WGroup *ws, int x)
+static int next_least_x(WGroup *ws, uint level, int x)
 {
     WRectangle p;
     int retx=REGION_GEOM(ws).x+REGION_GEOM(ws).w;
-    WGroupIterTmp tmp;
+    WStackingIterTmp tmp;
     WStacking *st;
     
-    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
-        if(IGNORE_ST(st, ws))
-            continue;
-        
+    FOR_ALL_STACKING_NODES(st, ws, level, tmp){
         ggeom(st->reg, &p);
         
         if(p.x+p.w>x && p.x+p.w<retx)
@@ -84,17 +97,15 @@ static int next_least_x(WGroup *ws, int x)
 }
 
 
-static int next_lowest_y(WGroup *ws, int y)
+
+static int next_lowest_y(WGroup *ws, uint level, int y)
 {
     WRectangle p;
     int rety=REGION_GEOM(ws).y+REGION_GEOM(ws).h;
-    WGroupIterTmp tmp;
+    WStackingIterTmp tmp;
     WStacking *st;
     
-    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
-        if(IGNORE_ST(st, ws))
-            continue;
-        
+    FOR_ALL_STACKING_NODES(st, ws, level, tmp){
         ggeom(st->reg, &p);
         
         if(p.y+p.h>y && p.y+p.h<rety)
@@ -105,7 +116,7 @@ static int next_lowest_y(WGroup *ws, int y)
 }
 
 
-static bool tiling_placement(WGroup *ws, WRectangle *g)
+static bool tiling_placement(WGroup *ws, uint level, WRectangle *g)
 {
     WRegion *p;
     WRectangle r, r2;
@@ -120,35 +131,35 @@ static bool tiling_placement(WGroup *ws, WRectangle *g)
     
     if(ioncore_placement_method==PLACEMENT_UDLR){
         while(r.x<maxx){
-            p=is_occupied(ws, &r);
+            p=is_occupied(ws, level, &r);
             while(p!=NULL && r.y+r.h<maxy){
                 ggeom(p, &r2);
                 r.y=r2.y+r2.h+1;
-                p=is_occupied(ws, &r);
+                p=is_occupied(ws, level, &r);
             }
             if(r.y+r.h<maxy && r.x+r.w<maxx){
                 g->x=r.x;
                 g->y=r.y;
                 return TRUE;
             }else{
-                r.x=next_least_x(ws, r.x);
+                r.x=next_least_x(ws, level, r.x);
                 r.y=0;
             }
         }
     }else{
         while(r.y<maxy){
-            p=is_occupied(ws, &r);
+            p=is_occupied(ws, level, &r);
             while(p!=NULL && r.x+r.w<maxx){
                 ggeom(p, &r2);
                 r.x=r2.x+r2.w+1;
-                p=is_occupied(ws, &r);
+                p=is_occupied(ws, level, &r);
             }
             if(r.y+r.h<maxy && r.x+r.w<maxx){
                 g->x=r.x;
                 g->y=r.y;
                 return TRUE;
             }else{
-                r.y=next_lowest_y(ws, r.y);
+                r.y=next_lowest_y(ws, level, r.y);
                 r.x=0;
             }
         }
@@ -159,10 +170,10 @@ static bool tiling_placement(WGroup *ws, WRectangle *g)
 }
 
 
-void group_calc_placement(WGroup *ws, WRectangle *geom)
+void group_calc_placement(WGroup *ws, uint level, WRectangle *geom)
 {
     if(ioncore_placement_method!=PLACEMENT_RANDOM){
-        if(tiling_placement(ws, geom))
+        if(tiling_placement(ws, level, geom))
             return;
     }
     random_placement(REGION_GEOM(ws), geom);
index 2dc062d83844fcc278cca99f5795b6f562ae03f4..760030e8346bcd9cf451ebaca3871beecb823360 100644 (file)
@@ -22,6 +22,7 @@ typedef enum{
 
 extern WFloatPlacement ioncore_placement_method;
 
-extern void group_calc_placement(WGroup *ws, WRectangle *geom);
+extern void group_calc_placement(WGroup *ws, uint level, 
+                                 WRectangle *geom);
 
 #endif /* ION_IONCORE_FLOAT_PLACEMENT_H */
index c25ec716ff1750906c2a9ad50927eccca32f0cb9..b2341ab403b5cd99a65220b8c88e73a894473cf1 100644 (file)
@@ -328,6 +328,9 @@ void region_finalise_focusing(WRegion* reg, Window win, bool warp)
     if(warp)
         region_do_warp(reg);
     
+    if(REGION_IS_ACTIVE(reg) && ioncore_await_focus()==NULL)
+        return;
+    
     region_set_await_focus(reg);
     /*xwindow_do_set_focus(win);*/
     XSetInputFocus(ioncore_g.dpy, win, RevertToParent, 
@@ -388,6 +391,7 @@ void region_do_warp(WRegion *reg)
 void region_maybewarp(WRegion *reg, bool warp)
 {
     ioncore_g.focus_next=reg;
+    ioncore_g.focus_next_source=IONCORE_FOCUSNEXT_OTHER;
     ioncore_g.warp_next=(warp && ioncore_g.warp_enabled);
 }
 
@@ -396,7 +400,7 @@ void region_maybewarp_now(WRegion *reg, bool warp)
 {
     ioncore_g.focus_next=NULL;
     /* TODO: what if focus isn't set? Should focus_next be reset then? */
-    region_do_set_focus(reg, warp);
+    region_do_set_focus(reg, warp && ioncore_g.warp_enabled);
 }
 
 
@@ -450,34 +454,33 @@ WRegion *ioncore_current()
  */
 void region_pointer_focus_hack(WRegion *reg)
 {
-    WRegion *act=ioncore_await_focus();
-    const WRectangle *g=&REGION_GEOM(reg);
-    int x, y;
+    WRegion *act;
     
     if(ioncore_g.opmode!=IONCORE_OPMODE_NORMAL)
         return;
-    
-    if(!REGION_IS_ACTIVE(reg) && act==NULL)
-        act=ioncore_g.focus_current;
         
-    if(act==NULL || OBJ_IS_BEING_DESTROYED(act))
+    if(ioncore_g.focus_next!=NULL &&
+       ioncore_g.focus_next_source<=IONCORE_FOCUSNEXT_POINTERHACK){
         return;
-        
-    /* Ok, anything under us should not get focus as we're unmapped:
-     * Either we don't have the focus, or focus change somewhere else
-     * is pending.
-     *
-     * It might be possible to do the pointer check more efficiently
-     * by trying to maintain our internal pointer containment state
-     * by tracking Enter/Leave events...
-     */
+    }
     
-    xwindow_pointer_pos(region_xwindow(reg), &x, &y);
+    act=ioncore_await_focus();
     
-    if(x>=0 && y>=0 && x<g->w && y<g->h){
-        D(fprintf(stderr, "Pointer here and shouldn't alter focus!\n"));
-        region_set_focus(act);
+    if((REGION_IS_ACTIVE(reg) && act==NULL) || !region_is_fully_mapped(reg))
+        return;
+    
+    if(act==NULL)
+        act=ioncore_g.focus_current;
+    
+    if(act==NULL || 
+       OBJ_IS_BEING_DESTROYED(act) || 
+       !region_is_fully_mapped(act) ||
+       region_skip_focus(act)){
+        return;
     }
+
+    region_set_focus(act);
+    ioncore_g.focus_next_source=IONCORE_FOCUSNEXT_POINTERHACK;
 }
 
 
index 6c43fc60b3c2df9acb8ba231a0b39484e65a26a6..5be2e6ba63567c673749939fe18bd7faf8015450 100644 (file)
@@ -235,7 +235,7 @@ static void frame_shaped_recalc_bar_size(WFrame *frame)
     
     if(m>0){
         grbrush_get_border_widths(frame->bar_brush, &bdw);
-        bdtotal=((m-1)*(bdw.tb_ileft+bdw.tb_iright)
+        bdtotal=((m-1)*(bdw.tb_ileft+bdw.tb_iright+bdw.spacing)
                  +bdw.right+bdw.left);
 
         FRAME_MX_FOR_ALL(sub, frame, itmp){
index d733c3f46252d475be9d40f990281d86fc43c3dd..f0e786e77cdc1560e4dd5b92de6bac8a0e0d8efd 100644 (file)
@@ -137,6 +137,7 @@ static void frame_add_mode_bindmaps(WFrame *frame)
         region_add_bindmap((WRegion*)frame, ioncore_frame_floating_bindmap);
     }else if(mode==FRAME_MODE_TRANSIENT){
         region_add_bindmap((WRegion*)frame, ioncore_frame_transient_bindmap);
+        region_add_bindmap((WRegion*)frame, ioncore_frame_floating_bindmap);
     }else{
         /* mode==FRAME_MODE_TILED || mode==FRAME_MODE_TILED_ALT || mode==FRAME_MODE_UNKNOWN */
        region_add_bindmap((WRegion*)frame, ioncore_mplex_toplevel_bindmap);
@@ -456,7 +457,7 @@ void frame_size_hints(WFrame *frame, WSizeHints *hints_ret)
         if(!USE_MINMAX(frame)){
             hints_ret->max_set=0;
             hints_ret->min_set=0;
-            hints_ret->base_set=0;
+            /*hints_ret->base_set=0;*/
             hints_ret->aspect_set=0;
             hints_ret->no_constrain=FALSE;
             /*hints_ret->no_constrain=TRUE;*/
@@ -832,9 +833,17 @@ bool frame_is_numbers(WFrame *frame)
 
 void frame_managed_notify(WFrame *frame, WRegion *sub, WRegionNotify how)
 {
-    frame_update_attrs(frame);
-    frame_recalc_bar(frame);
-    frame_draw_bar(frame, FALSE);
+    if(how==ioncore_g.notifies.activated ||
+       how==ioncore_g.notifies.inactivated ||
+       how==ioncore_g.notifies.name ||
+       how==ioncore_g.notifies.activity ||
+       how==ioncore_g.notifies.sub_activity ||
+       how==ioncore_g.notifies.tag){
+       
+        frame_update_attrs(frame);
+        frame_recalc_bar(frame);
+        frame_draw_bar(frame, FALSE);
+    }
 }
 
 
@@ -875,27 +884,17 @@ static void frame_managed_changed(WFrame *frame, int mode, bool sw,
 }
 
 
-#define EMPTY_AND_SHOULD_BE_DESTROYED(FRAME) \
-    (DEST_EMPTY(frame) && FRAME_MCOUNT(FRAME)==0 && \
-     !OBJ_IS_BEING_DESTROYED(frame))
-
-
-static void frame_destroy_empty(WFrame *frame)
+WRegion *frame_managed_disposeroot(WFrame *frame, WRegion *reg)
 {
-    if(EMPTY_AND_SHOULD_BE_DESTROYED(frame)){
-        frame_modify_pholders(frame);
-        destroy_obj((Obj*)frame);
-    }
-}
-
-
-void frame_managed_remove(WFrame *frame, WRegion *reg)
-{
-    mplex_managed_remove((WMPlex*)frame, reg);
-    if(EMPTY_AND_SHOULD_BE_DESTROYED(frame)){
-        mainloop_defer_action((Obj*)frame, 
-                              (WDeferredAction*)frame_destroy_empty);
+    if(DEST_EMPTY(frame) &&
+       frame->mplex.mgd!=NULL && 
+       frame->mplex.mgd->reg==reg && 
+       frame->mplex.mgd->next==NULL){
+        WRegion *tmp=region_disposeroot((WRegion*)frame);
+        return (tmp!=NULL ? tmp : reg);
     }
+    
+    return reg;
 }
 
 
@@ -960,25 +959,18 @@ WRegion *frame_load(WWindow *par, const WFitParams *fp, ExtlTab tab)
     int mode=FRAME_MODE_UNKNOWN;
     WFrame *frame;
     
-    if(!extl_table_gets_i(tab, "mode", &mode)){
-        #warning "TODO: Remove backwards compatibility hack"
-        char *style=NULL;
-        if(extl_table_gets_s(tab, "frame_style", &style)){
-            if(strcmp(style, "frame-tiled")==0)
-                mode=FRAME_MODE_TILED;
-            else if(strcmp(style, "frame-floating")==0)
-                mode=FRAME_MODE_FLOATING;
-            else if(strcmp(style, "frame-transientcontainer")==0)
-                mode=FRAME_MODE_TRANSIENT;
-            free(style);
-        }
-    }
+    extl_table_gets_i(tab, "mode", &mode);
     
     frame=create_frame(par, fp, mode);
     
     if(frame!=NULL)
         frame_do_load(frame, tab);
     
+    if(DEST_EMPTY(frame) && frame->mplex.mgd==NULL){
+        destroy_obj((Obj*)frame);
+        return NULL;
+    }
+    
     return (WRegion*)frame;
 }
 
@@ -1015,12 +1007,13 @@ static DynFunTab frame_dynfuntab[]={
 
     {(DynFun*)region_fitrep,
      (DynFun*)frame_fitrep},
+     
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)frame_managed_disposeroot},
 
     {region_managed_rqgeom_absolute, 
      frame_managed_rqgeom_absolute},
 
-    {region_managed_remove, frame_managed_remove},
-    
     {(DynFun*)mplex_default_index,
      (DynFun*)frame_default_index},
     
index aa4e7a6f27437d91258222d4fc14b1d285f6a1ee..7aa50140702ca2cff9f617666f2c42f1d29b4e36 100644 (file)
@@ -117,7 +117,7 @@ extern int frame_default_index(WFrame *frame);
 
 /* Misc */
 extern void frame_managed_notify(WFrame *frame, WRegion *sub, WRegionNotify how);
-extern void frame_managed_remove(WFrame *frame, WRegion *reg);
+extern bool frame_managed_rqdispose(WFrame *frame, WRegion *reg);
 
 extern void ioncore_frame_quasiactivation_notify(WRegion *reg, WRegionNotify how);
 
index 56ea52702e54c75f58aa083d0da7f2f755f787db..a49d4f5eee31372dfdb2d27d2bc329ada5b297bc 100644 (file)
@@ -20,7 +20,7 @@
 #include "fullscreen.h"
 #include "mwmhints.h"
 #include "focus.h"
-#include "group-cw.h"
+#include "group.h"
 #include "return.h"
 
 
@@ -125,8 +125,7 @@ bool clientwin_fullscreen_may_switchto(WClientWin *cwin)
 }
 
 
-bool clientwin_check_fullscreen_request(WClientWin *cwin, int w, int h,
-                                        bool sw)
+WScreen *clientwin_fullscreen_chkrq(WClientWin *cwin, int w, int h)
 {
     WScreen *scr;
     WMwmHints *mwm;
@@ -135,7 +134,7 @@ bool clientwin_check_fullscreen_request(WClientWin *cwin, int w, int h,
     mwm=xwindow_get_mwmhints(cwin->win);
     if(mwm==NULL || !(mwm->flags&MWM_HINTS_DECORATIONS) ||
        mwm->decorations!=0)
-        return FALSE;
+        return NULL;
     
     FOR_ALL_SCREENS(scr){
         if(!region_same_rootwin((WRegion*)scr, (WRegion*)cwin))
@@ -144,17 +143,11 @@ bool clientwin_check_fullscreen_request(WClientWin *cwin, int w, int h,
          * and doesn't set position, so we also don't check position here, 
          * and instead take the first screen with matching size.
          */
-        if(REGION_GEOM(scr).w==w && REGION_GEOM(scr).h==h){
-            cwin->flags|=CLIENTWIN_FS_RQ;
-            if(!region_fullscreen_scr((WRegion*)cwin, (WScreen*)scr, sw)){
-                cwin->flags&=~CLIENTWIN_FS_RQ;
-                return FALSE;
-            }
-            return TRUE;
-        }
+        if(REGION_GEOM(scr).w==w && REGION_GEOM(scr).h==h)
+            return scr;
     }
     
-    return FALSE;
+    return NULL;
 }
 
 
index 28227038b8b1e6f123d32a7bc03323963413995e..2436a980c5268a9e48869d45dfaacc65464291de 100644 (file)
@@ -19,8 +19,7 @@
 
 #define REGION_IS_FULLSCREEN(REG) OBJ_IS(REGION_PARENT(REG), WScreen)
 
-extern bool clientwin_check_fullscreen_request(WClientWin *cwin, 
-                                               int w, int h, bool switchto);
+extern WScreen *clientwin_fullscreen_chkrq(WClientWin *cwin, int w, int h);
 extern bool clientwin_fullscreen_may_switchto(WClientWin *cwin);
 
 extern bool region_fullscreen_scr(WRegion *reg, WScreen *vp, bool switchto);
index b23dce272789da027a58c2cff62827e63cdbe854..7ac78419c0c699063946ff9ca13b66f2206cad49 100644 (file)
@@ -37,6 +37,14 @@ enum{
     IONCORE_OPMODE_DEINIT
 };
 
+enum{
+    IONCORE_FOCUSNEXT_OTHER,
+    IONCORE_FOCUSNEXT_POINTERHACK,
+    IONCORE_FOCUSNEXT_ENTERWINDOW,
+    IONCORE_FOCUSNEXT_FALLBACK
+};
+
+
 INTRSTRUCT(WGlobal);
 
 
@@ -64,6 +72,7 @@ DECLSTRUCT(WGlobal){
     WScreen *screens;
     WRegion *focus_next;
     bool warp_next;
+    int focus_next_source;
     
     /* We could have a display WRegion but the screen-link could impose
      * some problems so these are handled as a special case.
@@ -80,8 +89,9 @@ DECLSTRUCT(WGlobal){
     bool screen_notify;
     int frame_default_index;
     bool framed_transients;
-    
-    /*bool save_enabled;*/
+    bool no_mousefocus;
+    bool unsqueeze_enabled;
+    bool autoraise;
     
     bool use_mb; /* use mb routines? */
     bool enc_sb; /* 8-bit charset? If unset, use_mb must be set. */
@@ -102,7 +112,9 @@ DECLSTRUCT(WGlobal){
                  unset_return,
                  pseudoactivated,
                  pseudoinactivated,
-                 deinit;
+                 deinit,
+                 map,
+                 unmap;
     } notifies;
 };
 
index d3bbcadf5172fc2cae2931fdab3a247b51776200..aad2dfdf9b69057812a09c490fae8e37a05f98af 100644 (file)
@@ -2,7 +2,7 @@
  * ion/ioncore/grab.c
  * 
  * Copyright (c) Lukas Schroeder 2002,
- *               Tuomo Valkonen 2003.
+ *               Tuomo Valkonen 2003-2007.
  *
  * Ion is free software; you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by
@@ -117,7 +117,7 @@ void ioncore_grab_establish(WRegion *reg, GrabHandler *func,
         current_grab->eventmask=eventmask;
         current_grab->remove=FALSE;
         current_grab->cursor=IONCORE_CURSOR_DEFAULT;
-        current_grab->confine_to=region_root_of(reg);
+        current_grab->confine_to=None; /*region_root_of(reg);*/
         current_grab->sqid=last_sqid++;
         do_grab_install(current_grab);
     }
index 0b09c0a0ec93d89223b93d76e81caed5ebdd82d0..ecdf2568ab85144db3d0ea71cc0d17d076d40ef3 100644 (file)
@@ -2,7 +2,7 @@
  * ion/ioncore/grab.h
  *
  * Copyright (c) Lukas Schroeder 2002,
- *                 Tuomo Valkonen 2003.
+ *               Tuomo Valkonen 2003-2007.
  *
  * Ion is free software; you can redistribute it and/or modify it under
  * the terms of the GNU Lesser General Public License as published by
index 0084ee204343d993e811e511470376ab2775f713..8181af80bd96bc60f5294dd69277445da479417b 100644 (file)
@@ -180,6 +180,8 @@ void groupcw_managed_notify(WGroupCW *cwg, WRegion *reg, WRegionNotify how)
         /* Title has changed */
         region_notify_change((WRegion*)cwg, how);
     }
+    
+    group_managed_notify(&cwg->grp, reg, how);
 }
 
 
@@ -196,8 +198,6 @@ bool groupcw_init(WGroupCW *cwg, WWindow *parent, const WFitParams *fp)
     if(!group_init(&(cwg->grp), parent, fp))
         return FALSE;
     
-    cwg->grp.bottom_last_close=TRUE;
-
     region_add_bindmap((WRegion*)cwg, ioncore_groupcw_bindmap);
     
     return TRUE;
index 538db141f11d9abe6c3b7fd6e785fa9faa659679..61a32358b73031ff4fe40c1d8bbbd8e51e159556 100644 (file)
@@ -46,6 +46,7 @@
 static void group_place_stdisp(WGroup *ws, WWindow *parent,
                                  int pos, WRegion *stdisp);
 
+static void group_remanage_stdisp(WGroup *ws);
 
 
 /*{{{ Stacking list stuff */
@@ -280,19 +281,21 @@ static bool group_managed_prepare_focus(WGroup *ws, WRegion *reg,
         return mplex_do_prepare_focus(mplex, node, st,
                                       flags, res);
     }else{
-        WStacking *stacking;
-        
         if(!region_prepare_focus((WRegion*)ws, flags, res))
             return FALSE;
 
-        stacking=group_get_stacking(ws);
         st=find_to_focus(ws, st, FALSE);
         
-#warning "TODO: raise in some cases (not enter-window)?"
-        
         if(st==NULL)
             return FALSE;
         
+        if(ioncore_g.autoraise && 
+           !(flags&REGION_GOTO_ENTERWINDOW) &&
+           st->level>STACKING_LEVEL_BOTTOM){
+            WStacking **stackingp=group_get_stackingp(ws);
+            stacking_restack(stackingp, st, None, NULL, NULL, FALSE);
+        }
+        
         res->reg=st->reg;
         res->flags=flags;
         
@@ -301,28 +304,12 @@ static bool group_managed_prepare_focus(WGroup *ws, WRegion *reg,
 }
 
 
-static bool group_essentially_empty(WGroup *ws)
-{
-    WGroupIterTmp tmp;
-    WStacking *st;
-    
-    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
-        if(st!=ws->managed_stdisp)
-            return FALSE;
-    }
-    
-    return TRUE;
-}
-
-
 void group_managed_remove(WGroup *ws, WRegion *reg)
 {
     bool mcf=region_may_control_focus((WRegion*)ws);
-    bool ds=OBJ_IS_BEING_DESTROYED(ws);
     WStacking *st, *next_st=NULL;
     bool was_stdisp=FALSE, was_bottom=FALSE;
-    bool dest=FALSE;
-    bool cur=FALSE;
+    bool was_current=FALSE;
     
     st=group_find_stacking(ws, reg);
 
@@ -339,13 +326,11 @@ void group_managed_remove(WGroup *ws, WRegion *reg)
         if(st==ws->bottom){
             ws->bottom=NULL;
             was_bottom=TRUE;
-            if(ws->bottom_last_close && group_essentially_empty(ws))
-                dest=TRUE;
         }
             
         if(st==ws->current_managed){
-            cur=TRUE;
             ws->current_managed=NULL;
+            was_current=TRUE;
         }
         
         stacking_unassoc(st);
@@ -354,21 +339,15 @@ void group_managed_remove(WGroup *ws, WRegion *reg)
     
     region_unset_manager(reg, (WRegion*)ws);
     
-    if(!dest && !ds){
+    if(!OBJ_IS_BEING_DESTROYED(ws)){
         if(was_bottom && !was_stdisp && ws->managed_stdisp==NULL){
             /* We should probably be managing any stdisp, that 'bottom' 
              * was managing.
              */
-            WMPlex *mplex=OBJ_CAST(REGION_MANAGER(ws), WMPlex);
-            
-            if(mplex!=NULL 
-               && mplex->mx_current!=NULL 
-               && mplex->mx_current->st->reg==(WRegion*)ws){
-                mplex_remanage_stdisp(mplex);
-            }
+            group_remanage_stdisp(ws);
         }
         
-        if(cur){
+        if(was_current){
             /* This may still potentially cause problems when focus
              * change is pending. Perhaps we should use region_await_focus,
              * if it is pointing to our child (and region_may_control_focus 
@@ -381,13 +360,11 @@ void group_managed_remove(WGroup *ws, WRegion *reg)
                 ws->current_managed=stf;
             }
         }
-    }else if(dest && !ds){
-        region_dispose((WRegion*)ws, mcf);
     }
 }
 
 
-static void group_managed_notify(WGroup *ws, WRegion *reg, WRegionNotify how)
+void group_managed_notify(WGroup *ws, WRegion *reg, WRegionNotify how)
 {
     if(how==ioncore_g.notifies.activated || 
        how==ioncore_g.notifies.pseudoactivated){
@@ -464,37 +441,100 @@ void group_deinit(WGroup *ws)
 
 
     
-bool group_rescue_clientwins(WGroup *ws, WPHolder *ph)
+bool group_rescue_clientwins(WGroup *ws, WRescueInfo *info)
 {
     WGroupIterTmp tmp;
     
     group_iter_init_nostdisp(&tmp, ws);
     
-    return region_rescue_some_clientwins((WRegion*)ws, ph,
+    return region_rescue_some_clientwins((WRegion*)ws, info,
                                          (WRegionIterator*)group_iter,
                                          &tmp);
 }
 
 
-bool group_may_destroy(WGroup *ws)
+static bool group_empty_for_bottom_stdisp(WGroup *ws)
+{
+    WGroupIterTmp tmp;
+    WStacking *st;
+    
+    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
+        if(st!=ws->bottom && st!=ws->managed_stdisp)
+            return FALSE;
+    }
+    
+    return TRUE;
+}
+
+
+static WRegion *group_managed_disposeroot(WGroup *ws, WRegion *reg)
+{
+    if(group_bottom(ws)==reg){
+        if(group_empty_for_bottom_stdisp(ws))
+            return region_disposeroot((WRegion*)ws);
+    }
+    
+    return reg;
+}
+
+
+/*}}}*/
+
+
+/*{{{ Bottom */
+
+
+static void group_do_set_bottom(WGroup *grp, WStacking *st)
 {
-    bool ret=group_essentially_empty(ws);
-    if(!ret)
-        warn(TR("Workspace not empty - refusing to destroy."));
-    return ret;
+    WStacking *was=grp->bottom;
+    
+    grp->bottom=st;
+    
+    if(st!=was){
+        if(st==NULL || HAS_DYN(st->reg, region_manage_stdisp))
+            group_remanage_stdisp(grp);
+        
+    }
 }
 
 
-static bool group_managed_may_destroy(WGroup *ws, WRegion *reg)
+/*EXTL_DOC
+ * Sets the 'bottom' of \var{ws}. The region \var{reg} must already
+ * be managed by \var{ws}, unless \code{nil}.
+ */
+EXTL_EXPORT_MEMBER
+bool group_set_bottom(WGroup *ws, WRegion *reg)
 {
+    WStacking *st=NULL;
+    
+    if(reg!=NULL){
+        st=group_find_stacking(ws, reg);
+        
+        if(st==NULL)
+            return FALSE;
+    }
+        
+    group_do_set_bottom(ws, st);
+    
     return TRUE;
 }
 
 
+/*EXTL_DOC
+ * Returns the 'bottom' of \var{ws}.
+ */
+EXTL_SAFE
+EXTL_EXPORT_MEMBER
+WRegion *group_bottom(WGroup *ws)
+{
+    return (ws->bottom!=NULL ? ws->bottom->reg : NULL);
+}
+
+
 /*}}}*/
 
 
-/*{{{ attach */
+/*{{{ Attach */
 
 
 WStacking *group_do_add_managed(WGroup *ws, WRegion *reg, int level,
@@ -574,6 +614,16 @@ bool group_do_attach_final(WGroup *ws,
     int weak;
     bool sw;
     
+    /* Stacking  */
+    if(param->stack_above!=NULL)
+        stabove=group_find_stacking(ws, param->stack_above);
+
+    level=(stabove!=NULL
+           ? stabove->level
+           : (param->level_set 
+              ? param->level 
+              : STACKING_LEVEL_NORMAL));
+    
     /* Fit */
     szplcy=(param->szplcy_set
             ? param->szplcy
@@ -610,7 +660,7 @@ bool group_do_attach_final(WGroup *ws,
          szplcy==SIZEPOLICY_FREE ||
          szplcy==SIZEPOLICY_FREE_GLUE /* without flags */)){
         /* TODO: use 'weak'? */
-        group_calc_placement(ws, &g);
+        group_calc_placement(ws, level, &g);
     }
 
     fp.g=REGION_GEOM(ws);
@@ -621,16 +671,7 @@ bool group_do_attach_final(WGroup *ws,
     if(rectangle_compare(&fp.g, &REGION_GEOM(reg))!=RECTANGLE_SAME)
         region_fitrep(reg, NULL, &fp);
     
-    /* Stacking & add */
-    if(param->stack_above!=NULL)
-        stabove=group_find_stacking(ws, param->stack_above);
-
-    level=(stabove!=NULL
-           ? stabove->level
-           : (param->level_set 
-              ? param->level 
-              : STACKING_LEVEL_NORMAL));
-
+    /* Add */
     st=group_do_add_managed(ws, reg, level, szplcy);
     
     if(st==NULL)
@@ -639,25 +680,10 @@ bool group_do_attach_final(WGroup *ws,
     if(stabove!=NULL)
         st->above=stabove;
 
-    /* Misc. */
-    if(param->bottom){
-        ws->bottom=st;
-        
-        if(HAS_DYN(reg, region_manage_stdisp) && ws->managed_stdisp!=NULL){
-            WMPlex *mplex=OBJ_CAST(REGION_MANAGER(ws), WMPlex);
-            if(mplex!=NULL){ /* should always hold */
-                WMPlexSTDispInfo di;
-                WRegion *stdisp=NULL;
-                mplex_get_stdisp(mplex, &stdisp, &di);
-                if(stdisp!=NULL){
-                    assert(stdisp==ws->managed_stdisp->reg);
-                    /* WARNING! Calls back to group code (managed_remove). */
-                    region_manage_stdisp(reg, stdisp, &di);
-                }
-            }
-        }
-    }
+    if(param->bottom)
+        group_do_set_bottom(ws, st);
     
+    /* Focus */
     sw=(param->switchto_set ? param->switchto : ioncore_g.switchto_new);
     
     if(sw || st->level>=STACKING_LEVEL_MODAL1){
@@ -895,6 +921,24 @@ void group_manage_stdisp(WGroup *ws, WRegion *stdisp,
 }
 
 
+static void group_remanage_stdisp(WGroup *ws)
+{
+    WMPlex *mplex=OBJ_CAST(REGION_MANAGER(ws), WMPlex);
+    
+    if(mplex!=NULL && 
+       mplex->mx_current!=NULL && 
+       mplex->mx_current->st->reg==(WRegion*)ws){
+        mplex_remanage_stdisp(mplex);
+    }
+}
+
+
+/*}}}*/
+
+
+/*{{{ Geometry requests */
+
+
 void group_managed_rqgeom(WGroup *ws, WRegion *reg,
                           const WRQGeomParams *rq,
                           WRectangle *geomret)
@@ -1148,16 +1192,6 @@ bool group_managed_rqorder(WGroup *grp, WRegion *reg, WRegionOrder order)
 /*{{{ Misc. */
 
 
-/*EXTL_DOC
- * Returns the 'bottom' of \var{ws}.
- */
-EXTL_EXPORT_MEMBER
-WRegion *group_bottom(WGroup *ws)
-{
-    return (ws->bottom!=NULL ? ws->bottom->reg : NULL);
-}
-
-
 /*EXTL_DOC
  * Iterate over managed regions of \var{ws} until \var{iterfn} returns
  * \code{false}.
@@ -1198,14 +1232,31 @@ Window group_xwindow(const WGroup *ws)
 }
 
 
-WRegion *region_group_if_bottom(WRegion *reg)
+/*EXTL_DOC
+ * Returns the group of \var{reg}, if it is managed by one,
+ * and \var{reg} itself otherwise.
+ */
+/*EXTL_EXPORT_MEMBER
+WRegion *region_group_of(WRegion *reg)
+{
+    WRegion *mgr=REGION_MANAGER(reg);
+    
+    return (OBJ_IS(mgr, WGroup) ? mgr : reg);
+}*/
+
+
+/*EXTL_DOC
+ * Returns the group of \var{reg}, if \var{reg} is its bottom,
+ * and \var{reg} itself otherwise.
+ */
+EXTL_EXPORT_MEMBER
+WRegion *region_groupleader_of(WRegion *reg)
 {
     WGroup *grp=REGION_MANAGER_CHK(reg, WGroup);
     
-    if(grp!=NULL && group_bottom(grp)==reg)
-        return (WRegion*)grp;
-    else
-        return reg;
+    return ((grp!=NULL && group_bottom(grp)==reg)
+            ? (WRegion*)grp
+            : reg);
 }
 
 
@@ -1280,8 +1331,6 @@ void group_do_load(WGroup *ws, ExtlTab tab)
         
         extl_unref_table(substab);
     }
-
-    ws->bottom_last_close=extl_table_is_bool_set(tab, "bottom_last_close");
 }
 
 
@@ -1331,11 +1380,8 @@ static DynFunTab group_dynfuntab[]={
     {(DynFun*)region_get_configuration, 
      (DynFun*)group_get_configuration},
 
-    {(DynFun*)region_may_destroy,
-     (DynFun*)group_may_destroy},
-
-    {(DynFun*)region_managed_may_destroy,
-     (DynFun*)group_managed_may_destroy},
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)group_managed_disposeroot},
 
     {(DynFun*)region_current,
      (DynFun*)group_current},
index cfc1b600332d1b75f1c0f611a8f928ea22b4a938..d9a37ea90e133cfbae22794e8ae603a04ca32c8a 100644 (file)
@@ -57,7 +57,6 @@ DECLCLASS(WGroup){
     WStacking *current_managed;
     WStacking *bottom;
     Window dummywin;
-    uint bottom_last_close:1;
 };
 
 
@@ -91,9 +90,12 @@ extern void group_manage_stdisp(WGroup *ws, WRegion *stdisp,
 
 extern void group_managed_remove(WGroup *ws, WRegion *reg);
 
+extern void group_managed_notify(WGroup *ws, WRegion *reg, WRegionNotify how);
+
 extern WRegion *group_bottom(WGroup *ws);
+extern bool group_set_bottom(WGroup *ws, WRegion *reg);
 
-extern bool group_rescue_clientwins(WGroup *ws, WPHolder *ph);
+extern bool group_rescue_clientwins(WGroup *ws, WRescueInfo *info);
 
 extern bool group_rqclose(WGroup *ws);
 extern bool group_rqclose_relocate(WGroup *ws);
@@ -104,7 +106,9 @@ extern bool group_managed_rqorder(WGroup *grp, WRegion *sub,
 extern WStacking *group_find_stacking(WGroup *ws, WRegion *r);
 extern WStacking *group_find_to_focus(WGroup *ws, WStacking *to_try);
 
-extern WRegion *region_group_if_bottom(WRegion *reg);
+extern WRegion *region_groupleader_of(WRegion *reg);
+/*extern WRegion *region_group_of(WRegion *reg);*/
+
 
 typedef WStackingFilter WGroupIterFilter;
 typedef WStackingIterTmp WGroupIterTmp;
index 463b16e8a5eb277f1d6407e676eab85fd82fe14c..f3c2da9b2eed396d3c1e36ead232b89aeaceb8a6 100644 (file)
@@ -19,6 +19,7 @@
 #include "resize.h"
 #include "gr.h"
 #include "event.h"
+#include "strings.h"
 
 
 /*{{{ Init/deinit */
@@ -198,9 +199,21 @@ static void infowin_resize(WInfoWin *p)
  * Set contents of the info window.
  */
 EXTL_EXPORT_MEMBER
-void infowin_set_text(WInfoWin *p, const char *str)
+void infowin_set_text(WInfoWin *p, const char *str, int maxw)
 {
-    infowin_do_set_text(p, str);
+    bool set=FALSE;
+    
+    if(maxw>0 && p->brush!=NULL){
+        char *tmp=grbrush_make_label(p->brush, str, maxw);
+        if(tmp!=NULL){
+            infowin_do_set_text(p, tmp);
+            free(tmp);
+            set=TRUE;
+        }
+    }
+    
+    if(!set)
+        infowin_do_set_text(p, str);
 
     infowin_resize(p);
     
index e51396b3e7cf0cccd9c4bda5e1f68d1ad8686791..799c128d3b54d0763117bf3562020ffa4104f2c4 100644 (file)
@@ -37,7 +37,7 @@ extern WInfoWin *create_infowin(WWindow *parent, const WFitParams *fp,
 
 extern void infowin_deinit(WInfoWin *p);
 
-extern void infowin_set_text(WInfoWin *p, const char *s);
+extern void infowin_set_text(WInfoWin *p, const char *s, int maxw);
 extern GrStyleSpec *infowin_stylespec(WInfoWin *p);
 
 extern WRegion *infowin_load(WWindow *par, const WFitParams *fp, ExtlTab tab);
index 62f616b985135b5ccbc94fc2483fccf70cfd7ba6..49da6c715f4dc04d7f3c80fd8e1a416c31bfff41 100644 (file)
@@ -56,6 +56,9 @@
 #include "group-cw.h"
 #include "group-ws.h"
 #include "llist.h"
+#include "exec.h"
+#include "screen-notify.h"
+
 
 #include "../version.h"
 #include "exports.h"
@@ -97,7 +100,7 @@ WHook *ioncore_deinit_hook=NULL;
 
 void ioncore_warn_nolog(const char *str)
 {
-    fprintf(stderr, "%s: %s\n", prog_execname(), str);
+    fprintf(stderr, "%s: %s\n", libtu_progname(), str);
 }
 
 
@@ -253,12 +256,12 @@ static bool init_messages(const char *localedir)
 
 #define INIT_HOOK_(NM)                             \
     NM=mainloop_register_hook(#NM, create_hook()); \
-    if(NM==NULL) return FALSE;
+    if(NM==NULL) return FALSE
 
-#define INIT_HOOK(NM, DFLT)                           \
-    INIT_HOOK_(NM)                                    \
-    if(!hook_add(NM, (void (*)())DFLT)) return FALSE;
+#define ADD_HOOK_(NM, FN)                          \
+    if(!hook_add(NM, (void (*)())FN)) return FALSE
 
+#define INIT_HOOK(NM, DFLT) INIT_HOOK_(NM); ADD_HOOK_(NM, DFLT)
 
 static bool init_hooks()
 {
@@ -271,11 +274,15 @@ static bool init_hooks()
     INIT_HOOK_(clientwin_unmapped_hook);
     INIT_HOOK_(clientwin_property_change_hook);
     
-    INIT_HOOK(region_notify_hook, ioncore_frame_quasiactivation_notify);
+    INIT_HOOK_(region_notify_hook);
+    ADD_HOOK_(region_notify_hook, ioncore_frame_quasiactivation_notify);
+    ADD_HOOK_(region_notify_hook, ioncore_screen_activity_notify);
+    
     INIT_HOOK(clientwin_do_manage_alt, clientwin_do_manage_default);
     INIT_HOOK(ioncore_handle_event_alt, ioncore_handle_event);
     INIT_HOOK(region_do_warp_alt, region_do_warp_default);
-
+    INIT_HOOK(ioncore_exec_environ_hook, ioncore_setup_environ);
+    
     mainloop_sigchld_hook=mainloop_register_hook("ioncore_sigchld_hook",
                                                  create_hook());
     mainloop_sigusr2_hook=mainloop_register_hook("ioncore_sigusr2_hook",
@@ -321,6 +328,7 @@ static bool init_global()
     ioncore_g.screens=NULL;
     ioncore_g.focus_next=NULL;
     ioncore_g.warp_next=FALSE;
+    ioncore_g.focus_next_source=IONCORE_FOCUSNEXT_OTHER;
     
     ioncore_g.focus_current=NULL;
 
@@ -330,6 +338,9 @@ static bool init_global()
     ioncore_g.opaque_resize=0;
     ioncore_g.warp_enabled=TRUE;
     ioncore_g.switchto_new=TRUE;
+    ioncore_g.no_mousefocus=FALSE;
+    ioncore_g.unsqueeze_enabled=TRUE;
+    ioncore_g.autoraise=TRUE;
     
     ioncore_g.enc_utf8=FALSE;
     ioncore_g.enc_sb=TRUE;
@@ -354,6 +365,8 @@ static bool init_global()
     INITSTR(pseudoinactivated);
     INITSTR(tag);
     INITSTR(deinit);
+    INITSTR(map);
+    INITSTR(unmap);
     
     return TRUE;
 }
index 98d86a2c4b2a8041ae74f4191820126486250347..42860548298e9712d6f302b8560e3d6bab1c7052 100644 (file)
@@ -63,34 +63,47 @@ function ioncore.getctxmenu(name)
     return menus["ctxmenu-"..name]
 end
 
-
-function ioncore.evalmenu(menu, args)
+function ioncore.evalmenu(menu, ...)
     if type(menu)=="string" then
-        return ioncore.evalmenu(menus[menu], args)
+        return ioncore.evalmenu(menus[menu], ...)
     elseif type(menu)=="function" then
-        if args then
-            return menu(unpack(args))
-        else
-            return menu()
-        end
+        return menu(...)
     elseif type(menu)=="table" then
         return menu
     end
 end
 
-
 --DOC
 -- Use this function to define normal menu entries. The string \var{name} 
--- is the string shown in the visual representation of menu, and the
--- parameter \var{cmd} and \var{guard} are similar to those of
--- \fnref{ioncore.defbindings}.
-function ioncore.menuentry(name, cmd, guard)
+-- is the string shown in the visual representation of menu. The
+-- parameter \var{cmd} and \var{guard_or_opts} (when string) are similar
+-- to those of \fnref{ioncore.defbindings}.  If \var{guard_or_opts} is
+-- a table, it may contains the \var{guard} field, and the \var{priority}
+-- field, for controlling positioning of entries in context menus.
+-- (The default priority is 1 for most entries, and -1 for auto-generated
+-- submenus.)
+function ioncore.menuentry(name, cmd, guard_or_opts)
+    local guard
+    local opts
+    
+    if type(guard_or_opts)=="string" then
+        guard=guard_or_opts
+    elseif type(guard_or_opts)=="table" then
+        opts=guard_or_opts
+        guard=opts.guard
+    end
+    
     local fn, gfn=ioncore.compile_cmd(cmd, guard)
     if fn then
-        return {name=ioncore.gettext(name), func=fn, guard_func=gfn}
+        return table.append({
+                   name=ioncore.gettext(name), 
+                   func=fn, 
+                   guard_func=gfn, 
+               }, opts or {})
     end
 end
 
+
 --DOC
 -- Use this function to define menu entries for submenus. The parameter
 -- \fnref{sub_or_name} is either a table of menu entries or the name
@@ -100,17 +113,12 @@ end
 -- \var{options.noautoexpand} that will cause \fnref{mod_query.query_menu}
 -- to not automatically expand this submenu.
 function ioncore.submenu(name, sub_or_name, options)
-    if not options then
-        options={}
-    end
-    return {
-        name=ioncore.gettext(name),
-        submenu_fn=function()
-                       return ioncore.evalmenu(sub_or_name)
-                   end,
-        initial=options.initial,
-        noautoexpand=options.noautoexpand,
-    }
+    return table.append({
+               name=ioncore.gettext(name),
+               submenu_fn=function()
+                              return ioncore.evalmenu  (sub_or_name)
+                          end,
+           }, options or {})
 end
 
 
@@ -175,11 +183,16 @@ local function focuslist(do_act)
     end
     
     if do_act then
+        -- Windows with activity first
         ioncore.activity_i(iter_act)
     end
     
+    -- The ones that have been focused in their lifetime
     ioncore.focushistory_i(iter_foc)
     
+    -- And then the rest
+    ioncore.clientwin_i(iter_foc)
+    
     return entries
 end
 
@@ -329,7 +342,7 @@ local function modeparts(mode)
 end
 
 
-local function get_ctxmenu(reg, sub, is_par)
+local function get_ctxmenu(reg, sub)
     local m={}
     
     local function cp(m2)
@@ -355,11 +368,7 @@ local function get_ctxmenu(reg, sub, is_par)
     
     local function add_ctxmenu(m2, use_label)
         if m2 then
-            if is_par then
-                m2=cp(m2)
-            end
-
-            m=table.icat(m, m2)
+            m=table.icat(m, cp(m2))
             m.label=(use_label and m2.label) or m.label
         end
     end
@@ -381,23 +390,49 @@ local function get_ctxmenu(reg, sub, is_par)
     return m
 end
 
-function menus.ctxmenu(reg, sub)
-    local m=get_ctxmenu(reg, sub, false);
+
+local function sortmenu(m)
+    local v=1/2
+    
+    for _, e in ipairs(m) do
+        e.priority=(e.priority or 1)+v
+        v=v/2
+    end
+    
+    table.sort(m, function(e1, e2) return e1.priority > e2.priority end)
+    
+    return m
+end
+
+
+function menus.ctxmenu(reg, sub_or_chld)
+    local m, r, s
     
-    sub=reg
-    reg=reg:manager()
+    -- First, stuff between reg (inclusive) and sub_or_chld (inclusive)
+    -- at the top level in the menu.
+    r=(sub_or_chld or reg)
+    while r and s~=reg do
+        local mm=get_ctxmenu(r, s)
+        m=((m and table.icat(mm, m)) or mm)
+        s=r
+        r=r:manager()
+    end
+    
+    m=(m or {})
     
-    while reg do
-        local mm = get_ctxmenu(reg, sub, true)
+    -- Then stuff below reg (exclusive) as submenus
+    while r do
+        local mm = get_ctxmenu(r, s)
         if #mm>0 then
             local nm=mm.label or obj_typename(reg)
-            table.insert(m, ioncore.submenu(nm, mm))
+            local tmp=ioncore.submenu(nm, sortmenu(mm), {priority=-1})
+            table.insert(m, tmp)
         end
-        sub=reg
-        reg=reg:manager()
+        s=r
+        r=r:manager()
     end
     
-    return m
+    return sortmenu(m)
 end
 
 -- }}}
index 3b24b668e5ac2507f120e79199ae650a925aef2c..4637279d798fa7c108b32a97a6c4ae58927b3f53 100644 (file)
@@ -80,10 +80,24 @@ function ioncore.TR(s, ...)
 end
 
 
---[[DOC
--- Run \var{cmd} with the environment variable DISPLAY set to point to the
--- root window of the X screen \var{reg} is on.
-function ioncore.exec_on(reg, cmd)
-    return ioncore.do_exec_rw(reg:rootwin_of(), cmd)
+--DOC
+-- Attach tagged regions to \var{reg}. The method of attach
+-- depends on the types of attached regions and whether \var{reg} 
+-- implements \code{attach_framed} and \code{attach}. If \var{param}
+-- is not set, the default of \verb!{switchto=true}! is used.
+function ioncore.tagged_attach(reg, param)
+    if not param then
+        param={switchto=true}
+    end
+    local tagged=function() return ioncore.tagged_first(true) end
+    for r in tagged do
+        local fn=((not obj_is(r, "WWindow") and reg.attach_framed) 
+                  or reg.attach)
+        
+        if not (fn and fn(reg, r, param)) then
+            return false
+        end
+    end
+    return true
 end
---]]
+
index a908d3e29d896ffeac116031bab7ff488a687065..8b1f6cedb49b1fab5da2a5541f04ed78b7071c81 100644 (file)
@@ -123,8 +123,7 @@ function ioncore.exec_on(reg, cmd, merr_internal)
             cmd='XTERMCMD='..string.shell_safe(XTERM)..' '..cmd
         end
     end
-    return ioncore.do_exec_rw(reg:rootwin_of(), cmd, 
-                              ioncore.get_dir_for(reg), 
+    return ioncore.do_exec_on(reg, cmd, ioncore.get_dir_for(reg), 
                               merr_internal)
 end
 
index 012a93147fca2472a90b3892dfd994224161b7ab..b4dbc7b058002d186c1d8f7d82e9dd76aa394948 100644 (file)
@@ -137,6 +137,8 @@ void moveresmode_accel(WMoveresMode *mode, int *wu, int *hu, int accel_mode)
 static ExtlExportedFn *moveres_safe_fns[]={
     (ExtlExportedFn*)&moveresmode_resize,
     (ExtlExportedFn*)&moveresmode_move,
+    (ExtlExportedFn*)&moveresmode_rqgeom_extl,
+    (ExtlExportedFn*)&moveresmode_geom,
     (ExtlExportedFn*)&moveresmode_finish,
     (ExtlExportedFn*)&moveresmode_cancel,
     NULL
@@ -309,6 +311,33 @@ void moveresmode_move(WMoveresMode *mode, int horizmul, int vertmul)
 }
 
 
+/*EXTL_DOC
+ * Request exact geometry in move/resize mode. For details on parameters,
+ * see \fnref{WRegion.rqgeom}.
+ */
+EXTL_EXPORT_AS(WMoveresMode, rqgeom)
+ExtlTab moveresmode_rqgeom_extl(WMoveresMode *mode, ExtlTab g)
+{
+    WRQGeomParams rq=RQGEOMPARAMS_INIT;
+    WRectangle res;
+    
+    rqgeomparams_from_table(&rq, &mode->geom, g);
+    
+    moveresmode_rqgeom(mode, &rq, &res);
+    
+    return extl_table_from_rectangle(&res);
+}
+
+/*EXTL_DOC
+ * Returns current geometry.
+ */
+EXTL_EXPORT_MEMBER
+ExtlTab moveresmode_geom(WMoveresMode *mode)
+{
+    return extl_table_from_rectangle(&mode->geom);
+}
+
+
 /*EXTL_DOC
  * Return from move/resize mode and apply changes unless opaque
  * move/resize is enabled.
index a3841c03eb0b0d24aaca63a5132dd5d98a1e6859..637cf63a0194408c20e7f8e8ea117af4b0852b2c 100644 (file)
@@ -28,6 +28,8 @@ extern void moveresmode_move(WMoveresMode *mode,
                              int horizmul, int vertmul);
 extern void moveresmode_resize(WMoveresMode *mode, 
                                int left, int right, int top, int bottom);
+extern ExtlTab moveresmode_geom(WMoveresMode *mode);
+extern ExtlTab moveresmode_rqgeom_extl(WMoveresMode *mode, ExtlTab g);
 extern void moveresmode_accel(WMoveresMode *mode, 
                               int *wu, int *hu, int accel_mode);
 
index fda8d7b6117fcb6198d6403a282e1a32ef65ac69..2eb6f38b8f97e02bb2cfb54402cc6c417867338a 100644 (file)
@@ -22,6 +22,7 @@
 #include "extlconv.h"
 #include "return.h"
 #include "conf.h"
+#include "detach.h"
 #include "group-ws.h"
 
 
@@ -135,15 +136,56 @@ static bool handle_target_winprops(WClientWin *cwin, const WManageParams *param,
 }
 
 
+static bool try_fullscreen(WClientWin *cwin, WScreen *dflt, 
+                           const WManageParams *param)
+{
+    WScreen *fs_scr=NULL;
+    bool fs=FALSE, tmp;
+    
+    /* Check fullscreen mode. (This is intentionally not done
+     * for transients and windows with target winprops.)
+     */
+    if(extl_table_gets_b(cwin->proptab, "fullscreen", &tmp)){
+        if(!tmp)
+            return FALSE;
+        fs_scr=dflt;
+    }
+
+    if(fs_scr==NULL)
+        fs_scr=netwm_check_initial_fullscreen(cwin);
+
+    if(fs_scr==NULL)
+        fs_scr=clientwin_fullscreen_chkrq(cwin, param->geom.w, param->geom.h);
+    
+    if(fs_scr!=NULL){
+        WPHolder *fs_ph=region_prepare_manage((WRegion*)fs_scr, cwin, param,
+                                              MANAGE_REDIR_STRICT_NO);
+        
+        if(fs_ph!=NULL){
+            int swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0);
+            
+            cwin->flags|=CLIENTWIN_FS_RQ;
+            
+            fs=pholder_attach(fs_ph, swf, (WRegion*)cwin);
+            
+            if(!fs)
+                cwin->flags&=~CLIENTWIN_FS_RQ;
+                
+            destroy_obj((Obj*)fs_ph);
+        }
+    }
+
+    return fs;
+}
+
+
 bool clientwin_do_manage_default(WClientWin *cwin, 
                                  const WManageParams *param)
 {
-    WRegion *r=NULL, *r2;
     WScreen *scr=NULL;
     WPHolder *ph=NULL;
-    int fs=-1;
-    int swf;
-    bool ok, tmp;
+    int swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0);
+    bool ok, uq=FALSE;
 
     /* Find a suitable screen */
     scr=clientwin_find_suitable_screen(cwin, param);
@@ -160,6 +202,7 @@ bool clientwin_do_manage_default(WClientWin *cwin,
         assert(param->tfor!=cwin);
         ph=region_prepare_manage_transient((WRegion*)param->tfor, cwin, 
                                            param, 0);
+        uq=TRUE;
     }
 
     if(ph==NULL){
@@ -167,46 +210,30 @@ bool clientwin_do_manage_default(WClientWin *cwin,
         ph=region_prepare_manage((WRegion*)scr, cwin, param,
                                  MANAGE_REDIR_PREFER_YES);
 
-        /* Check fullscreen mode. (This is intentionally not done
-         * for transients and windows with target winprops.)
-         */
-        if(extl_table_gets_b(cwin->proptab, "fullscreen", &tmp))
-            fs=tmp;
-
-        if(fs<0)
-            fs=netwm_check_initial_fullscreen(cwin, param->switchto);
-    
-        if(fs<0){
-            fs=clientwin_check_fullscreen_request(cwin, 
-                                                  param->geom.w,
-                                                  param->geom.h,
-                                                  param->switchto);
-        }
-    }
-
-    if(fs>0){
-        /* Full-screen mode succesfull. */
-        if(pholder_target(ph)==(WRegion*)scr){
-            /* Discard useless placeholder. */
+        if(try_fullscreen(cwin, scr, param)){
+            if(pholder_target(ph)!=(WRegion*)region_screen_of((WRegion*)cwin)){
+                WRegion *grp=region_groupleader_of((WRegion*)cwin);
+                if(region_do_set_return(grp, ph))
+                    return TRUE;
+            }
             destroy_obj((Obj*)ph);
             return TRUE;
         }
         
-        if(!region_do_set_return((WRegion*)cwin, ph))
-            destroy_obj((Obj*)ph);
-        
-        return TRUE;
     }
-        
+
     if(ph==NULL)
         return FALSE;
     
     /* Not in full-screen mode; use the placeholder to attach. */
     
-    swf=(param->switchto ? PHOLDER_ATTACH_SWITCHTO : 0);
     ok=pholder_attach(ph, swf, (WRegion*)cwin);
+    
     destroy_obj((Obj*)ph);
     
+    if(uq && ok)
+        ioncore_unsqueeze((WRegion*)cwin, FALSE);
+    
     return ok;
 }
 
@@ -294,6 +321,14 @@ bool region_manage_clientwin(WRegion *reg, WClientWin *cwin,
 /*{{{ Rescue */
 
 
+DECLSTRUCT(WRescueInfo){
+    WPHolder *ph;
+    WRegion *get_rescue;
+    bool failed_get;
+    bool test;
+};
+
+
 static WRegion *iter_children(void *st)
 {
     WRegion **nextp=(WRegion**)st;
@@ -303,50 +338,101 @@ static WRegion *iter_children(void *st)
 }
 
 
-bool region_rescue_child_clientwins(WRegion *reg, WPHolder *ph)
+bool region_rescue_child_clientwins(WRegion *reg, WRescueInfo *info)
 {
     WRegion *next=reg->children;
-    return region_rescue_some_clientwins(reg, ph, iter_children, &next);
+    return region_rescue_some_clientwins(reg, info, iter_children, &next);
 }
 
 
-bool region_rescue_some_clientwins(WRegion *reg, WPHolder *ph,
+bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
                                    WRegionIterator *iter, void *st)
 {
     bool res=FALSE;
     int fails=0;
 
+    if(info->failed_get)
+        return FALSE;
+    
     reg->flags|=REGION_CWINS_BEING_RESCUED;
     
     while(TRUE){
         WRegion *tosave=iter(st);
+        WClientWin *cwin;
         
         if(tosave==NULL)
             break;
         
-        if(!OBJ_IS(tosave, WClientWin)){
-            if(!region_rescue_clientwins(tosave, ph))
+        cwin=OBJ_CAST(tosave, WClientWin);
+        
+        if(cwin==NULL){
+            if(!region_rescue_clientwins(tosave, info)){
                 fails++;
-        }else{
-            if(!pholder_attach(ph, 0, tosave))
+                if(info->failed_get)
+                    break;
+            }
+        }else if(info->test){
+            fails++;
+            break;
+        }else if(!(cwin->flags&CLIENTWIN_UNMAP_RQ)){
+            if(info->ph==NULL){
+                info->ph=region_get_rescue_pholder(info->get_rescue);
+                if(info->ph==NULL){
+                    info->failed_get=TRUE;
+                    break;
+                }
+            }
+            if(!pholder_attach(info->ph, 0, (WRegion*)cwin))
                 fails++;
         }
     }
     
     reg->flags&=~REGION_CWINS_BEING_RESCUED;
 
-    return (fails==0);
+    return (fails==0 && !info->failed_get);
 }
 
 
-bool region_rescue_clientwins(WRegion *reg, WPHolder *ph)
+bool region_rescue_clientwins(WRegion *reg, WRescueInfo *info)
 {
     bool ret=FALSE;
-    CALL_DYN_RET(ret, bool, region_rescue_clientwins, reg, (reg, ph));
+    CALL_DYN_RET(ret, bool, region_rescue_clientwins, reg, (reg, info));
+    return ret;
+}
+
+
+bool region_rescue(WRegion *reg, WPHolder *ph_param)
+{
+    WRescueInfo info;
+    bool ret;
+    
+    info.ph=ph_param;
+    info.test=FALSE;
+    info.get_rescue=reg;
+    info.failed_get=FALSE;
+    
+    ret=region_rescue_clientwins(reg, &info);
+    
+    if(info.ph!=ph_param)
+        destroy_obj((Obj*)info.ph);
+    
     return ret;
 }
 
 
+bool region_rescue_needed(WRegion *reg)
+{
+    WRescueInfo info;
+    
+    info.ph=NULL;
+    info.test=TRUE;
+    info.get_rescue=reg;
+    info.failed_get=FALSE;
+    
+    return !region_rescue_clientwins(reg, &info);
+}
+
+
 /*}}}*/
 
 
index 5b81f3d0245bd9b256e04e15714826a726bddc43..45ddf6a6179ec9b894761fb5c43b44cf59ddf0d6 100644 (file)
@@ -84,9 +84,14 @@ extern WPHolder *region_prepare_manage_transient_default(WRegion *reg,
 
 /* Rescue */
 
-extern bool region_rescue_clientwins(WRegion *reg, WPHolder *ph);
-extern bool region_rescue_child_clientwins(WRegion *reg, WPHolder *ph);
-extern bool region_rescue_some_clientwins(WRegion *reg, WPHolder *ph,
+INTRSTRUCT(WRescueInfo);
+
+/* if ph is given, it is used, otherwise one is looked for when needed */
+extern bool region_rescue(WRegion *reg, WPHolder *ph);
+extern bool region_rescue_needed(WRegion *reg);
+extern bool region_rescue_clientwins(WRegion *reg, WRescueInfo *info);
+extern bool region_rescue_child_clientwins(WRegion *reg, WRescueInfo *info);
+extern bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
                                           WRegionIterator *iter, void *st);
 
 
index a202e7c51672b0565baacfb03f95539d230d3eb8..28dc48a1a58fe92a18ba812c3afb35ea92894fc3 100644 (file)
@@ -158,17 +158,6 @@ void mplex_deinit(WMPlex *mplex)
 }
 
 
-bool mplex_may_destroy(WMPlex *mplex)
-{
-    if(mplex->mgd!=NULL){
-        warn(TR("Refusing to destroy - not empty."));
-        return FALSE;
-    }
-    
-    return TRUE;
-}
-
-
 /*}}}*/
 
 
@@ -292,8 +281,8 @@ bool mplex_managed_i(WMPlex *mplex, ExtlFn iterfn)
 
 
 /*EXTL_DOC
- * Set index of \var{reg} within the multiplexer to \var{index} within 
- * the mutually exclusive list. Special values for \var{index} are:
+ * Set index of \var{reg} to \var{index} within the mutually exclusive 
+ * list of \var{mplex}. Special values for \var{index} are:
  * \begin{tabularx}{\linewidth}{lX}
  *   $-1$ & Last. \\
  *   $-2$ & After \fnref{WMPlex.mx_current}. \\
@@ -327,8 +316,6 @@ void mplex_set_index(WMPlex *mplex, WRegion *reg, int index)
         llist_unlink(&(mplex->mx_list), lnode);
     }
     
-    /* TODO: Support remove? */
-    
     after=llist_index_to_after(mplex->mx_list, mplex->mx_current, index);
     llist_link_after(&(mplex->mx_list), after, lnode);
     mplex_managed_changed(mplex, MPLEX_CHANGE_REORDER, FALSE, reg);
@@ -336,9 +323,9 @@ void mplex_set_index(WMPlex *mplex, WRegion *reg, int index)
 
 
 /*EXTL_DOC
- * Get index of \var{reg} within the multiplexer on list 1. The first region 
- * managed by \var{mplex} has index zero. If \var{reg} is not managed by 
- * \var{mplex}, -1 is returned.
+ * Get index of \var{reg} on the mutually exclusive list of \var{mplex}.
+ * The indices begin from zero.. If \var{reg} is not on the list,
+ * -1 is returned.
  */
 EXTL_SAFE
 EXTL_EXPORT_MEMBER
@@ -527,7 +514,7 @@ static void mplex_managed_rqgeom(WMPlex *mplex, WRegion *sub,
 /*{{{ Focus  */
 
 
-static WRegion *mplex_do_to_focus(WMPlex *mplex, WStacking *to_try)
+static WStacking *mplex_do_to_focus(WMPlex *mplex, WStacking *to_try)
 {
     WStacking *stacking=mplex_get_stacking(mplex);
     WStacking *st=NULL;
@@ -541,28 +528,54 @@ static WRegion *mplex_do_to_focus(WMPlex *mplex, WStacking *to_try)
     st=stacking_find_to_focus_mapped(stacking, to_try, NULL);
     
     if(st!=NULL)
-        return st->reg;
+        return st;
     else if(mplex->mx_current!=NULL)
-        return mplex->mx_current->st->reg;
+        return mplex->mx_current->st;
     else
         return NULL;
 }
 
 
-WRegion *mplex_to_focus(WMPlex *mplex)
+static WStacking *maybe_focusable(WRegion *reg)
 {
-    WRegion *reg=REGION_ACTIVE_SUB(mplex);
-    WStacking *to_try=NULL;
+    if(reg==NULL || !REGION_IS_MAPPED(reg))
+        return NULL;
+
+    return ioncore_find_stacking(reg);
+}
+
+
+static WStacking *stacking_within(WMPlex *mplex, WRegion *reg)
+{
+    while(reg!=NULL && REGION_MANAGER(reg)!=(WRegion*)mplex)
+        reg=REGION_MANAGER(reg);
     
-    if(reg!=NULL)
-        to_try=ioncore_find_stacking(reg);
+    return maybe_focusable(reg);
+}
+
 
+static WStacking *mplex_to_focus(WMPlex *mplex)
+{
+    WStacking *to_try=NULL;
+    WRegion *reg=NULL;
+    
+    to_try=maybe_focusable(REGION_ACTIVE_SUB(mplex));
+    
+    if(to_try==NULL){
+        /* Search focus history */
+        for(reg=ioncore_g.focus_current; reg!=NULL; reg=reg->active_next){
+            to_try=stacking_within(mplex, reg);
+            if(to_try!=NULL)
+                break;
+        }
+    }
+    
     return mplex_do_to_focus(mplex, to_try);
 }
 
 
-static WRegion *mplex_do_to_focus_on(WMPlex *mplex, WStacking *node,
-                                     WStacking *to_try)
+static WStacking *mplex_do_to_focus_on(WMPlex *mplex, WStacking *node,
+                                       WStacking *to_try)
 {
     WStacking *stacking=mplex_get_stacking(mplex);
     WStacking *st=NULL;
@@ -573,42 +586,40 @@ static WRegion *mplex_do_to_focus_on(WMPlex *mplex, WStacking *node,
     if(to_try!=NULL && (to_try->reg==NULL || !REGION_IS_MAPPED(to_try->reg)))
         to_try=NULL;
     
-    st=stacking_find_to_focus_mapped(stacking, to_try, node->reg);
-    
-    return (st!=NULL ? st->reg : NULL);
+    return stacking_find_to_focus_mapped(stacking, to_try, node->reg);
 }
 
 
-static WRegion *mplex_to_focus_on(WMPlex *mplex, WStacking *node,
-                                  WStacking *to_try)
+static WStacking *mplex_to_focus_on(WMPlex *mplex, WStacking *node,
+                                    WStacking *to_try)
 {
-    WRegion *reg;
     WGroup *grp=OBJ_CAST(node->reg, WGroup);
+    WStacking *st;
     
     if(grp!=NULL){
         if(to_try==NULL)
             to_try=grp->current_managed;
-        reg=mplex_do_to_focus_on(mplex, node, to_try);
-        if(reg!=NULL || to_try!=NULL)
-            return reg;
+        st=mplex_do_to_focus_on(mplex, node, to_try);
+        if(st!=NULL || to_try!=NULL)
+            return st;
         /* We don't know whether something is blocking focus here,
          * or if there was nothing to focus (as node->reg itself
          * isn't on the stacking list).
          */
     }
     
-    reg=mplex_do_to_focus(mplex, node);
-    return (reg==node->reg ? reg : NULL);
+    st=mplex_do_to_focus(mplex, node);
+    return (st==node ? st : NULL);
 }
 
 
 void mplex_do_set_focus(WMPlex *mplex, bool warp)
 {
     if(!MPLEX_MGD_UNVIEWABLE(mplex)){
-        WRegion *reg=mplex_to_focus(mplex);
+        WStacking *st=mplex_to_focus(mplex);
         
-        if(reg!=NULL){
-            region_do_set_focus(reg, warp);
+        if(st!=NULL){
+            region_do_set_focus(st->reg, warp);
             return;
         }
     }
@@ -630,25 +641,19 @@ static void mplex_do_remanage_stdisp(WMPlex *mplex, WRegion *sub)
     /* Move stdisp */
     if(sub!=NULL && CAN_MANAGE_STDISP(sub)){
         if(stdisp!=NULL){
-            WRegion *mgrw=region_managed_within((WRegion*)mplex, stdisp);
-            if(mgrw!=sub){
-                WRegion *mgr=REGION_MANAGER(stdisp);
-                if(mgr!=NULL){
-                    if(CAN_MANAGE_STDISP(mgr))
-                        region_unmanage_stdisp(mgr, FALSE, FALSE);
-                    region_detach_manager(stdisp);
-                }
-                
-                region_manage_stdisp(sub, stdisp, 
-                                     &(mplex->stdispinfo));
+            WRegion *omgr=REGION_MANAGER(stdisp);
+            if(omgr!=sub && omgr!=NULL){
+                if(CAN_MANAGE_STDISP(omgr))
+                    region_unmanage_stdisp(omgr, FALSE, FALSE);
+                region_detach_manager(stdisp);
             }
+            
+            region_manage_stdisp(sub, stdisp, 
+                                 &(mplex->stdispinfo));
         }else{
             region_unmanage_stdisp(sub, TRUE, FALSE);
         }
-    }/*else if(stdisp!=NULL){
-        region_detach_manager(stdisp);
-        region_unmap(stdisp);
-    }*/
+    }
 }
 
 
@@ -699,11 +704,13 @@ static void mplex_do_node_display(WMPlex *mplex, WStacking *node,
          * no visible netscape windows.
          */
         {
-            #warning "TODO: less ugly hack"
             WGroup *grp=(WGroup*)OBJ_CAST(sub, WGroupCW);
-            if(grp!=NULL && grp->bottom!=NULL){
-                region_managed_rqorder((WRegion*)grp, grp->bottom->reg, 
-                                       REGION_ORDER_BACK);
+            if(grp!=NULL){
+                WRegion *bottom=group_bottom(grp);
+                if(bottom!=NULL){
+                    region_managed_rqorder((WRegion*)grp, bottom,
+                                           REGION_ORDER_BACK);
+                }
             }
         }
         
@@ -715,7 +722,7 @@ static void mplex_do_node_display(WMPlex *mplex, WStacking *node,
 
 static bool mplex_refocus(WMPlex *mplex, WStacking *node, bool warp)
 {
-    WRegion *foc=NULL;
+    WStacking *foc=NULL;
     bool ret=TRUE;
     
     if(node!=NULL){
@@ -728,8 +735,8 @@ static bool mplex_refocus(WMPlex *mplex, WStacking *node, bool warp)
         foc=mplex_to_focus(mplex);
     }
     
-    if(foc!=NULL /* && !REGION_IS_ACTIVE(foc) */ )
-        region_maybewarp(foc, warp);
+    if(foc!=NULL)
+        region_maybewarp(foc->reg, warp);
     
     return ret;
 }
@@ -739,7 +746,7 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node,
                             WStacking *sub, int flags, 
                             WPrepareFocusResult *res)
 {
-    WRegion *foc;
+    WStacking *foc;
     
     if(sub==NULL && node==NULL)
         return FALSE;
@@ -757,13 +764,20 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node,
         foc=mplex_do_to_focus(mplex, sub);
 
     if(foc!=NULL){
-        res->reg=foc;
+        if(ioncore_g.autoraise && 
+           !(flags&REGION_GOTO_ENTERWINDOW) &&
+           foc->level>STACKING_LEVEL_BOTTOM){
+            WStacking **stackingp=mplex_get_stackingp(mplex);
+            stacking_restack(stackingp, foc, None, NULL, NULL, FALSE);
+        }
+        
+        res->reg=foc->reg;
         res->flags=flags;
         
         if(sub==NULL)
-            return (foc==node->reg);
+            return (foc==node);
         else
-            return (foc==sub->reg);
+            return (foc==sub);
     }else{
         return FALSE;
     }
@@ -940,13 +954,8 @@ static WRegion *do_navi(WMPlex *mplex, WStacking *sti,
             if(OBJ_IS(st->reg, WGroup)){
                 /* WGroup navigation code should respect modal stuff. */
                 WRegion *res=region_navi_cont((WRegion*)mplex, st->reg, data);
-                if(res!=NULL){
-                    if(res!=st->reg){
-                        return res;
-                    }else{
-                        #warning "TODO: What to do?"
-                    }
-                }
+                if(res!=NULL && res!=st->reg)
+                    return res;
             }else{
                 if(st->level>=min_level && !PASSIVE(st))
                     return region_navi_cont((WRegion*)mplex, st->reg, data);
@@ -1084,12 +1093,20 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     WLListNode *lnode=NULL;
     WMPlexAttachParams *param=&ph->param;
     bool mx_was_empty, sw, modal, mcf, hidden;
+    WSizePolicy szplcy;
     uint level;
     
     mcf=region_may_control_focus((WRegion*)mplex);
     
     mx_was_empty=(mplex->mx_list==NULL);
     
+    szplcy=((param->flags&MPLEX_ATTACH_SIZEPOLICY &&
+             param->szplcy!=SIZEPOLICY_DEFAULT)
+            ? param->szplcy
+            : (param->flags&MPLEX_ATTACH_UNNUMBERED
+               ? SIZEPOLICY_FULL_BOUNDS
+               : SIZEPOLICY_FULL_EXACT));
+
     modal=(param->flags&MPLEX_ATTACH_LEVEL
            ? param->level>=STACKING_LEVEL_MODAL1
            : param->flags&MPLEX_ATTACH_MODAL);
@@ -1113,7 +1130,6 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     
     hidden=(hidden || (!sw && !(param->flags&MPLEX_ATTACH_UNNUMBERED)));
     
-    
     node=create_stacking();
     
     if(node==NULL)
@@ -1142,7 +1158,7 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     }
 
     node->hidden=TRUE;
-    node->szplcy=param->szplcy;
+    node->szplcy=szplcy;
     node->level=level;
     
     if(lnode!=NULL){
@@ -1163,6 +1179,19 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     
     region_set_manager(reg, (WRegion*)mplex);
     
+    if(!(param->flags&MPLEX_ATTACH_WHATEVER)){
+        WFitParams fp;
+        
+        mplex_managed_geom(mplex, &(fp.g));
+        
+        sizepolicy(&node->szplcy, reg, 
+                   (param->flags&MPLEX_ATTACH_GEOM ? &(param->geom) : NULL),
+                   0, &fp);
+        
+        if(rectangle_compare(&fp.g, &REGION_GEOM(reg))!=RECTANGLE_SAME)
+            region_fitrep(reg, NULL, &fp);
+    }
+    
     if(!hidden)
         mplex_do_node_display(mplex, node, FALSE);
     else
@@ -1182,37 +1211,19 @@ WRegion *mplex_do_attach_pholder(WMPlex *mplex, WMPlexPHolder *ph,
                                  WRegionAttachData *data)
 {
     WMPlexAttachParams *param=&(ph->param);
-    WSizePolicy szplcy=param->szplcy;
     WFitParams fp;
-    WRegion *reg;
-    
-    param->szplcy=(param->flags&MPLEX_ATTACH_SIZEPOLICY &&
-                   param->szplcy!=SIZEPOLICY_DEFAULT
-                   ? param->szplcy
-                   : (param->flags&MPLEX_ATTACH_UNNUMBERED
-                      ? SIZEPOLICY_FULL_BOUNDS
-                      : SIZEPOLICY_FULL_EXACT));
-    
-    mplex_managed_geom(mplex, &(fp.g));
-    
-    sizepolicy(&param->szplcy, NULL, 
-               (param->flags&MPLEX_ATTACH_GEOM 
-                ? &(param->geom)
-                : NULL),
-               0, &fp);
     
-    if(param->flags&MPLEX_ATTACH_WHATEVER)
-        fp.mode|=REGION_FIT_WHATEVER;
-    
-    reg=region_attach_helper((WRegion*)mplex, 
-                             (WWindow*)mplex, &fp,
-                             (WRegionDoAttachFn*)mplex_do_attach_final,
-                             (void*)ph, data);
+    if(param->flags&MPLEX_ATTACH_GEOM)
+        fp.g=param->geom;
+    else
+        mplex_managed_geom(mplex, &(fp.g));
     
-    /* restore */
-    ph->param.szplcy=szplcy;
+    fp.mode=REGION_FIT_WHATEVER|REGION_FIT_BOUNDS;
     
-    return reg;
+    return region_attach_helper((WRegion*)mplex, 
+                                (WWindow*)mplex, &fp,
+                                (WRegionDoAttachFn*)mplex_do_attach_final,
+                                (void*)ph, data);
 }
 
 
@@ -1274,15 +1285,6 @@ static void get_params(WMPlex *mplex, ExtlTab tab, int mask,
     int tmp;
     int ok=~mask;
     
-    if(mask==0 && extl_table_gets_i(tab, "layer", &tmp)){
-        /* backwards compatibility. No need to consider masked cases */
-        if(tmp==2){
-            par->flags|=MPLEX_ATTACH_UNNUMBERED;
-            if(!extl_table_is_bool_set(tab, "passive"))
-                par->flags|=MPLEX_ATTACH_MODAL;
-        }
-    }
-
     if(extl_table_gets_i(tab, "level", &tmp)){
         if(tmp>=0 && ok&MPLEX_ATTACH_LEVEL){
             par->flags|=MPLEX_ATTACH_LEVEL;
@@ -1372,8 +1374,7 @@ WRegion *mplex_attach_new_(WMPlex *mplex, WMPlexAttachParams *par,
  *  \var{hidden} & (boolean) Attach hidden, if not prevented
  *                  by e.g. the mutually exclusive list being empty.
  *                  This option overrides \var{switchto}. \\
- *  \var{sizepolicy} & (integer) Size policy.
- *                     (TODO: document them somewhere.) \\
+ *  \var{sizepolicy} & (integer) Size policy. \\
  *  \var{geom} & (table) Geometry specification. \\
  * \end{tabularx}
  * 
@@ -1389,22 +1390,6 @@ WRegion *mplex_attach_new(WMPlex *mplex, ExtlTab param)
 }
 
 
-/*EXTL_DOC
- * Attach all tagged regions to \var{mplex}.
- */
-EXTL_EXPORT_MEMBER
-void mplex_attach_tagged(WMPlex *mplex)
-{
-    WRegion *reg;
-    int flags=MPLEX_ATTACH_SWITCHTO;
-    
-    while((reg=ioncore_tagged_take_first())!=NULL){
-        mplex_attach_simple(mplex, reg, flags);
-        /*flags=0;*/
-    }
-}
-
-
 static bool mplex_handle_drop(WMPlex *mplex, int x, int y,
                               WRegion *dropped)
 {
@@ -1456,7 +1441,7 @@ WPHolder *mplex_prepare_manage(WMPlex *mplex, const WClientWin *cwin,
     
     ap.flags=((param->switchto ? MPLEX_ATTACH_SWITCHTO : 0)
               |MPLEX_ATTACH_SIZEPOLICY);
-    ap.szplcy=SIZEPOLICY_FULL_BOUNDS;
+    ap.szplcy=SIZEPOLICY_FULL_EXACT;
     
     mph=create_mplexpholder(mplex, NULL, &ap);
     
@@ -1546,17 +1531,17 @@ void mplex_managed_remove(WMPlex *mplex, WRegion *sub)
 }
 
 
-bool mplex_rescue_clientwins(WMPlex *mplex, WPHolder *ph)
+bool mplex_rescue_clientwins(WMPlex *mplex, WRescueInfo *info)
 {
     bool ret1, ret2;
     WMPlexIterTmp tmp;
     
     mplex_iter_init(&tmp, mplex);
-    ret1=region_rescue_some_clientwins((WRegion*)mplex, ph,
+    ret1=region_rescue_some_clientwins((WRegion*)mplex, info,
                                        (WRegionIterator*)mplex_iter,
                                        &tmp);
     
-    ret2=region_rescue_child_clientwins((WRegion*)mplex, ph);
+    ret2=region_rescue_child_clientwins((WRegion*)mplex, info);
     
     return (ret1 && ret2);
 }
@@ -1632,7 +1617,7 @@ bool mplex_set_stdisp(WMPlex *mplex, WRegion *reg,
     }
     
     if(oldstdisp!=NULL && oldstdisp!=reg)
-        region_dispose((WRegion*)oldstdisp, FALSE);
+        mainloop_defer_destroy((Obj*)oldstdisp);
     
     return TRUE;
 }
@@ -1904,7 +1889,6 @@ static void save_node(WMPlex *mplex, ExtlTab subs, int *n,
     st=region_get_configuration(node->reg);
     
     if(st!=extl_table_none()){
-        /*"TODO: better switchto saving? */
         if(mplex->mx_current!=NULL && node==mplex->mx_current->st)
             extl_table_sets_b(st, "switchto", TRUE);
         extl_table_sets_i(st, "sizepolicy", node->szplcy);
@@ -2075,9 +2059,6 @@ static DynFunTab mplex_dynfuntab[]={
     {(DynFun*)region_get_rescue_pholder_for,
      (DynFun*)mplex_get_rescue_pholder_for},
 
-    {(DynFun*)region_may_destroy,
-     (DynFun*)mplex_may_destroy},
-    
     {(DynFun*)region_navi_first,
      (DynFun*)mplex_navi_first},
     
index 829c84124c5ac4a0521f516c2a044b082fc816bb..21e4a81371976e8c350f37a79ab9363ea9636e9c 100644 (file)
@@ -140,12 +140,10 @@ extern WRegion *mplex_do_attach(WMPlex *mplex, WMPlexAttachParams *param,
 extern WRegion *mplex_do_attach_new(WMPlex *mplex, WMPlexAttachParams *param,
                                     WRegionCreateFn *fn, void *fn_param);
 
-extern void mplex_attach_tagged(WMPlex *mplex);
-
 extern void mplex_managed_remove(WMPlex *mplex, WRegion *reg);
 extern void mplex_child_removed(WMPlex *mplex, WRegion *sub);
 
-extern bool mplex_rescue_clientwins(WMPlex *mplex, WPHolder *ph);
+extern bool mplex_rescue_clientwins(WMPlex *mplex, WRescueInfo *info);
 
 extern WPHolder *mplex_prepare_manage(WMPlex *mplex, const WClientWin *cwin,
                                       const WManageParams *param, int redir);
@@ -176,7 +174,6 @@ extern bool mplex_managed_rqorder(WMPlex *mplex, WRegion *sub,
 /* Misc */
 
 extern WRegion *mplex_current(WMPlex *mplex);
-extern bool mplex_may_destroy(WMPlex *mplex);
 
 extern bool mplex_managed_i(WMPlex *mplex, ExtlFn iterfn);
 
@@ -188,8 +185,6 @@ extern WRegion *mplex_mx_current(WMPlex *mplex);
 extern void mplex_call_changed_hook(WMPlex *mplex, WHook *hook, 
                                     int mode, bool sw, WRegion *reg);
 
-extern WLListNode *mplex_find_node(WMPlex *mplex, WRegion *reg);
-
 extern void mplex_remanage_stdisp(WMPlex *mplex);
 
 /* Dynfuns */
index f6d089a2a5cc89fbbbcbec7fb9f1739c90a184ec..478ac2dd61e2152b5eb3a3cf88bed0af81fbb680 100644 (file)
@@ -245,7 +245,8 @@ WRegion *recreate_handler(WWindow *par,
 static WMPlexPHolder *get_head(WMPlexPHolder *ph)
 {
     while(1){
-        if(ph->prev->next==NULL)
+        /* ph->prev==NULL should not happen.. */
+        if(ph->prev==NULL || ph->prev->next==NULL)
             break;
         ph=ph->prev;
     }
index 7a10e6be580bc709429d7e866852b24c74c92658..71090386bd9364df7999969e88fe6559b5c168d7 100644 (file)
@@ -230,12 +230,12 @@ static WRegion *release(WRegionNaviData *data, WRegion *res)
 
 /*EXTL_DOC
  * Find region next from \var{reg} in direction \var{dirstr}
- * (up/down/left/right/next/prev/any). The table param may
+ * (up/down/left/right/next/prev/any). The table \var{param} may
  * contain the boolean field \var{nowrap}, instructing not to wrap 
  * around, and the \type{WRegion}s \var{no_ascend} and \var{no_descend},
- * and functions \var{ascend_filter} and \var{descend_filter} from
- * \var{WRegion}s (\var{to}, \var{from}), used to decide when to descend
- * or ascend into another region. (TODO: more detailed explanation.)
+ * and boolean functions \var{ascend_filter} and \var{descend_filter} 
+ * on \var{WRegion} pairs (\var{to}, \var{from}), are used to decide when
+ * to descend or ascend into another region.
  */
 EXTL_EXPORT
 WRegion *ioncore_navi_next(WRegion *reg, const char *dirstr, ExtlTab param)
@@ -273,10 +273,8 @@ WRegion *ioncore_navi_first(WRegion *reg, const char *dirstr, ExtlTab param)
 {
     WRegionNaviData data;
     
-    if(reg==NULL){
-        /* ??? */
+    if(reg==NULL)
         return NULL;
-    }
     
     if(!get_param(&data, dirstr, param))
         return NULL;
@@ -290,11 +288,9 @@ WRegion *ioncore_navi_first(WRegion *reg, const char *dirstr, ExtlTab param)
 
 static WRegion *do_goto(WRegion *res)
 {
-    if(res!=NULL){
-        /* TODO: deep rqorder? */
-        region_rqorder(res, REGION_ORDER_FRONT);
+    if(res!=NULL)
         region_goto(res);
-    }
+    
     return res;
 }
 
index d7c466e69cfd6c7c361d8d849456095c20b46a01..4f65cdf39cb85d7621c7ff425d7741644064b7dd 100644 (file)
@@ -22,6 +22,7 @@
 #include "focus.h"
 #include "xwindow.h"
 #include "extlconv.h"
+#include "group.h"
 
 
 /*{{{ Atoms */
@@ -73,8 +74,8 @@ void netwm_init_rootwin(WRootWin *rw)
     XChangeProperty(ioncore_g.dpy, WROOTWIN_ROOT(rw),
                     atom_net_supported, XA_ATOM,
                     32, PropModeReplace, (uchar*)atoms, N_NETWM);
-    /* Something else should probably be used as WM name here. */
-    p[0]=prog_execname();
+
+    p[0]=libtu_progbasename();
     xwindow_set_text_property(rw->dummy_win, atom_net_wm_name, p, 1);
 }
 
@@ -85,7 +86,7 @@ void netwm_init_rootwin(WRootWin *rw)
 /*{{{ _NET_WM_STATE */
 
 
-int netwm_check_initial_fullscreen(WClientWin *cwin, bool sw)
+WScreen *netwm_check_initial_fullscreen(WClientWin *cwin)
 {
 
     int i, n;
@@ -96,18 +97,16 @@ int netwm_check_initial_fullscreen(WClientWin *cwin, bool sw)
                    1, TRUE, (uchar**)&data);
     
     if(n<0)
-        return -1;
+        return NULL;
     
     for(i=0; i<n; i++){
-        if(data[i]==(long)atom_net_wm_state_fullscreen){
-            ret=region_enter_fullscreen((WRegion*)cwin, sw);
-            break;
-        }
+        if(data[i]==(long)atom_net_wm_state_fullscreen)
+            return region_screen_of((WRegion*)cwin);
     }
     
     XFree((void*)data);
 
-    return ret;
+    return NULL;
 }
 
 
@@ -145,9 +144,10 @@ static void netwm_state_change_rq(WClientWin *cwin,
     if(!REGION_IS_FULLSCREEN(cwin)){
         if(ev->data.l[0]==_NET_WM_STATE_ADD || 
            ev->data.l[0]==_NET_WM_STATE_TOGGLE){
+            WRegion *grp=region_groupleader_of((WRegion*)cwin);
             bool sw=clientwin_fullscreen_may_switchto(cwin);
             cwin->flags|=CLIENTWIN_FS_RQ;
-            if(!region_enter_fullscreen((WRegion*)cwin, sw))
+            if(!region_enter_fullscreen(grp, sw))
                 cwin->flags&=~CLIENTWIN_FS_RQ;
         }else{
             /* Should not be set.. */
@@ -156,9 +156,10 @@ static void netwm_state_change_rq(WClientWin *cwin,
     }else{
         if(ev->data.l[0]==_NET_WM_STATE_REMOVE || 
            ev->data.l[0]==_NET_WM_STATE_TOGGLE){
+            WRegion *grp=region_groupleader_of((WRegion*)cwin);
             bool sw=clientwin_fullscreen_may_switchto(cwin);
             cwin->flags&=~CLIENTWIN_FS_RQ;
-            region_leave_fullscreen((WRegion*)cwin, sw);
+            region_leave_fullscreen(grp, sw);
         }else{
             /* Set the flag */
             cwin->flags|=CLIENTWIN_FS_RQ;
index e566ca6c16383ba176a8d9c9d1296c1193ff6989..312f96b3880a9cb7789b09d3472c47305c504d76 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "common.h"
 #include "rootwin.h"
+#include "screen.h"
 
 #define _NET_WM_STATE_REMOVE        0    /* remove/unset property */
 #define _NET_WM_STATE_ADD           1    /* add/set property */
@@ -22,7 +23,7 @@
 extern void netwm_init();
 extern void netwm_init_rootwin(WRootWin *rw);
 
-extern int netwm_check_initial_fullscreen(WClientWin *cwin, bool switchto);
+extern WScreen *netwm_check_initial_fullscreen(WClientWin *cwin);
 extern void netwm_update_state(WClientWin *cwin);
 extern void netwm_delete_state(WClientWin *cwin);
 extern void netwm_set_active(WRegion *reg);
index 5fdb7b8aae991f5520bf2515ae445e109b63eea4..018de2ba3d1aae2011b52425b75b4ee4c141a285 100644 (file)
@@ -40,18 +40,6 @@ WRegion *pholder_do_attach(WPHolder *ph, int flags,
 }
 
 
-static WRegion *add_fn_reparent(WWindow *par, const WFitParams *fp, 
-                                WRegion *reg)
-{
-    if(!region_fitrep(reg, par, fp)){
-        warn(TR("Unable to reparent."));
-        return NULL;
-    }
-    region_detach_manager(reg);
-    return reg;
-}
-
-
 WRegion *pholder_attach_(WPHolder *ph, int flags, WRegionAttachData *data)
 {
     WPHolder *root=pholder_root(ph);
@@ -111,10 +99,9 @@ static bool pholder_do_check_reparent_default(WPHolder *ph, WRegion *reg)
 {
     WRegion *target=pholder_do_target(ph);
     
-    if(target==NULL)
-        return FALSE;
-    else
-        return region_attach_reparent_check(target, reg);
+    return (target==NULL 
+            ? FALSE
+            : region_ancestor_check(target, reg));
 }
 
 
index 671af84835cce79f6b4bed427ec111b4df3e25e3..f1dc9e763c8a4bd5b900568c4f42f6526b0b93f5 100644 (file)
@@ -137,7 +137,8 @@ static void call_button(WBinding *binding, XButtonEvent *ev)
         return;
 
     p_curr_event=(XEvent*)ev;
-    extl_call(binding->func, "oo", NULL, p_reg, p_subreg);
+    extl_call(binding->func, "ooo", NULL, p_reg, p_subreg, 
+              (p_reg!=NULL ? p_reg->active_sub : NULL));
     p_curr_event=NULL;
 }
 
index 68be25d32e8695ecaeb7ae0b62ac5388e4afea2d..10f7c28f851bfdff14bc8e888341a6c7d06d62ef 100644 (file)
@@ -152,12 +152,14 @@ void region_updategr(WRegion *reg)
 void region_map(WRegion *reg)
 {
     CALL_DYN(region_map, reg, (reg));
+    region_notify_change_(reg, ioncore_g.notifies.map);
 }
 
 
 void region_unmap(WRegion *reg)
 {
     CALL_DYN(region_unmap, reg, (reg));
+    region_notify_change_(reg, ioncore_g.notifies.unmap);
 }
 
 
@@ -280,14 +282,11 @@ void region_updategr_default(WRegion *reg)
 bool region_prepare_focus(WRegion *reg, int flags, 
                           WPrepareFocusResult *res)
 {
-    WRegion *mgr=REGION_MANAGER(reg);
-    WRegion *par=REGION_PARENT_REG(reg);
 
-    if(REGION_IS_MAPPED(reg) && region_may_control_focus(reg)){
-        res->reg=reg;
-        res->flags=0;
-        return TRUE;
-    }else{
+    if(!REGION_IS_ACTIVE(reg) || !REGION_IS_MAPPED(reg)){
+        WRegion *mgr=REGION_MANAGER(reg);
+        WRegion *par=REGION_PARENT_REG(reg);
+        
         if(mgr!=NULL){
             return region_managed_prepare_focus(mgr, reg, flags, res);
         }else if(par!=NULL){
@@ -296,11 +295,14 @@ bool region_prepare_focus(WRegion *reg, int flags,
             /* Just focus reg, if it has no manager, and parent can be 
              * focused. 
              */
+        }else if(!REGION_IS_MAPPED(reg)){
+            region_map(reg);
         }
-        res->reg=reg;
-        res->flags=flags;
-        return TRUE;
     }
+    
+    res->reg=reg;
+    res->flags=flags;
+    return TRUE;
 }
 
 
@@ -366,32 +368,10 @@ bool region_reparent(WRegion *reg, WWindow *par,
 /*{{{ Close */
 
 
-static bool region_rqclose_default(WRegion *reg, bool relocate)
+static void region_rqclose_default(WRegion *reg, bool relocate)
 {
-    WPHolder *ph;
-    bool refuse=TRUE, mcf;
-    
-    if((!relocate && !region_may_destroy(reg)) ||
-       !region_manager_allows_destroying(reg)){
-        return FALSE;
-    }
-    
-    ph=region_get_rescue_pholder(reg);
-    mcf=region_may_control_focus(reg);
-    
-    if(ph!=NULL){
-        refuse=!region_rescue_clientwins(reg, ph);
-        destroy_obj((Obj*)ph);
-    }
-
-    if(refuse){
-        warn(TR("Failed to rescue some client windows - not closing."));
-        return FALSE;
-    }
-
-    region_dispose(reg, mcf);
-    
-    return TRUE;
+    if(relocate || region_may_dispose(reg))
+        region_defer_rqdispose(reg);
 }
 
 
@@ -400,19 +380,16 @@ static bool region_rqclose_default(WRegion *reg, bool relocate)
  * depends on whether the particular type of region in question has
  * implemented the feature and, in case of client windows, whether
  * the client supports the \code{WM_DELETE} protocol (see also
- * \fnref{WClientWin.kill}). If the operation is likely to succeed,
- * \code{true} is returned, otherwise \code{false}. In most cases the
- * region will not have been actually destroyed when this function returns.
- * If \var{relocate} is not set, and \var{reg} manages other regions, it
- * will not be closed. Otherwise the managed regions will be attempted
- * to be relocated.
+ * \fnref{WClientWin.kill}). The region will not be destroyed when
+ * this function returns. To find out if and when it is destroyed,
+ * use the "deinit" notification. If \var{relocate} is not set, and
+ * \var{reg} manages other regions, it will not be closed. Otherwise
+ * the managed regions will be attempted to be relocated.
  */
 EXTL_EXPORT_MEMBER
-bool region_rqclose(WRegion *reg, bool relocate)
+void region_rqclose(WRegion *reg, bool relocate)
 {
-    bool ret=FALSE;
-    CALL_DYN_RET(ret, bool, region_rqclose, reg, (reg, relocate));
-    return ret;
+    CALL_DYN(region_rqclose, reg, (reg, relocate));
 }
 
 
@@ -421,9 +398,13 @@ static WRegion *region_rqclose_propagate_default(WRegion *reg,
 {
     if(maybe_sub==NULL)
         maybe_sub=region_current(reg);
-    if(maybe_sub!=NULL)
+    
+    if(maybe_sub!=NULL){
         return region_rqclose_propagate(maybe_sub, NULL);
-    return (region_rqclose(reg, FALSE) ? reg : NULL);
+    }else{
+        region_rqclose(reg, FALSE);
+        return reg;
+    }
 }
 
 
@@ -431,8 +412,8 @@ static WRegion *region_rqclose_propagate_default(WRegion *reg,
  * Recursively attempt to close a region or one of the regions managed by 
  * it. If \var{sub} is set, it will be used as the managed region, otherwise
  * \fnref{WRegion.current}\code{(reg)}. The object to be closed is
- * returned or NULL if nothing can be closed. Also see notes for
- * \fnref{WRegion.rqclose}.
+ * returned, or NULL if nothing can be closed. For further details, see
+ * notes for \fnref{WRegion.rqclose}.
  */
 EXTL_EXPORT_MEMBER
 WRegion *region_rqclose_propagate(WRegion *reg, WRegion *maybe_sub)
@@ -444,48 +425,104 @@ WRegion *region_rqclose_propagate(WRegion *reg, WRegion *maybe_sub)
 }
 
 
-bool region_may_destroy(WRegion *reg)
+bool region_may_dispose_default(WRegion *reg)
+{
+    bool res=region_rescue_needed(reg);
+    
+    if(res){
+        const char *name=region_name(reg);
+        warn(TR("Can not destroy %s: contains client windows."),
+             (name!=NULL ? name : TR("(unknown)")));
+    }
+    
+    return !res;
+}
+
+
+bool region_may_dispose(WRegion *reg)
 {
     bool ret=TRUE;
-    CALL_DYN_RET(ret, bool, region_may_destroy, reg, (reg));
+    CALL_DYN_RET(ret, bool, region_may_dispose, reg, (reg));
     return ret;
 }
 
 
-bool region_managed_may_destroy(WRegion *mgr, WRegion *reg)
+static WRegion *region_managed_disposeroot_default(WRegion *mgr, WRegion *reg)
 {
-    bool ret=TRUE;
-    CALL_DYN_RET(ret, bool, region_managed_may_destroy, mgr, (mgr, reg));
+    return reg;
+}
+
+
+WRegion *region_managed_disposeroot(WRegion *mgr, WRegion *reg)
+{
+    WRegion *ret=NULL;
+    CALL_DYN_RET(ret, WRegion*, region_managed_disposeroot, mgr, (mgr, reg));
     return ret;
 }
 
 
-bool region_manager_allows_destroying(WRegion *reg)
+WRegion *region_disposeroot(WRegion *reg)
 {
     WRegion *mgr=REGION_MANAGER(reg);
     
-    if(mgr==NULL)
-        return TRUE;
+    return (mgr!=NULL
+            ? region_managed_disposeroot(mgr, reg)
+            : reg);
+}
+
+
+bool region_rqdispose(WRegion *reg)
+{
+    WRegion *root;
+    
+    if(!region_may_dispose(reg))
+        return FALSE;
+    
+    root=region_disposeroot(reg);
     
-    return region_managed_may_destroy(mgr, reg);
+    if(root==NULL)
+        return FALSE;
+
+    return region_dispose(root);
 }
 
 
-void region_dispose(WRegion *reg, bool was_mcf)
+bool region_dispose_(WRegion *reg, bool not_simple)
 {
-    if(was_mcf){
-        WPHolder *ph=region_get_return(reg);
-        if(ph!=NULL)
-            pholder_goto(ph);
+    bool rescue=not_simple;
+    bool was_mcf=(not_simple && region_may_control_focus(reg));
+    WPHolder *ph=NULL;
+    
+    if(rescue){
+        if(!region_rescue(reg, NULL)){
+            warn(TR("Failed to rescue some client windows - not closing."));
+            return FALSE;
+        }
+    }
+
+    if(was_mcf)
+        ph=region_unset_get_return(reg);
+    
+    destroy_obj((Obj*)reg);
+    
+    if(ph!=NULL){
+        pholder_goto(ph);
+        destroy_obj((Obj*)ph);
     }
+    
+    return TRUE;
+}
 
-    mainloop_defer_destroy((Obj*)reg);
+
+bool region_dispose(WRegion *reg)
+{
+    return region_dispose_(reg, TRUE);
 }
 
 
-void region_dispose_(WRegion *reg)
+void region_defer_rqdispose(WRegion *reg)
 {
-    region_dispose(reg, region_may_control_focus(reg));
+    mainloop_defer_action((Obj*)reg, (WDeferredAction*)region_rqdispose);
 }
 
 
@@ -498,29 +535,11 @@ void region_dispose_(WRegion *reg)
 /* Routine to call to unmanage a region */
 void region_detach_manager(WRegion *reg)
 {
-    WRegion *mgr;
-    
-    mgr=REGION_MANAGER(reg);
+    WRegion *mgr=REGION_MANAGER(reg);
     
     if(mgr==NULL)
         return;
     
-#if 0
-    /* Restore activity state to non-parent manager */
-    if(region_may_control_focus(reg)){
-        WRegion *par=REGION_PARENT_REG(reg);
-        if(par!=NULL && mgr!=par && REGION_PARENT_REG(mgr)==par){
-            /* REGION_ACTIVE shouldn't be set for windowless regions
-             * but make the parent's active_sub point to it
-             * nevertheless so that region_may_control_focus can
-             * be made to work.
-             */
-            par->active_sub=mgr;
-            region_maybewarp_now(mgr, FALSE);
-        }
-    }
-#endif
-
     region_set_activity(reg, SETPARAM_UNSET);
 
     region_managed_remove(mgr, reg);
@@ -929,6 +948,9 @@ static DynFunTab region_dynfuntab[]={
     
     {(DynFun*)region_rescue_clientwins,
      (DynFun*)region_rescue_child_clientwins},
+     
+    {(DynFun*)region_may_dispose,
+     (DynFun*)region_may_dispose_default},
 
     {(DynFun*)region_prepare_manage,
      (DynFun*)region_prepare_manage_default},
@@ -938,6 +960,9 @@ static DynFunTab region_dynfuntab[]={
 
     {(DynFun*)region_managed_prepare_focus,
      (DynFun*)region_managed_prepare_focus_default},
+     
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)region_managed_disposeroot_default},
 
     {(DynFun*)region_rqclose_propagate,
      (DynFun*)region_rqclose_propagate_default},
index d30b4359536f61866161413a78e2d1556018b42c..33baf48e3d115e37ea23c6dae0be502e06f53617 100644 (file)
@@ -131,17 +131,17 @@ DYNFUN Window region_xwindow(const WRegion *reg);
 DYNFUN void region_activated(WRegion *reg);
 DYNFUN void region_inactivated(WRegion *reg);
 DYNFUN void region_updategr(WRegion *reg);
-DYNFUN bool region_rqclose(WRegion *reg, bool relocate);
+DYNFUN void region_rqclose(WRegion *reg, bool relocate);
 DYNFUN WRegion *region_rqclose_propagate(WRegion *reg, WRegion *maybe_sub);
 DYNFUN WRegion *region_current(WRegion *mgr);
 DYNFUN void region_notify_rootpos(WRegion *reg, int x, int y);
-DYNFUN bool region_may_destroy(WRegion *reg);
+DYNFUN bool region_may_dispose(WRegion *reg);
 DYNFUN WRegion *region_managed_control_focus(WRegion *mgr, WRegion *reg);
 DYNFUN void region_managed_remove(WRegion *reg, WRegion *sub);
 DYNFUN bool region_managed_prepare_focus(WRegion *reg, WRegion *sub, 
                                          int flags, WPrepareFocusResult *res);
 DYNFUN void region_managed_notify(WRegion *reg, WRegion *sub, WRegionNotify how);
-DYNFUN bool region_managed_may_destroy(WRegion *mgr, WRegion *reg);
+DYNFUN WRegion *region_managed_disposeroot(WRegion *mgr, WRegion *reg);
 DYNFUN bool region_managed_rqorder(WRegion *reg, WRegion *sub, 
                                    WRegionOrder order);
 
@@ -174,8 +174,11 @@ extern bool region_is_fully_mapped(WRegion *reg);
 
 extern void region_detach_manager(WRegion *reg);
 
-extern void region_dispose(WRegion *reg, bool was_mcf);
-extern void region_dispose_(WRegion *reg);
+extern WRegion *region_disposeroot(WRegion *reg);
+
+extern bool region_dispose(WRegion *reg);
+extern bool region_rqdispose(WRegion *reg);
+extern void region_defer_rqdispose(WRegion *reg);
 
 extern WWindow *region_parent(WRegion *reg);
 extern WRegion *region_manager(WRegion *reg);
@@ -190,8 +193,6 @@ extern Window region_root_of(const WRegion *reg);
 extern WScreen *region_screen_of(WRegion *reg);
 extern bool region_same_rootwin(const WRegion *reg1, const WRegion *reg2);
 
-extern bool region_manager_allows_destroying(WRegion *reg);
-
 extern WRegion *region_managed_within(WRegion *reg, WRegion *mgd);
 
 extern void region_set_manager_pseudoactivity(WRegion *reg);
index 33bfde01ada0f8f0fbb7f5a3ac833d49a56da9b6..ec94cdade243f3bcfe8c9844741fb29fa7ab3bb3 100644 (file)
@@ -317,6 +317,33 @@ WMoveresMode *region_begin_move(WRegion *reg, WDrawRubberbandFn *rubfn,
 }
 
 
+static void moveresmode_setorig(WMoveresMode *mode)
+{
+    mode->dx1=0;
+    mode->dx2=0;
+    mode->dy1=0;
+    mode->dy2=0;
+    mode->origgeom=mode->geom;
+}
+
+
+static void moveresmode_do_newgeom(WMoveresMode *mode, WRQGeomParams *rq)
+{    
+    if(XOR_RESIZE)
+        moveres_draw_rubberband(mode);
+    
+    if(mode->reg!=NULL){
+        rq->flags|=mode->rqflags;
+        region_rqgeom(mode->reg, rq, &mode->geom);
+    }
+    
+    moveres_draw_infowin(mode);
+    
+    if(XOR_RESIZE)
+        moveres_draw_rubberband(mode);
+}
+
+
 static void moveresmode_delta(WMoveresMode *mode, 
                               int dx1, int dx2, int dy1, int dy2,
                               WRectangle *rret)
@@ -387,26 +414,10 @@ static void moveresmode_delta(WMoveresMode *mode,
             rq.geom.y+=mode->origgeom.h-rq.geom.h;
     }
     
-    if(XOR_RESIZE)
-        moveres_draw_rubberband(mode);
+    moveresmode_do_newgeom(mode, &rq);
     
-    if(mode->reg!=NULL){
-        rq.flags=mode->rqflags;
-        region_rqgeom(mode->reg, &rq, &mode->geom);
-    }
-    
-    if(!mode->resize_cumulative){
-        mode->dx1=0;
-        mode->dx2=0;
-        mode->dy1=0;
-        mode->dy2=0;
-        mode->origgeom=mode->geom;
-    }
-    
-    moveres_draw_infowin(mode);
-    
-    if(XOR_RESIZE)
-        moveres_draw_rubberband(mode);
+    if(!mode->resize_cumulative)
+        moveresmode_setorig(mode);
     
     if(rret!=NULL)
         *rret=mode->geom;
@@ -430,6 +441,15 @@ void moveresmode_delta_move(WMoveresMode *mode,
 }
 
 
+void moveresmode_rqgeom(WMoveresMode *mode, WRQGeomParams *rq, 
+                        WRectangle *rret)
+{
+    mode->mode=MOVERES_SIZE;
+    moveresmode_do_newgeom(mode, rq);
+    moveresmode_setorig(mode);
+}
+
+
 /* It is ugly to do this here, but it will have to do for now... */
 static void set_saved(WMoveresMode *mode, WRegion *reg)
 {
@@ -478,7 +498,7 @@ bool moveresmode_do_end(WMoveresMode *mode, bool apply)
         set_saved(mode, reg);
     
     if(mode->infowin!=NULL){
-        region_dispose((WRegion*)mode->infowin, FALSE);
+        mainloop_defer_destroy((Obj*)mode->infowin);
         mode->infowin=NULL;
     }
     destroy_obj((Obj*)mode);
@@ -520,6 +540,26 @@ void region_rqgeom(WRegion *reg, const WRQGeomParams *rq,
 }
 
 
+void rqgeomparams_from_table(WRQGeomParams *rq, 
+                             const WRectangle *origg, ExtlTab g)
+{
+    rq->geom=*origg;
+    rq->flags=REGION_RQGEOM_WEAK_ALL;
+    
+    if(extl_table_gets_i(g, "x", &(rq->geom.x)))
+       rq->flags&=~REGION_RQGEOM_WEAK_X;
+    if(extl_table_gets_i(g, "y", &(rq->geom.y)))
+       rq->flags&=~REGION_RQGEOM_WEAK_Y;
+    if(extl_table_gets_i(g, "w", &(rq->geom.w)))
+       rq->flags&=~REGION_RQGEOM_WEAK_W;
+    if(extl_table_gets_i(g, "h", &(rq->geom.h)))
+       rq->flags&=~REGION_RQGEOM_WEAK_H;
+
+    rq->geom.w=maxof(1, rq->geom.w);
+    rq->geom.h=maxof(1, rq->geom.h);
+}
+
+
 /*EXTL_DOC
  * Attempt to resize and/or move \var{reg}. The table \var{g} is a usual
  * geometry specification (fields \var{x}, \var{y}, \var{w} and \var{h}),
@@ -529,29 +569,14 @@ void region_rqgeom(WRegion *reg, const WRQGeomParams *rq,
 EXTL_EXPORT_AS(WRegion, rqgeom)
 ExtlTab region_rqgeom_extl(WRegion *reg, ExtlTab g)
 {
-    WRectangle ogeom=REGION_GEOM(reg);
     WRQGeomParams rq=RQGEOMPARAMS_INIT;
+    WRectangle res;
     
+    rqgeomparams_from_table(&rq, &REGION_GEOM(reg), g);
     
-    rq.geom=ogeom;
-    rq.flags=REGION_RQGEOM_WEAK_ALL;
-    
-    
-    if(extl_table_gets_i(g, "x", &(rq.geom.x)))
-       rq.flags&=~REGION_RQGEOM_WEAK_X;
-    if(extl_table_gets_i(g, "y", &(rq.geom.y)))
-       rq.flags&=~REGION_RQGEOM_WEAK_Y;
-    if(extl_table_gets_i(g, "w", &(rq.geom.w)))
-       rq.flags&=~REGION_RQGEOM_WEAK_W;
-    if(extl_table_gets_i(g, "h", &(rq.geom.h)))
-       rq.flags&=~REGION_RQGEOM_WEAK_H;
-
-    rq.geom.w=maxof(1, rq.geom.w);
-    rq.geom.h=maxof(1, rq.geom.h);
-    
-    region_rqgeom(reg, &rq, &ogeom);
+    region_rqgeom(reg, &rq, &res);
     
-    return extl_table_from_rectangle(&ogeom);
+    return extl_table_from_rectangle(&res);
 }
 
 
index 700c56ef0daaea3d54db79046b928f97229484f7..c56b96406c318f5e4a771a5ed32449a23d25041f 100644 (file)
@@ -93,6 +93,8 @@ extern void moveresmode_delta_resize(WMoveresMode *mode,
                                      WRectangle *rret);
 extern void moveresmode_delta_move(WMoveresMode *mode, 
                                    int dx, int dy, WRectangle *rret);
+extern void moveresmode_rqgeom(WMoveresMode *mode, WRQGeomParams *rq, 
+                               WRectangle *rret);
 extern bool moveresmode_do_end(WMoveresMode *mode, bool apply);
 extern WRegion *moveresmode_target(WMoveresMode *mode);
 
@@ -147,4 +149,7 @@ extern void region_absolute_geom_to_parent(WRegion *reg,
                                            const WRectangle *rgeom,
                                            WRectangle *pgeom);
 
+extern void rqgeomparams_from_table(WRQGeomParams *rq, 
+                                    const WRectangle *origg, ExtlTab g);
+
 #endif /* ION_IONCORE_RESIZE_H */
index 6e75ee3b5de1ed3a33000a7b3fe7bbe8da6dd1ff..a1db7203c4c821961108d5af9ee307e3c3b39614 100644 (file)
@@ -252,12 +252,7 @@ static bool rootwin_init(WRootWin *rootwin, int xscr)
     net_virtual_roots=XInternAtom(ioncore_g.dpy, "_NET_VIRTUAL_ROOTS", False);
     XDeleteProperty(ioncore_g.dpy, root, net_virtual_roots);
 
-    /* */ {
-        /* TODO: typed LINK_ITEM */
-        WRegion *tmp=(WRegion*)ioncore_g.rootwins;
-        LINK_ITEM(tmp, (WRegion*)rootwin, p_next, p_prev);
-        ioncore_g.rootwins=(WRootWin*)tmp;
-    }
+    LINK_ITEM(*(WRegion**)&ioncore_g.rootwins, (WRegion*)rootwin, p_next, p_prev);
 
     xwindow_set_cursor(root, IONCORE_CURSOR_DEFAULT);
     
@@ -280,11 +275,7 @@ void rootwin_deinit(WRootWin *rw)
             destroy_obj((Obj*)scr);
     }
     
-    /* */ {
-        WRegion *tmp=(WRegion*)ioncore_g.rootwins;
-        UNLINK_ITEM(tmp, (WRegion*)rw, p_next, p_prev);
-        ioncore_g.rootwins=(WRootWin*)tmp;
-    }
+    UNLINK_ITEM(*(WRegion**)&ioncore_g.rootwins, (WRegion*)rw, p_next, p_prev);
     
     XSelectInput(ioncore_g.dpy, WROOTWIN_ROOT(rw), 0);
     
index bb67ac1fcb482b5bb7f657421fafce6237071f5d..b179ccf9ca3926e5334f5090e990f368408d53b1 100644 (file)
@@ -86,33 +86,6 @@ WRegion *create_region_load(WWindow *par, const WFitParams *fp,
     
     if(!extl_table_gets_s(tab, "type", &objclass))
         return NULL;
-        
-    /* Backwards compatibility hack. */
-    if(strcmp(objclass, "WFloatWS")==0){
-        objclass=scopy("WGroupWS");
-    }else if(strcmp(objclass, "WIonWS")==0){
-        WGroupWS *ws=create_groupws(par, fp);
-        if(ws!=NULL){
-            extl_table_gets_s(tab, "name", &name);
-            extl_table_sets_s(tab, "type", "WTiling");
-            extl_table_sets_b(tab, "bottom", TRUE);
-            extl_table_sets_b(tab, "bottom_last_close", TRUE);
-            extl_table_sets_i(tab, "sizepolicy", SIZEPOLICY_FULL_EXACT);
-            
-            if(name!=NULL)
-                region_set_name((WRegion*)ws, name);
-            
-            reg=group_attach_new((WGroup*)ws, tab);
-            
-            if(reg!=NULL)
-                return (WRegion*)ws;
-            
-            destroy_obj((Obj*)ws);
-        }
-        objclass=scopy("WTiling");
-    }else if(strcmp(objclass, "WFloatFrame")==0){
-        objclass=scopy("WFrame");
-    }
     
     if(objclass==NULL)
         return NULL;
@@ -187,10 +160,34 @@ ExtlTab region_get_base_configuration(WRegion *reg)
 }
 
 
+static bool get_config_clientwins=TRUE;
+
+
 ExtlTab region_get_configuration(WRegion *reg)
 {
     ExtlTab tab=extl_table_none();
-    CALL_DYN_RET(tab, ExtlTab, region_get_configuration, reg, (reg));
+    if(get_config_clientwins || !OBJ_IS(reg, WClientWin)){
+        CALL_DYN_RET(tab, ExtlTab, region_get_configuration, reg, (reg));
+    }
+    return tab;
+}
+
+
+/*EXTL_DOC
+ * Get configuration tree. If \var{clientwins} is unset, client windows
+ * are filtered out.
+ */
+EXTL_EXPORT_AS(WRegion, get_configuration)
+ExtlTab region_get_configuration_extl(WRegion *reg, bool clientwins)
+{
+    ExtlTab tab;
+    
+    get_config_clientwins=clientwins;
+    
+    tab=region_get_configuration(reg);
+    
+    get_config_clientwins=TRUE;
+    
     return tab;
 }
 
diff --git a/ioncore/screen-notify.c b/ioncore/screen-notify.c
new file mode 100644 (file)
index 0000000..e65208a
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * ion/ioncore/screen-notify.c
+ *
+ * Copyright (c) Tuomo Valkonen 1999-2007. 
+ *
+ * Ion is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <string.h>
+
+#include <libtu/minmax.h>
+#include <libmainloop/defer.h>
+
+#include "common.h"
+#include "global.h"
+#include "infowin.h"
+#include "activity.h"
+#include "tags.h"
+#include "gr.h"
+#include "gr-util.h"
+#include "stacking.h"
+#include "names.h"
+#include "screen.h"
+#include "screen-notify.h"
+#include "strings.h"
+
+
+/*{{{ Generic stuff */
+
+
+static WInfoWin *do_get_notifywin(WScreen *scr, Watch *watch, uint pos,
+                                  char *style)
+{
+
+    WInfoWin *iw=(WInfoWin*)(watch->obj);
+    WFitParams fp;
+    
+    if(iw==NULL){
+        WMPlexAttachParams param=MPLEXATTACHPARAMS_INIT;
+        
+        param.flags=(MPLEX_ATTACH_UNNUMBERED|
+                     MPLEX_ATTACH_SIZEPOLICY|
+                     MPLEX_ATTACH_GEOM|
+                     MPLEX_ATTACH_LEVEL);
+        param.level=STACKING_LEVEL_ON_TOP;
+        
+        param.geom.x=0;
+        param.geom.y=0;
+        param.geom.w=1;
+        param.geom.h=1;
+        
+        switch(pos){
+        case MPLEX_STDISP_TL:
+            param.szplcy=SIZEPOLICY_GRAVITY_NORTHWEST;
+            param.geom.x=0;
+            break;
+            
+        case MPLEX_STDISP_TR:
+            param.szplcy=SIZEPOLICY_GRAVITY_NORTHEAST;
+            param.geom.x=REGION_GEOM(scr).w-1;
+            break;
+            
+        case MPLEX_STDISP_BL:
+            param.szplcy=SIZEPOLICY_GRAVITY_SOUTHWEST;
+            param.geom.x=0;
+            param.geom.y=REGION_GEOM(scr).h-1;
+            break;
+            
+        case MPLEX_STDISP_BR:
+            param.szplcy=SIZEPOLICY_GRAVITY_SOUTHEAST;
+            param.geom.x=REGION_GEOM(scr).w-1;
+            param.geom.y=REGION_GEOM(scr).h-1;
+            break;
+        }
+        
+
+        iw=(WInfoWin*)mplex_do_attach_new(&scr->mplex, &param,
+                                          (WRegionCreateFn*)create_infowin, 
+                                          style);
+        
+        if(iw!=NULL)
+            watch_setup(watch, (Obj*)iw, NULL);
+    }
+    
+    return iw;
+}
+
+
+static void do_unnotify(Watch *watch)
+{    
+    Obj *iw=watch->obj;
+    if(iw!=NULL){
+        watch_reset(watch);
+        mainloop_defer_destroy((Obj*)iw);
+    }
+}
+
+
+/*}}}*/
+
+
+/*{{{ Notifywin */
+
+
+static WInfoWin *get_notifywin(WScreen *scr)
+{
+    WRegion *stdisp=NULL;
+    WMPlexSTDispInfo info;
+    uint pos=MPLEX_STDISP_TL;
+    
+    mplex_get_stdisp(&scr->mplex, &stdisp, &info);
+    if(stdisp!=NULL)
+        pos=info.pos;
+    
+    return do_get_notifywin(scr, &scr->notifywin_watch, pos, "actnotify");
+}
+
+
+void screen_notify(WScreen *scr, const char *str)
+{
+    WInfoWin *iw=get_notifywin(scr);
+    
+    if(iw!=NULL){
+        int maxw=REGION_GEOM(scr).w/3;
+        infowin_set_text(iw, str, maxw);
+    }
+}
+
+
+void screen_unnotify(WScreen *scr)
+{
+    do_unnotify(&scr->notifywin_watch);
+}
+
+
+static bool ws_mapped(WScreen *scr, WRegion *reg)
+{
+    while(1){
+        WRegion *mgr=REGION_MANAGER(reg);
+        
+        if(mgr==NULL)
+            return FALSE;
+        
+        if(mgr==(WRegion*)scr)
+            return REGION_IS_MAPPED(reg);
+        
+        reg=mgr;
+    }
+}
+
+
+static void screen_managed_activity(WScreen *scr)
+{
+    char *notstr=NULL;
+    WRegion *reg;
+    ObjListIterTmp tmp;
+    PtrListIterTmp tmp2;
+    ObjList *actlist=ioncore_activity_list();
+    WInfoWin *iw=NULL;
+    PtrList *found=NULL;
+    int nfound=0, nadded=0;
+    int w=0, maxw=REGION_GEOM(scr).w/4;
+    
+    /* Lisäksi minimipituus (10ex tms.), ja sen yli menevät jätetään
+     * pois (+ n) 
+     */
+    FOR_ALL_ON_OBJLIST(WRegion*, reg, actlist, tmp){
+        if(region_screen_of(reg)!=scr || ws_mapped(scr, reg))
+            continue;
+        if(region_name(reg)==NULL)
+            continue;
+        if(ptrlist_insert_last(&found, reg))
+            nfound++;
+    }
+    
+    if(found==NULL)
+        goto unnotify;
+    
+    iw=get_notifywin(scr);
+    
+    if(iw==NULL)
+        return;
+        
+    if(iw->brush==NULL)
+        goto unnotify;
+    
+    notstr=scopy(TR("act: "));
+    
+    if(notstr==NULL)
+        goto unnotify;
+    
+    FOR_ALL_ON_PTRLIST(WRegion*, reg, found, tmp2){
+        const char *nm=region_name(reg);
+        char *nstr=NULL, *label=NULL;
+        
+        w=grbrush_get_text_width(iw->brush, notstr, strlen(notstr));
+
+        if(w>=maxw)
+            break;
+        
+        label=grbrush_make_label(iw->brush, nm, maxw-w);
+        if(label!=NULL){
+            nstr=(nadded>0
+                  ? scat3(notstr, ", ", label)
+                  : scat(notstr, label));
+            
+            if(nstr!=NULL){
+                free(notstr);
+                notstr=nstr;
+                nadded++;
+            }
+            free(label);
+        }
+    }
+    
+    if(nfound > nadded){
+        char *nstr=NULL;
+        
+        libtu_asprintf(&nstr, "%s  +%d", notstr, nfound-nadded);
+        
+        if(nstr!=NULL){
+            free(notstr);
+            notstr=nstr;
+        }
+    }
+    
+    ptrlist_clear(&found);
+    
+    infowin_set_text(iw, notstr, 0);
+    
+    free(notstr);
+    
+    return;
+
+unnotify:    
+    screen_unnotify(scr);
+}
+
+
+static void screen_do_update_notifywin(WScreen *scr)
+{
+    if(ioncore_g.screen_notify)
+        screen_managed_activity(scr);
+    else
+        screen_unnotify(scr);
+}
+
+
+/*}}}*/
+
+
+/*{{{ Infowin */
+
+
+static WInfoWin *get_infowin(WScreen *scr)
+{
+    WRegion *stdisp=NULL;
+    WMPlexSTDispInfo info;
+    uint pos=MPLEX_STDISP_TR;
+    
+    mplex_get_stdisp(&scr->mplex, &stdisp, &info);
+    if(stdisp!=NULL && info.pos==MPLEX_STDISP_TR)
+        pos=MPLEX_STDISP_BR;
+    
+    return do_get_notifywin(scr, &scr->infowin_watch, pos, "tab-info");
+}
+
+
+void screen_windowinfo(WScreen *scr, const char *str)
+{
+    WInfoWin *iw=get_infowin(scr);
+    
+    if(iw!=NULL){
+        int maxw=REGION_GEOM(scr).w/3;
+        infowin_set_text(iw, str, maxw);
+    }
+}
+
+
+void screen_nowindowinfo(WScreen *scr)
+{
+    do_unnotify(&scr->infowin_watch);
+}
+
+
+GR_DEFATTR(active);
+GR_DEFATTR(inactive);
+GR_DEFATTR(selected);
+GR_DEFATTR(tagged);
+GR_DEFATTR(not_tagged);
+GR_DEFATTR(not_dragged);
+GR_DEFATTR(activity);
+GR_DEFATTR(no_activity);
+
+
+static void init_attr()
+{
+    GR_ALLOCATTR_BEGIN;
+    GR_ALLOCATTR(active);
+    GR_ALLOCATTR(inactive);
+    GR_ALLOCATTR(selected);
+    GR_ALLOCATTR(tagged);
+    GR_ALLOCATTR(not_tagged);
+    GR_ALLOCATTR(not_dragged);
+    GR_ALLOCATTR(no_activity);
+    GR_ALLOCATTR(activity);
+    GR_ALLOCATTR_END;
+}
+
+
+static void screen_do_update_infowin(WScreen *scr)
+{
+    WRegion *reg=mplex_mx_current(&(scr->mplex));
+    bool tag=(reg!=NULL && region_is_tagged(reg));
+    bool act=(reg!=NULL && region_is_activity_r(reg) && !REGION_IS_ACTIVE(scr));
+    bool sac=REGION_IS_ACTIVE(scr);
+    
+    if(tag || act){
+        const char *n=region_displayname(reg);
+        WInfoWin *iw;
+                
+        screen_windowinfo(scr, n);
+        
+        iw=(WInfoWin*)scr->infowin_watch.obj;
+        
+        if(iw!=NULL){
+            GrStyleSpec *spec=infowin_stylespec(iw);
+            
+            init_attr();
+            
+            gr_stylespec_unalloc(spec);
+            
+            gr_stylespec_set(spec, GR_ATTR(selected));
+            gr_stylespec_set(spec, GR_ATTR(not_dragged));
+            gr_stylespec_set(spec, sac ? GR_ATTR(active) : GR_ATTR(inactive));
+            gr_stylespec_set(spec, tag ? GR_ATTR(tagged) : GR_ATTR(not_tagged));
+            gr_stylespec_set(spec, act ? GR_ATTR(activity) : GR_ATTR(no_activity));
+        }
+            
+    }else{
+        screen_nowindowinfo(scr);
+    }
+}
+
+
+
+/*}}}*/
+
+
+/*{{{ Notification callbacks and deferred updates*/
+
+
+void screen_update_infowin(WScreen *scr)
+{
+    mainloop_defer_action((Obj*)scr, 
+                          (WDeferredAction*)screen_do_update_infowin);
+}
+
+
+void screen_update_notifywin(WScreen *scr)
+{
+    mainloop_defer_action((Obj*)scr, 
+                          (WDeferredAction*)screen_do_update_notifywin);
+}
+
+
+void screen_managed_notify(WScreen *scr, WRegion *reg, WRegionNotify how)
+{
+    if(how==ioncore_g.notifies.tag)
+        screen_update_infowin(scr);
+}
+
+
+void ioncore_screen_activity_notify(WRegion *reg, WRegionNotify how)
+{
+    if(how==ioncore_g.notifies.activity){
+        WScreen *scr=region_screen_of(reg);
+        
+        screen_update_infowin(scr);
+        screen_update_notifywin(scr);
+
+    }
+}
+
+
+/*}}}*/
+
diff --git a/ioncore/screen-notify.h b/ioncore/screen-notify.h
new file mode 100644 (file)
index 0000000..d5f27cd
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * ion/ioncore/screen-notify.h
+ *
+ * Copyright (c) Tuomo Valkonen 1999-2007. 
+ *
+ * Ion is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef ION_IONCORE_SCREEN_NOTIFY_H
+#define ION_IONCORE_SCREEN_NOTIFY_H
+
+#include "common.h"
+#include "region.h"
+#include "screen.h"
+
+
+void screen_managed_notify(WScreen *scr, WRegion *reg, WRegionNotify how);
+
+void screen_update_infowin(WScreen *scr);
+void screen_update_notifywin(WScreen *scr);
+
+extern void ioncore_screen_activity_notify(WRegion *reg, WRegionNotify how);
+
+#endif /* ION_IONCORE_SCREEN_NOTIFY_H */
index cac75a061b063d51d9fdc97e888b2a0e610ca8c0..00d675f2f576683323f35ff92ccd3f703f9a4c39 100644 (file)
@@ -13,7 +13,6 @@
 
 #include <libtu/objp.h>
 #include <libtu/minmax.h>
-#include <libmainloop/defer.h>
 
 #include "common.h"
 #include "global.h"
 #include "regbind.h"
 #include "frame-pointer.h"
 #include "rectangle.h"
-#include "infowin.h"
-#include "activity.h"
 #include "extlconv.h"
 #include "llist.h"
 #include "group-ws.h"
 #include "mplex.h"
-#include "tags.h"
-#include "gr.h"
-#include "gr-util.h"
 #include "conf.h"
+#include "activity.h"
+#include "screen-notify.h"
 
 
 WHook *screen_managed_changed_hook=NULL;
 
 
-static void screen_update_infowin(WScreen *scr);
-
-
-
 /*{{{ Init/deinit */
 
 
@@ -70,7 +62,6 @@ bool screen_init(WScreen *scr, WRootWin *parent,
     scr->managed_off.h=0;
     scr->next_scr=NULL;
     scr->prev_scr=NULL;
-    scr->rotation=SCREEN_ROTATION_0;
     
     watch_init(&(scr->notifywin_watch));
     watch_init(&(scr->infowin_watch));
@@ -224,6 +215,9 @@ static void screen_managed_changed(WScreen *scr, int mode, bool sw,
                                     n==NULL ? "" : n);
     }
     
+    if(region_is_activity_r((WRegion*)scr))
+        screen_update_notifywin(scr);
+    
     screen_update_infowin(scr);
     
     mplex_call_changed_hook((WMPlex*)scr,
@@ -262,218 +256,6 @@ void screen_activated(WScreen *scr)
 /*}}}*/
 
 
-/*}}}*/
-
-
-/*{{{ Notifications */
-
-
-static void do_notify(WScreen *scr, Watch *watch, bool right,
-                      const char *str, char *style)
-{
-
-    WInfoWin *iw=(WInfoWin*)(watch->obj);
-    WFitParams fp;
-    
-    if(iw==NULL){
-        WMPlexAttachParams param=MPLEXATTACHPARAMS_INIT;
-        
-        param.flags=(MPLEX_ATTACH_UNNUMBERED|
-                     MPLEX_ATTACH_SIZEPOLICY|
-                     MPLEX_ATTACH_GEOM|
-                     MPLEX_ATTACH_LEVEL);
-        param.level=STACKING_LEVEL_ON_TOP;
-        
-        if(!right){
-            param.szplcy=SIZEPOLICY_GRAVITY_NORTHWEST;
-            param.geom.x=0;
-        }else{
-            param.szplcy=SIZEPOLICY_GRAVITY_NORTHEAST;
-            param.geom.x=REGION_GEOM(scr).w-1;
-        }
-        
-        param.geom.y=0;
-        param.geom.w=1;
-        param.geom.h=1;
-        
-        iw=(WInfoWin*)mplex_do_attach_new(&scr->mplex, &param,
-                                          (WRegionCreateFn*)create_infowin, 
-                                          style);
-        
-        if(iw==NULL)
-            return;
-
-        watch_setup(watch, (Obj*)iw, NULL);
-    }
-
-    infowin_set_text(iw, str);
-}
-
-
-void screen_notify(WScreen *scr, const char *str)
-{
-    do_notify(scr, &scr->notifywin_watch, FALSE, str, "actnotify");
-}
-
-
-void screen_windowinfo(WScreen *scr, const char *str)
-{
-    do_notify(scr, &scr->infowin_watch, TRUE, str, "tab-info");
-}
-
-
-void screen_unnotify(WScreen *scr)
-{
-    Obj *iw=scr->notifywin_watch.obj;
-    if(iw!=NULL){
-        watch_reset(&(scr->notifywin_watch));
-        region_dispose((WRegion*)iw, FALSE);
-    }
-}
-
-
-void screen_nowindowinfo(WScreen *scr)
-{
-    Obj *iw=scr->infowin_watch.obj;
-    if(iw!=NULL){
-        watch_reset(&(scr->infowin_watch));
-        region_dispose((WRegion*)iw, FALSE);
-    }
-}
-
-
-static char *addnot(char *str, WRegion *reg)
-{
-    const char *nm=region_name(reg);
-    char *nstr=NULL;
-    
-    if(nm==NULL)
-        return str;
-    
-    if(str==NULL)
-        return scat(TR("act: "), nm);
-
-    nstr=scat3(str, ", ", nm);
-    if(nstr!=NULL)
-        free(str);
-    return nstr;
-}
-
-
-static char *screen_managed_activity(WScreen *scr)
-{
-    char *notstr=NULL;
-    WMPlexIterTmp tmp;
-    WRegion *reg;
-    
-    FOR_ALL_MANAGED_BY_MPLEX(&scr->mplex, reg, tmp){
-        if(region_is_activity_r(reg) && !REGION_IS_MAPPED(reg))
-            notstr=addnot(notstr, reg);
-    }
-    
-    return notstr;
-}
-
-
-static void screen_notify_activity(WScreen *scr)
-{
-    if(ioncore_g.screen_notify){
-        char *notstr=screen_managed_activity(scr);
-        if(notstr!=NULL){
-            screen_notify(scr, notstr);
-            free(notstr);
-            return;
-        }
-    }
-
-    screen_unnotify(scr);
-    
-    screen_update_infowin(scr);
-}
-
-
-static void screen_notify_tag(WScreen *scr)
-{
-    screen_update_infowin(scr);
-}
-
-
-GR_DEFATTR(active);
-GR_DEFATTR(inactive);
-GR_DEFATTR(selected);
-GR_DEFATTR(tagged);
-GR_DEFATTR(not_tagged);
-GR_DEFATTR(not_dragged);
-GR_DEFATTR(activity);
-GR_DEFATTR(no_activity);
-
-
-static void init_attr()
-{
-    GR_ALLOCATTR_BEGIN;
-    GR_ALLOCATTR(active);
-    GR_ALLOCATTR(inactive);
-    GR_ALLOCATTR(selected);
-    GR_ALLOCATTR(tagged);
-    GR_ALLOCATTR(not_tagged);
-    GR_ALLOCATTR(not_dragged);
-    GR_ALLOCATTR(no_activity);
-    GR_ALLOCATTR(activity);
-    GR_ALLOCATTR_END;
-}
-
-
-static void screen_update_infowin(WScreen *scr)
-{
-    WRegion *reg=mplex_mx_current(&(scr->mplex));
-    bool tag=(reg!=NULL && region_is_tagged(reg));
-    bool act=(reg!=NULL && region_is_activity_r(reg) && !REGION_IS_ACTIVE(scr));
-    bool sac=REGION_IS_ACTIVE(scr);
-    
-    if(tag || act){
-        const char *n=region_displayname(reg);
-        WInfoWin *iw;
-                
-        screen_windowinfo(scr, n);
-        
-        iw=(WInfoWin*)scr->infowin_watch.obj;
-        
-        if(iw!=NULL){
-            GrStyleSpec *spec=infowin_stylespec(iw);
-            
-            init_attr();
-            
-            gr_stylespec_unalloc(spec);
-            
-            gr_stylespec_set(spec, GR_ATTR(selected));
-            gr_stylespec_set(spec, GR_ATTR(not_dragged));
-            gr_stylespec_set(spec, sac ? GR_ATTR(active) : GR_ATTR(inactive));
-            gr_stylespec_set(spec, tag ? GR_ATTR(tagged) : GR_ATTR(not_tagged));
-            gr_stylespec_set(spec, act ? GR_ATTR(activity) : GR_ATTR(no_activity));
-        }
-            
-    }else{
-        screen_nowindowinfo(scr);
-    }
-}
-
-
-static void screen_managed_notify(WScreen *scr, WRegion *reg, WRegionNotify how)
-{
-    if(how==ioncore_g.notifies.sub_activity){
-        /* TODO: multiple calls */
-        mainloop_defer_action((Obj*)scr, 
-                              (WDeferredAction*)screen_notify_activity);
-    }else if(how==ioncore_g.notifies.tag){
-        mainloop_defer_action((Obj*)scr, 
-                              (WDeferredAction*)screen_notify_tag);
-    }
-}
-
-
-/*}}}*/
-
-
 /*{{{ Misc. */
 
 
@@ -583,32 +365,33 @@ int screen_id(WScreen *scr)
 }
 
 
-static bool screen_managed_may_destroy(WScreen *scr, WRegion *reg)
+static WRegion *screen_managed_disposeroot(WScreen *scr, WRegion *reg)
 {
-    bool onmxlist=FALSE;
+    bool onmxlist=FALSE, others=FALSE;
     WLListNode *lnode;
     WLListIterTmp tmp;
-
-    if(OBJ_IS(reg, WClientWin))
-        return TRUE;
     
-    FOR_ALL_NODES_ON_LLIST(lnode, scr->mplex.mx_list, tmp){
-        if(lnode->st->reg==reg)
-            onmxlist=TRUE;
-        else /*if(OBJ_IS(node->reg, WGenWS))*/
-            return TRUE;
+    if(OBJ_IS(reg, WGroupWS)){
+        FOR_ALL_NODES_ON_LLIST(lnode, scr->mplex.mx_list, tmp){
+            if(lnode->st->reg==reg){
+                onmxlist=TRUE;
+            }else if(OBJ_IS(lnode->st->reg, WGroupWS)){
+                others=TRUE;
+                break;
+            }
+        }
+
+        if(onmxlist && !others){
+            warn(TR("Only workspace may not be destroyed/detached."));
+            return NULL;
+        }
     }
     
-    if(!onmxlist)
-        return TRUE;
-    
-    warn(TR("Only workspace may not be destroyed."));
-    
-    return FALSE;
+    return reg;
 }
 
 
-static bool screen_may_destroy(WScreen *scr)
+static bool screen_may_dispose(WScreen *scr)
 {
     warn(TR("Screens may not be destroyed."));
     return FALSE;
@@ -651,13 +434,6 @@ err:
 }
 
 
-WPHolder *screen_get_rescue_pholder_for(WScreen *scr, WRegion *mgd)
-{
-#warning "TODO: better special case handling for groups"
-    
-    return (WPHolder*)mplex_get_rescue_pholder_for(&(scr->mplex), mgd);
-}
-
 /*}}}*/
 
 
@@ -733,11 +509,11 @@ static DynFunTab screen_dynfuntab[]={
     {region_inactivated, 
      screen_inactivated},
     
-    {(DynFun*)region_managed_may_destroy,
-     (DynFun*)screen_managed_may_destroy},
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)screen_managed_disposeroot},
 
-    {(DynFun*)region_may_destroy,
-     (DynFun*)screen_may_destroy},
+    {(DynFun*)region_may_dispose,
+     (DynFun*)screen_may_dispose},
 
     {mplex_managed_changed, 
      screen_managed_changed},
@@ -757,9 +533,6 @@ static DynFunTab screen_dynfuntab[]={
     {(DynFun*)region_fitrep,
      (DynFun*)screen_fitrep},
 
-    {(DynFun*)region_get_rescue_pholder_for,
-     (DynFun*)screen_get_rescue_pholder_for},
-    
     END_DYNFUNTAB
 };
 
index 6555c17e2fe5628ff4b9c6bcde408891830caa7f..8c1b9b5963ed98f0c492d3096302e280800f7eb3 100644 (file)
@@ -42,7 +42,6 @@ DECLCLASS(WScreen){
     int id;
     Atom atom_workspace;
     bool uses_root;
-    int rotation;
     WRectangle managed_off;
     WScreen *next_scr, *prev_scr;
     Watch notifywin_watch;
@@ -65,13 +64,6 @@ extern void screen_set_managed_offset(WScreen *scr, const WRectangle *off);
 
 extern bool screen_init_layout(WScreen *scr, ExtlTab tab);
 
-extern void screen_notify(WScreen *scr, const char *notstr);
-extern void screen_unnotify(WScreen *scr);
-extern void screen_windowinfo(WScreen *scr, const char *name);
-extern void screen_nowindowinfo(WScreen *scr);
-
-extern WPHolder *screen_get_rescue_pholder_for(WScreen *scr, WRegion *mgd);
-
 extern WScreen *ioncore_find_screen_id(int id);
 extern WScreen *ioncore_goto_screen_id(int id);
 extern WScreen *ioncore_goto_next_screen();
index b5747539ea1780401847d538d1997f6ae785b8d8..ee5560f875270e38cef891f16f224c2c54df06c9 100644 (file)
@@ -70,8 +70,8 @@ static void correct_aspect(int max_w, int max_h, const WSizeHints *hints,
 void sizehints_correct(const WSizeHints *hints, int *wp, int *hp, 
                        bool min, bool override_no_constrain)
 {
-    int w=*wp;
-    int h=*hp;
+    int w=*wp, wa;
+    int h=*hp, ha;
     int bs=0;
     
     if(min){
@@ -85,8 +85,14 @@ void sizehints_correct(const WSizeHints *hints, int *wp, int *hp,
         return;
     }
 
-    if(w>=hints->min_width && h>=hints->min_height)
-        correct_aspect(w, h, hints, &w, &h);
+    wa=w-hints->base_width;
+    ha=h-hints->base_height;
+    
+    if(wa>=0 && ha>=0){
+        correct_aspect(wa, ha, hints, &wa, &ha);
+        w=wa+hints->base_width;
+        h=ha+hints->base_height;
+    }
     
     if(hints->max_set){
         w=minof(w, hints->max_width);
@@ -132,9 +138,9 @@ void xsizehints_sanity_adjust(XSizeHints *hints)
         hints->min_height=0;
 
     if(!(hints->flags&PBaseSize) || hints->base_width<0)
-        hints->base_width=hints->min_width;
+        hints->base_width=0;
     if(!(hints->flags&PBaseSize) || hints->base_height<0)
-        hints->base_height=hints->min_height;
+        hints->base_height=0;
 
     
     if(hints->flags&PMaxSize){
index 383af0c116a0a3a67c2454dd644acfa7757d1b92..f01385d301c8d1f507fe64eca491136cf0de1e1c 100644 (file)
@@ -70,9 +70,9 @@ bool region_is_tagged(WRegion *reg)
  * Untag all regions.
  */
 EXTL_EXPORT
-void ioncore_clear_tags()
+void ioncore_tagged_clear()
 {
-    while(ioncore_tagged_take_first()!=NULL)
+    while(ioncore_tagged_first(TRUE)!=NULL)
         /* nothing */;
 }
 
@@ -84,28 +84,29 @@ void ioncore_clear_tags()
 
 
 /*EXTL_DOC
- * Returns first tagged object.
+ * Returns first tagged object, untagging it as well if \var{untag}is set.
  */
 EXTL_SAFE
 EXTL_EXPORT
-WRegion *ioncore_tagged_first()
+WRegion *ioncore_tagged_first(bool untag)
 {
-    return (WRegion*)OBJLIST_FIRST(WRegion*, taglist);
-}
-
-
-WRegion *ioncore_tagged_take_first()
-{
-    WRegion *reg=(WRegion*)objlist_take_first(&taglist);
+    WRegion *reg;
     
-    if(reg!=NULL){
-        reg->flags&=~REGION_TAGGED;
-        region_notify_change(reg, ioncore_g.notifies.tag);
+    if(!untag){
+        reg=(WRegion*)OBJLIST_FIRST(WRegion*, taglist);
+    }else{
+        reg=(WRegion*)objlist_take_first(&taglist);
+    
+        if(reg!=NULL){
+            reg->flags&=~REGION_TAGGED;
+            region_notify_change(reg, ioncore_g.notifies.tag);
+        }
     }
     
     return reg;
 }
 
+
 /*EXTL_DOC
  * Iterate over tagged regions until \var{iterfn} returns \code{false}.
  * The function itself returns \code{true} if it reaches the end of list
index a8fe8f5af1366eeea3c69996ad74b4080a37d591..6f30292af93131864055d732538afd800c05480b 100644 (file)
@@ -18,8 +18,8 @@
 extern bool region_set_tagged(WRegion *reg, int sp);
 extern bool region_is_tagged(WRegion *reg);
 
-extern void ioncore_clear_tags();
-extern WRegion *ioncore_tagged_first();
-extern WRegion *ioncore_tagged_take_first();
+extern void ioncore_tagged_clear();
+extern WRegion *ioncore_tagged_first(bool untag);
+extern bool ioncore_tagged_i(ExtlFn iterfn);
 
 #endif /* ION_IONCORE_TAGS_H */
index 9ce3df2a7b76395a43845c47296aa1b8b40057d1..9d4cea79e1ceec6ce446abc77350088acd96b079 100644 (file)
@@ -112,10 +112,10 @@ void xwindow_set_cursor(Window win, int cursor)
 bool xwindow_pointer_pos(Window rel, int *px, int *py)
 {
     Window win=None, realroot=None;
-    int wx=0, wy=0;
+    int rx=0, ry=0;
     uint mask=0;
     return XQueryPointer(ioncore_g.dpy, rel, &realroot, &win,
-                         px, py, &wx, &wy, &mask);
+                         &rx, &ry, px, py, &mask);
 }
 
 /*}}}*/
index 3ff2401a8fd33c4bdacbfd9f48845c1bb4ac7bc6..66bf973626d833d44c04f4759de45b1660b7b8cf 100644 (file)
@@ -1,6 +1,11 @@
 
 Context:
 
+[Improved mechanisms for unregistration of functions.
+Tuomo Valkonen <tuomov@iki.fi>**20070226150118
+ Makes for a bit smaller memory footprint.
+] 
+
 [Updated *.mk locations.
 Tuomo Valkonen <tuomov@iki.fi>**20060803211018] 
 
index ff1cac332f326523776c7e39af430c1a1acdd2cc..bbb672d84ae74961cdf4a8dd4ec11e234c424b86 100644 (file)
@@ -468,13 +468,13 @@ function write_class_fns(h, cls, data)
             ids='"' .. info.idesc .. '"'
         end
         
-        fprintf(h, "    {\"%s\", %s, %s, %s, (ExtlL2CallHandler*)%s, %s, %s},\n",
+        fprintf(h, "    {\"%s\", %s, %s, %s, (ExtlL2CallHandler*)%s, %s, %s, FALSE},\n",
                 info.exported_name, fn, ids, ods, info.chnd, 
                 bool2str4c(info.safe),
                 bool2str4c(info.untraced))
     end
     
-    fprintf(h, "    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE}\n};\n\n")
+    fprintf(h, "    {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}\n};\n\n")
 end
 
 
index c53fde6fe74135cfdfda0b3fba924967c30d0ddd..a2cc2b92759133a4d31fb7f87225a79bc52a3f69 100644 (file)
@@ -444,7 +444,7 @@ bool dopath(const char *what);
 static bool extl_init_obj_info(lua_State *st)
 {
     static ExtlExportedFnSpec dummy[]={
-        {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE}
+        {NULL, NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE}
     };
     
     extl_register_class("Obj", dummy, NULL);
@@ -1746,7 +1746,7 @@ static int extl_l1_call_handler2(lua_State *st)
 
     D(fprintf(stderr, "%s called\n", spec->name));
     
-   if(!lua_checkstack(st, MAX_PARAMS+1)){
+    if(!lua_checkstack(st, MAX_PARAMS+1)){
         extl_warn(TR("Stack full."));
         return 0;
     }
@@ -1828,7 +1828,7 @@ static int extl_l1_call_handler(lua_State *st)
         return 0;
     }
     
-    if(param.spec->fn==NULL){
+    if(!param.spec->registered){
         extl_warn(TR("Called function has been unregistered."));
         return 0;
     }
@@ -1962,22 +1962,14 @@ static bool extl_do_register_function(lua_State *st, RegData *data)
         lua_rawgeti(st, LUA_REGISTRYINDEX, data->table);
         ind=-3;
     }
-
-    lua_pushstring(st, spec->name);
-
-    spec2=lua_newuserdata(st, sizeof(ExtlExportedFnSpec));
     
-    memcpy(spec2, spec, sizeof(ExtlExportedFnSpec));
+    lua_pushstring(st, spec->name);
 
-    lua_getregistry(st);
-    lua_pushvalue(st, -2); /* Get spec2 */
-    lua_pushfstring(st, "luaextl_%s_%s_upvalue", 
-                    data->cls, spec->name);
-    lua_rawset_check(st, -3); /* Set registry.luaextl_fn_upvalue=spec2 */
-    lua_pop(st, 1); /* Pop registry */
+    lua_pushlightuserdata(st, spec);
     lua_pushcclosure(st, extl_l1_call_handler, 1);
+    
     lua_rawset_check(st, ind);
-
+    
     return TRUE;
 }
 
@@ -1998,6 +1990,7 @@ static bool extl_do_register_functions(ExtlExportedFnSpec *spec, int max,
                         &regdata)){
             return FALSE;
         }
+        spec[i].registered=TRUE;
     }
     
     return TRUE;
@@ -2018,28 +2011,8 @@ bool extl_register_functions(ExtlExportedFnSpec *spec)
 
 static bool extl_do_unregister_function(lua_State *st, RegData *data)
 {
-    ExtlExportedFnSpec *spec=data->spec, *spec2;
+    ExtlExportedFnSpec *spec=data->spec;
     int ind=LUA_GLOBALSINDEX;
-
-    lua_getregistry(st);
-    lua_pushfstring(st, "luaextl_%s_%s_upvalue", 
-                    data->cls, spec->name);
-    lua_pushvalue(st, -1);
-    lua_gettable(st, -3); /* Get registry.luaextl_fn_upvalue */
-    spec2=lua_touserdata(st, -1);
-
-    if(spec2==NULL)
-        return FALSE;
-    
-    spec2->ispec=NULL;
-    spec2->ospec=NULL;
-    spec2->fn=NULL;
-    spec2->name=NULL;
-    spec2->l2handler=NULL;
-
-    lua_pop(st, 1); /* Pop the upvalue */
-    lua_pushnil(st);
-    lua_rawset_check(st, -3); /* Clear registry.luaextl_fn_upvalue */
     
     if(data->table!=LUA_NOREF){
         lua_rawgeti(st, LUA_REGISTRYINDEX, data->table);
@@ -2069,6 +2042,7 @@ static void extl_do_unregister_functions(ExtlExportedFnSpec *spec, int max,
         regdata.spec=&(spec[i]);
         extl_cpcall(l_st, (ExtlCPCallFn*)extl_do_unregister_function,
                     &regdata);
+        spec[i].registered=FALSE;
     }
 }
 
index 28cfde86d0a02c5a863e54178f935fbc03177642..f31cc97583c79d3a91382a9a74280a9b22c74821 100644 (file)
@@ -56,6 +56,7 @@ typedef struct{
     ExtlL2CallHandler *l2handler;
     bool safe;
     bool untraced;
+    bool registered;
 } ExtlExportedFnSpec;
 
 typedef struct ExtlSafelist_struct{
index dfc0e89df2b4baf9aefcbee1713b019cee981c30..c8d56163761dfd43ddb2549d14e8a9e0c0b571e7 100644 (file)
@@ -84,12 +84,29 @@ static void defer_watch_handler(Watch *w, Obj *obj)
     warn(TR("Object destroyed while deferred actions are still pending."));
 }
 
+
+static bool already_deferred(Obj *obj, WDeferredAction *action, 
+                             WDeferred *list)
+{
+    WDeferred *d;
+    
+    for(d=list; d!=NULL; d=d->next){
+        if(d->action==action && d->watch.obj==obj)
+            return TRUE;
+    }
     
+    return FALSE;
+}
+
+
 bool mainloop_defer_action_on_list(Obj *obj, WDeferredAction *action, 
                                    WDeferred **list)
 {
     WDeferred *d;
     
+    if(already_deferred(obj, action, *list))
+        return TRUE;
+    
     d=alloc_defer();
     
     if(d==NULL){
index da9771375e637e3be96a62d62c41a80f981fbcb0..f2b787aa76f4c2e754ee15b01d743808b6bcf7c2 100644 (file)
@@ -39,7 +39,7 @@ static void add_to_log(ErrorLog *el, const char *message, int l)
     if(el->msgs==NULL){
         el->msgs=ALLOC_N(char, ERRORLOG_MAX_SIZE);
         if(el->msgs==NULL){
-            fprintf(stderr, "%s: %s\n", prog_execname(), strerror(errno));
+            fprintf(stderr, "%s: %s\n", libtu_progname(), strerror(errno));
             return;
         }
         el->msgs[0]=0;
index 420d613c0a7fba4ae4753bbc7aa0696eb19ee12d..694c1e04e391055bfda7422446274726e2835502 100644 (file)
@@ -1,6 +1,12 @@
 
 Context:
 
+[Renamed `prog_execname` `libtu_progname` and added `libtu_progbasename`.
+Tuomo Valkonen <tuomov@iki.fi>**20070310230536] 
+
+[Better handling of STRINGID_NONE
+Tuomo Valkonen <tuomov@iki.fi>**20070219231818] 
+
 [Clean-up and pending updates
 Tuomo Valkonen <tuomov@iki.fi>**20070129141139] 
 
index 6c70186140f2153cfa626c87d73ac4de8e5379bd..3939545dc357e4fd2d6f78c08c3b78ce4c086c26 100644 (file)
@@ -98,7 +98,7 @@ static void put_prog_name()
     if(!progname_enable)
         return;
     
-    progname=prog_execname();
+    progname=libtu_progname();
     
     if(progname==NULL)
         return;
index 5529820666cd46d27f7d25b01d9ce35070ca54dd..e47c902050a0051b23fc574aa6e83e8d024043e4 100644 (file)
@@ -105,6 +105,9 @@ StringId stringstore_alloc_n(const char *str, uint l)
 
 StringId stringstore_alloc(const char *str)
 {
+    if(str==NULL)
+        return STRINGID_NONE;
+    
     return stringstore_alloc_n(str, strlen(str));
 }
 
@@ -113,10 +116,8 @@ void stringstore_free(StringId id)
 {
     Rb_node node=(Rb_node)id;
     
-    if(node==NULL){
-        warn("Attempt to free un-allocated string from stringstore.");
+    if(node==NULL)
         return;
-    }
     
     if(node->v.ival<=0){
         warn("Stringstore reference count corrupted.");
index aafdf13d799188efca5ec12cf5cf23910db43b13..b0c969975577556bd6485625d74dbca044160445 100644 (file)
@@ -30,8 +30,16 @@ void libtu_init(const char *argv0)
 }
 
 
-const char *prog_execname()
+const char *libtu_progname()
 {
     return progname;
 }
 
+
+const char *libtu_progbasename()
+{
+    const char *s=strrchr(progname, '/');
+    
+    return (s==NULL ? progname : s+1);
+}
+
index c8bddcfa3f78bf91076dd74c4055bf9bfeda5cc0..d4438cea04d72096a84c5463af3ca01fb9b8b5b0 100644 (file)
@@ -18,6 +18,7 @@
 #include "optparser.h"
 
 extern void libtu_init(const char *argv0);
-extern const char *prog_execname();
+extern const char *libtu_progname();
+extern const char *libtu_progbasename();
 
 #endif /* LIBTU_UTIL_H */
index c67ce6d45c83ba16f13f2b9ec5c8d585ec83bbea..ca418524729eba96cb7ee8387d9abe9c768840ae 100644 (file)
@@ -1155,18 +1155,6 @@ static void dock_deinit(WDock *dock)
 }
 
 
-bool dock_may_destroy(WDock *dock)
-{
-    if(dock->dockapps!=NULL){
-        warn_obj(modname, "Dock \"%s\" is still managing other objects "
-                " -- refusing to close.", region_name((WRegion*)dock));
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-
 EXTL_EXPORT
 WDock *mod_dock_create(ExtlTab tab)
 {
@@ -1683,7 +1671,6 @@ static DynFunTab dock_dynfuntab[]={
     {region_size_hints, dock_size_hints},
     {(DynFun*)region_fitrep, (DynFun*)dock_fitrep},
     {(DynFun*)region_orientation, (DynFun*)dock_orientation},
-    {(DynFun*)region_may_destroy, (DynFun*)dock_may_destroy},
     {(DynFun*)region_handle_drop, (DynFun*)dock_handle_drop},
 
     {(DynFun*)region_managed_get_pholder,
index 79a01ce4b47ea926ebd37e6d66bfc1d81fdf5c0d..05e801f56b417acea18cb76ed52842f908c05a3e 100644 (file)
@@ -37,15 +37,25 @@ static bool grabmenu_handler(WRegion *reg, XEvent *xev)
     if(reg==NULL)
         return FALSE;
     
-    if((menu->gm_state==ev->state || menu->gm_state==AnyModifier) 
-       && ev->keycode==menu->gm_kcb){
-        menu_select_next(menu);
+    if(ev->keycode==menu->gm_kcb){
+        if(menu->gm_state==ev->state)
+            menu_select_next(menu);
+        else if((menu->gm_state|ShiftMask)==ev->state)
+            menu_select_prev(menu);
+        else if(menu->gm_state==AnyModifier)
+            menu_select_next(menu);
     }
     
     return FALSE;
 }
 
 
+static void grabkilled_handler(WRegion *reg)
+{
+    destroy_obj((Obj*)reg);
+}
+
+
 /*--lowlevel routine not to be called by the user--*/
 EXTL_EXPORT
 WMenu *mod_menu_do_grabmenu(WMPlex *mplex, ExtlFn handler, ExtlTab tab,
@@ -62,8 +72,16 @@ WMenu *mod_menu_do_grabmenu(WMPlex *mplex, ExtlFn handler, ExtlTab tab,
         return NULL;
     
     if(state==0){
-        /* TODO: cycle key? */
-        return mod_menu_do_menu(mplex, handler, tab, param);
+        WMenu *menu=mod_menu_do_menu(mplex, handler, tab, param);
+        /*
+        if(menu!=NULL && cycle!=extl_fn_none()){
+            uint kcb, state; 
+        
+            menu->cycle_bindmap=region_add_cycle_bindmap((WRegion*)menu,
+                                                         kcb, state, ???,
+                                                         ???);
+        }*/
+        return menu;
     }
     
     fnp.handler=handler;
@@ -89,7 +107,8 @@ WMenu *mod_menu_do_grabmenu(WMPlex *mplex, ExtlFn handler, ExtlTab tab,
     menu->gm_kcb=kcb;
     menu->gm_state=state;
     
-    ioncore_grab_establish((WRegion*)menu, grabmenu_handler, NULL, 0);
+    ioncore_grab_establish((WRegion*)menu, grabmenu_handler, 
+                           grabkilled_handler, 0);
     
     return menu;
 }
index d891c230b6690a014b3cf1ec5810af78c450031b..df3a2b0280d54a68b8e3221b9b9aa3fb003e8e2a 100644 (file)
@@ -30,6 +30,8 @@
 #include <ioncore/names.h>
 #include <ioncore/gr.h>
 #include <ioncore/gr-util.h>
+#include <ioncore/sizehint.h>
+#include <ioncore/resize.h>
 #include "menu.h"
 #include "main.h"
 
@@ -391,6 +393,26 @@ bool menu_fitrep(WMenu *menu, WWindow *par, const WFitParams *fp)
 }
 
 
+void menu_size_hints(WMenu *menu, WSizeHints *hints_ret)
+{
+    int n=menu->n_entries;
+    int w=menu->max_entry_w;
+    int h=menu->entry_h*n + menu->entry_spacing*maxof(0, n-1);
+
+    if(menu->brush!=NULL){
+        GrBorderWidths bdw;
+        grbrush_get_border_widths(menu->brush, &bdw);
+        
+        w+=bdw.left+bdw.right;
+        h+=bdw.top+bdw.bottom;
+    }
+    
+    hints_ret->min_set=TRUE;
+    hints_ret->min_width=w;
+    hints_ret->min_height=h;
+}
+
+
 /*}}}*/
 
 
@@ -584,7 +606,8 @@ bool menu_init(WMenu *menu, WWindow *par, const WFitParams *fp,
     menu->handler=extl_ref_fn(params->handler);
     menu->pmenu_mode=params->pmenu_mode;
     menu->big_mode=params->big_mode;
-
+    /*menu->cycle_bindmap=NULL;*/
+    
     menu->last_fp=*fp;
     
     if(params->pmenu_mode){
@@ -668,6 +691,9 @@ void menu_deinit(WMenu *menu)
     if(menu->submenu!=NULL)
         destroy_obj((Obj*)menu->submenu);
     
+    /*if(menu->cycle_bindmap!=NULL)
+        bindmap_destroy(menu->cycle_bindmap);*/
+
     extl_unref_table(menu->tab);
     extl_unref_fn(menu->handler);
     
@@ -945,10 +971,10 @@ static void menu_do_finish(WMenu *menu)
     
     ok=extl_table_geti_t(menu->tab, menu->selected_entry+1, &tab);
     
-    if(region_manager_allows_destroying((WRegion*)head))
-        destroy_obj((Obj*)head);
-    else if(head->submenu!=NULL)
-        destroy_obj((Obj*)head->submenu);
+    if(!region_rqdispose((WRegion*)head)){
+        if(head->submenu!=NULL)
+            destroy_obj((Obj*)head->submenu);
+    }
     
     if(ok)
         extl_call(handler, "t", NULL, tab);
@@ -984,8 +1010,7 @@ void menu_finish(WMenu *menu)
 EXTL_EXPORT_MEMBER
 void menu_cancel(WMenu *menu)
 {
-    if(region_manager_allows_destroying((WRegion*)menu))
-        region_dispose_((WRegion*)menu);
+    region_defer_rqdispose((WRegion*)menu);
 }
 
 
@@ -1416,6 +1441,7 @@ static DynFunTab menu_dynfuntab[]={
     {window_insstr, menu_insstr},
     {region_restack, menu_restack},
     {region_stacking, menu_stacking},
+    {region_size_hints, menu_size_hints},
     END_DYNFUNTAB
 };
 
index 38dd1f85dad780c8d2a46bcaa129d28ebe066d95..8d856e0c509986e24a8a955bed34f4303fdf05a5 100644 (file)
@@ -16,6 +16,7 @@
 #include <ioncore/window.h>
 #include <ioncore/gr.h>
 #include <ioncore/rectangle.h>
+#include <ioncore/binding.h>
 
 INTRCLASS(WMenu);
 INTRSTRUCT(WMenuEntry);
@@ -50,6 +51,8 @@ DECLCLASS(WMenu){
     char *typeahead;
     
     uint gm_kcb, gm_state;
+    
+    /*WBindmap *cycle_bindmap;*/
 };
 
 
index 913ad1618673adc04d6671e86d3581249afed9da..705a66ef0fcd2d6fef2adbf1ca8423c34299476b 100644 (file)
@@ -37,7 +37,7 @@ local function menu_(reg, sub, menu_or_name, fn, check)
         end
     end
 
-    menu=menudb.evalmenu(menu_or_name, {reg, sub})
+    menu=menudb.evalmenu(menu_or_name, reg, sub)
     
     return fn(reg, function(e) e.func(reg, sub) end, menu)
 end
@@ -57,17 +57,15 @@ end
 -- to use a bigger style by setting the field \var{big} to \code{true}.
 function mod_menu.menu(mplex, sub, menu_or_name, param) 
    local function menu_stdmenu(m, s, menu)
-      return mod_menu.do_menu(m, s, menu, param)
+        return ioncore.unsqueeze(mod_menu.do_menu(m, s, menu, param))
    end
    return menu_(mplex, sub, menu_or_name, menu_stdmenu, true)
 end
 
 -- Compatibility
 function mod_menu.bigmenu(mplex, sub, menu_or_name, initial) 
-    local function menu_bigmenu(m, s, menu)
-      return mod_menu.do_menu(m, s, menu, {big=true, initial=initial})
-    end
-    return menu_(mplex, sub, menu_or_name, menu_bigmenu, true)
+    local param={big=true, initial=initial}
+    return mod_menu.menu(mplex, sub, menu_or_name, param)
 end
 
 --DOC
index e10d2774c4da87ff3acde4165a2901ed6092bfc2..5122948e8b2fe5006e23402392cc74841f49ee5e 100644 (file)
 #include "fwarn.h"
 
 
-/*EXTL_DOC
+/*(internal) EXTL_DOC
  * Display an error message box in the multiplexer \var{mplex}.
  */
 EXTL_EXPORT
-WMessage *mod_query_warn(WMPlex *mplex, const char *p)
+WMessage *mod_query_do_warn(WMPlex *mplex, const char *p)
 {
     char *p2;
     WMessage *wmsg;
@@ -36,18 +36,19 @@ WMessage *mod_query_warn(WMPlex *mplex, const char *p)
     if(p2==NULL)
         return NULL;
     
-    wmsg=mod_query_message(mplex, p2);
+    wmsg=mod_query_do_message(mplex, p2);
     
     free(p2);
     
     return wmsg;
 }
 
-/*EXTL_DOC
+
+/*(internal) EXTL_DOC
  * Display a message in the \var{mplex}.
  */
 EXTL_EXPORT
-WMessage *mod_query_message(WMPlex *mplex, const char *p)
+WMessage *mod_query_do_message(WMPlex *mplex, const char *p)
 {
     WMPlexAttachParams par;
 
index 6e91a644d2e7adc2e712229b29f54bfc66d76d5d..9aed2566556e299809e823a99d6376f63d7173ef 100644 (file)
@@ -15,7 +15,7 @@
 #include <ioncore/mplex.h>
 #include "wmessage.h"
 
-extern WMessage *mod_query_message(WMPlex *mplex, const char *p);
-extern WMessage *mod_query_fwarn(WMPlex *mplex, const char *p);
+extern WMessage *mod_query_do_message(WMPlex *mplex, const char *p);
+extern WMessage *mod_query_do_fwarn(WMPlex *mplex, const char *p);
 
 #endif /* ION_MOD_QUERY_FWARN_H */
index 7f8ac99faa9f1b3bbab30adc8614c1516dbf6aaa..57a23c53ee26b07db2292bd8dc84bd51b2f135dd 100644 (file)
@@ -161,8 +161,7 @@ void input_deinit(WInput *input)
 EXTL_EXPORT_MEMBER
 void input_cancel(WInput *input)
 {
-    if(region_manager_allows_destroying((WRegion*)input))
-        region_dispose_((WRegion*)input);
+    region_defer_rqdispose((WRegion*)input);
 }
 
 
@@ -187,6 +186,29 @@ static void input_activated(WInput *input)
 /*}}}*/
 
 
+/*{{{{ Misc */
+
+
+void mod_query_get_minimum_extents(GrBrush *brush, bool with_spacing, 
+                                   int *w, int *h)
+{
+    GrBorderWidths bdw;
+    GrFontExtents fnte;
+    int spc;
+    
+    grbrush_get_border_widths(brush, &bdw);
+    grbrush_get_font_extents(brush, &fnte);
+    
+    spc=(with_spacing ? bdw.spacing : 0);
+    
+    *h=(fnte.max_height+bdw.top+bdw.bottom+spc);
+    *w=(bdw.left+bdw.right+spc);
+}
+
+
+/*}}}*/
+
+
 /*{{{ Dynamic function table and class implementation */
 
 
index 4f9f758aeb4906228cdaf866564f96542c7829e9..3dbde2e7706b0dfa1da1f9f22a726e21219061cb 100644 (file)
@@ -39,4 +39,7 @@ DYNFUN void input_scrolldown(WInput *input);
 DYNFUN void input_calc_size(WInput *input, WRectangle *geom);
 DYNFUN const char *input_style(WInput *input);
 
+extern void mod_query_get_minimum_extents(GrBrush *brush, bool with_spacing, 
+                                          int *w, int *h);
+
 #endif /* ION_MOD_QUERY_INPUT_H */
index 243f98785fafc317097fc52506531214f55c29f3..1bd3e231534896d69b8c857c1ba13a6a4de07e4f 100644 (file)
@@ -31,6 +31,20 @@ local DIE_TIMEOUT_NO_ERRORCODE=2 -- 2 seconds
 -- Generic helper functions {{{
 
 
+--DOC
+-- Display an error message box in the multiplexer \var{mplex}.
+function mod_query.warn(mplex, str)
+    ioncore.unsqueeze(mod_query.do_warn(mplex, str))
+end
+
+
+--DOC
+-- Display a message in \var{mplex}.
+function mod_query.message(mplex, str)
+    ioncore.unsqueeze(mod_query.do_message(mplex, str))
+end
+
+
 --DOC
 -- Low-level query routine. \var{mplex} is the \type{WMPlex} to display
 -- the query in, \var{prompt} the prompt string, and \var{initvalue}
@@ -50,6 +64,9 @@ function mod_query.query(mplex, prompt, initvalue, handler, completor,
     local function cycle(wedln)
         wedln:complete('next', 'normal')
     end
+    local function bcycle(wedln)
+        wedln:complete('prev', 'normal')
+    end
 
     -- Check that no other queries are open in the mplex.
     local ok=mplex:managed_i(function(r) 
@@ -60,9 +77,14 @@ function mod_query.query(mplex, prompt, initvalue, handler, completor,
     end
     
     local wedln=mod_query.do_query(mplex, prompt, initvalue, 
-                                   handle_it, completor, cycle)
-    if context then
-        wedln:set_context(context)
+                                   handle_it, completor, cycle, bcycle)
+                                   
+    if wedln then
+        ioncore.unsqueeze(wedln)
+        
+        if context then
+            wedln:set_context(context)
+        end
     end
     
     return wedln
@@ -437,24 +459,12 @@ function mod_query.attachclient_handler(frame, str)
         return
     end
     
-    local reg=cwin:manager()
-    local attach
+    local reg=cwin:groupleader_of()
     
-    if not obj_is(reg, "WGroupCW") then
-        reg = cwin
-        attach = function()
-                     frame:attach_new {
-                         type = "WGroupCW", 
-                         switchto = true,
-                         managed = {{ reg = cwin, bottom = true }}
-                     }
-                 end
-    else
-        attach = function()
-                     frame:attach(reg, { switchto = true })
-                 end
+    local function attach()
+        frame:attach(reg, { switchto = true })
     end
-        
+    
     if frame:rootwin_of()~=reg:rootwin_of() then
         mod_query.warn(frame, TR("Cannot attach: different root windows."))
     elseif reg:manager()==frame then
@@ -961,8 +971,10 @@ end
 
 function mod_query.man_completor(wedln, str)
     local mc=ioncore.lookup_script("ion-completeman")
+    local icase=(mod_query.get().caseicompl and " -icase" or "")
+    local mid=""
     if mc then
-        mod_query.popen_completions(wedln, (mc.." -complete "
+        mod_query.popen_completions(wedln, (mc..icase..mid.." -complete "
                                             ..string.shell_safe(str)))
     end
 end
@@ -1132,9 +1144,15 @@ end
 
 --DOC
 -- This query can be used to create a query of a defined menu.
-function mod_query.query_menu(mplex, themenu, prompt)
-    local _sub=mplex:current()
-    local menu=ioncore.evalmenu(themenu, {mplex, _sub})
+function mod_query.query_menu(mplex, sub, themenu, prompt)
+    if type(sub)=="string" then
+        -- Backwards compat. shift
+        prompt=themenu
+        themenu=sub
+        sub=nil
+    end
+    
+    local menu=ioncore.evalmenu(themenu, mplex, sub)
     local menuname=(type(themenu)=="string" and themenu or "?")
     
     if not menu then
@@ -1149,19 +1167,25 @@ function mod_query.query_menu(mplex, themenu, prompt)
     end
 
     local function xform_name(n, is_submenu)
-        return (string.lower(string.gsub(n, "[-/%s]+", "-"))
-                ..(is_submenu and "/" or ""))
+        return string.lower(string.gsub(n, "[-/%s]+", "-"))
     end
 
     local function xform_menu(t, m, p)
         for _, v in ipairs(m) do
             if v.name then
                 local is_submenu=v.submenu_fn
-                local n=p..xform_name(v.name, is_submenu)
-                while t[n] do
+                local n=p..xform_name(v.name)
+                
+                while t[n] or t[n..'/'] do
                     n=n.."'"
                 end
+                
+                if is_submenu then
+                    n=n..'/'
+                end
+                
                 t[n]=v
+                
                 if is_submenu and not v.noautoexpand then
                     local sm=v.submenu_fn()
                     if sm then
index 9318c897144d91e510d75734a15b8fbb1940b7f4..9418af5e11d5b8518fa93795a5c46b02a3c2b6b4 100644 (file)
 #include <ioncore/global.h>
 #include <ioncore/binding.h>
 #include <ioncore/regbind.h>
+#include <ioncore/bindmaps.h>
 #include <ioncore/key.h>
 #include "query.h"
 #include "wedln.h"
 
 
-static void create_cycle_binding(WEdln *wedln, uint kcb, uint state, ExtlFn cycle)
-{
-    WBindmap *bindmap=create_bindmap();
-    WBinding b;
-    
-    if(bindmap==NULL)
-        return;
-        
-    b.ksb=XKeycodeToKeysym(ioncore_g.dpy, kcb, 0);
-    b.kcb=kcb;
-    b.state=state;
-    b.act=BINDING_KEYPRESS;
-    b.area=0;
-    b.wait=FALSE;
-    b.submap=NULL;
-    b.func=extl_ref_fn(cycle);
-    
-    if(!bindmap_add_binding(bindmap, &b)){
-        extl_unref_fn(b.func);
-        bindmap_destroy(bindmap);
-        return;
-    }
-    
-    if(!region_add_bindmap((WRegion*)wedln, bindmap)){
-        bindmap_destroy(bindmap);
-        return;
-    }
-    
-    wedln->cycle_bindmap=bindmap;
-}
-    
-
 /*--lowlevel routine not to be called by the user--EXTL_DOC
  * Show a query window in \var{mplex} with prompt \var{prompt}, initial
  * contents \var{dflt}. The function \var{handler} is called with
@@ -62,7 +31,8 @@ static void create_cycle_binding(WEdln *wedln, uint kcb, uint state, ExtlFn cycl
  */
 EXTL_EXPORT
 WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, const char *dflt,
-                          ExtlFn handler, ExtlFn completor, ExtlFn cycle)
+                          ExtlFn handler, ExtlFn completor, 
+                          ExtlFn cycle, ExtlFn bcycle)
 {
     WRectangle geom;
     WEdlnCreateParams fnp;
@@ -88,8 +58,11 @@ WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, const char *dflt,
         uint kcb, state; 
         bool sub;
         
-        if(ioncore_current_key(&kcb, &state, &sub) && !sub)
-            create_cycle_binding(wedln, kcb, state, cycle);
+        if(ioncore_current_key(&kcb, &state, &sub) && !sub){
+            wedln->cycle_bindmap=region_add_cycle_bindmap((WRegion*)wedln,
+                                                          kcb, state, cycle,
+                                                          bcycle);
+        }
     }
     
     return wedln;
index 87b60ee61c4bec176a8982f7a95acd7205234591..3c67b3c0c8586cb72277d4471868514eee57e0a1 100644 (file)
@@ -17,8 +17,9 @@
 #include <libextl/extl.h>
 #include "wedln.h"
 
-extern WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, 
-                                 const char *dflt, ExtlFn handler, 
-                                 ExtlFn completor, ExtlFn cycle);
+extern WEdln *mod_query_do_query(WMPlex *mplex, 
+                                 const char *prompt, const char *dflt, 
+                                 ExtlFn handler, ExtlFn completor, 
+                                 ExtlFn cycle, ExtlFn bcycle);
 
 #endif /* ION_MOD_QUERY_QUERY_H */
index fa9193c5e9460312abc15eba5266aa9307a30754..470b05b8bee51b2e665b05ba8e63b2d8bcbcc68c 100644 (file)
@@ -26,6 +26,8 @@
 #include <ioncore/event.h>
 #include <ioncore/regbind.h>
 #include <ioncore/gr-util.h>
+#include <ioncore/sizehint.h>
+#include <ioncore/resize.h>
 #include "edln.h"
 #include "wedln.h"
 #include "inputp.h"
@@ -225,14 +227,12 @@ static bool wedln_update_cursor(WEdln *wedln, int iw)
 
 static int get_textarea_height(WEdln *wedln, bool with_spacing)
 {
-    GrBorderWidths bdw;
-    GrFontExtents fnte;
+    int w=1, h=1;
     
-    grbrush_get_border_widths(WEDLN_BRUSH(wedln), &bdw);
-    grbrush_get_font_extents(WEDLN_BRUSH(wedln), &fnte);
+    if(WEDLN_BRUSH(wedln)!=NULL)
+        mod_query_get_minimum_extents(WEDLN_BRUSH(wedln), with_spacing, &w, &h);
     
-    return (fnte.max_height+bdw.top+bdw.bottom+
-            (with_spacing ? bdw.spacing : 0));
+    return h;
 }
 
 
@@ -355,6 +355,22 @@ static void wedln_calc_size(WEdln *wedln, WRectangle *geom)
 }
 
 
+void wedln_size_hints(WEdln *wedln, WSizeHints *hints_ret)
+{
+    int w=1, h=1;
+    
+    if(WEDLN_BRUSH(wedln)!=NULL){
+        mod_query_get_minimum_extents(WEDLN_BRUSH(wedln), FALSE, &w, &h);
+        w+=wedln->prompt_w+wedln->info_w;
+        w+=grbrush_get_text_width(WEDLN_BRUSH(wedln), "xxxxxxxxxx", 10);
+    }
+        
+    hints_ret->min_set=TRUE;
+    hints_ret->min_width=w;
+    hints_ret->min_height=h;
+}
+
+
 /*}}}*/
 
 
@@ -1011,8 +1027,7 @@ static void wedln_do_finish(WEdln *wedln)
     wedln->handler=extl_fn_none();
     p=edln_finish(&(wedln->edln));
     
-    if(region_manager_allows_destroying((WRegion*)wedln))
-       destroy_obj((Obj*)wedln);
+    region_rqdispose((WRegion*)wedln);
     
     if(p!=NULL)
         extl_call(handler, "s", NULL, p);
@@ -1077,6 +1092,7 @@ static DynFunTab wedln_dynfuntab[]={
     {input_scrolldown, wedln_scrolldown_completions},
     {window_insstr, wedln_insstr},
     {(DynFun*)input_style, (DynFun*)wedln_style},
+    {region_size_hints, wedln_size_hints},
     END_DYNFUNTAB
 };
 
index b8c5fa4bf24e400ab7f8b8e5ee6e32fa56640a7e..e7c5d3d70cda4ad81553dffd0ab103ca200c4b7a 100644 (file)
 
 #include <string.h>
 
-#include <ioncore/common.h>
 #include <libtu/objp.h>
+#include <ioncore/common.h>
 #include <ioncore/strings.h>
 #include <ioncore/global.h>
 #include <ioncore/event.h>
 #include <ioncore/gr-util.h>
+#include <ioncore/sizehint.h>
+#include <ioncore/resize.h>
 #include "wmessage.h"
 #include "inputp.h"
 
@@ -72,6 +74,22 @@ static void wmsg_calc_size(WMessage *wmsg, WRectangle *geom)
 }
 
 
+void wmsg_size_hints(WMessage *wmsg, WSizeHints *hints_ret)
+{
+    int w=1, h=1;
+    
+    if(WMSG_BRUSH(wmsg)!=NULL){
+        mod_query_get_minimum_extents(WMSG_BRUSH(wmsg), FALSE, &w, &h);
+
+        w+=grbrush_get_text_width(WMSG_BRUSH(wmsg), "xxxxx", 5);
+    }
+    
+    hints_ret->min_set=TRUE;
+    hints_ret->min_width=w;
+    hints_ret->min_height=h;
+}
+
+
 /*}}}*/
 
 
@@ -233,12 +251,12 @@ static const char *wmsg_style(WMessage *wmsg)
 
 
 static DynFunTab wmsg_dynfuntab[]={
-    {window_draw,        wmsg_draw},
-    {input_calc_size,     wmsg_calc_size},
-    {input_scrollup,     wmsg_scrollup},
-    {input_scrolldown,    wmsg_scrolldown},
-    {(DynFun*)input_style,
-     (DynFun*)wmsg_style},
+    {window_draw, wmsg_draw},
+    {input_calc_size, wmsg_calc_size},
+    {input_scrollup, wmsg_scrollup},
+    {input_scrolldown, wmsg_scrolldown},
+    {(DynFun*)input_style, (DynFun*)wmsg_style},
+    {region_size_hints, wmsg_size_hints},
     END_DYNFUNTAB
 };
 
index d47a546a701125bcae6262a0db1c80e2a66abbab..16bd2d2e2a6d12a1e98c72a66535005f324d6580 100644 (file)
@@ -15,6 +15,7 @@
 #include <libtu/misc.h>
 #include <libtu/parser.h>
 #include <libtu/tokenizer.h>
+#include <libtu/util.h>
 
 #include <ioncore/common.h>
 #include <ioncore/global.h>
@@ -84,7 +85,7 @@ static void mod_sm_set_sessiondir()
      * to the session.
      */
     if(smdir!=NULL){
-        tmp=scat(smdir, "/ion3"); /* TODO: pwm<=>ion! */
+        tmp=scat3(smdir, "/", libtu_progbasename());
     }else if(id!=NULL){
         tmp=scat("gnome-session-", id);
         if(tmp!=NULL){
index 0a13f4d2a496249031b16c4c5d30721e2b96ffda..6a0102ee3261723d1ed030aff3ea00b4fd84943b 100644 (file)
@@ -27,8 +27,5 @@ include $(TOPDIR)/build/rules.mk
 
 ######################################
 
-_install: module_install symlink_install
+_install: module_install 
 
-symlink_install:
-       rm -f $(LCDIR)/ext_statusbar.lc
-       ln -s mod_statusbar.lc $(LCDIR)/ext_statusbar.lc
index 0e0cdb07327e16626233244d61ead01a34dfa1d7..d3c2102f5525ae52fcaf70279bada3e78bfbc571 100644 (file)
@@ -88,7 +88,7 @@ static ExtlTab configtab;
 static void help()
 {
     int i;
-    printf(TR("Usage: %s [options]\n\n"), prog_execname());
+    printf(TR("Usage: %s [options]\n\n"), libtu_progname());
     for(i=0; ion_opts[i].descr!=NULL; i++)
         ion_opts[i].descr=TR(ion_opts[i].descr);
     optparser_printhelp(OPTP_MIDLONG, ion_opts);
index a92127091150abd4f82bd45bc8d775bfde736d15..27ebe94f158be1bee918c0a6dce6f3974a5a6a09 100644 (file)
@@ -17,6 +17,7 @@ SOURCES=main.c tiling.c placement.c split.c split-stdisp.c \
 MAKE_EXPORTS=mod_tiling
 
 MODULE=mod_tiling
+MODULE_STUB=mod_tiling.lua
 
 ######################################
 
diff --git a/mod_tiling/mod_tiling.lua b/mod_tiling/mod_tiling.lua
new file mode 100644 (file)
index 0000000..428c3f6
--- /dev/null
@@ -0,0 +1,36 @@
+--
+-- ion/mod_menu/mod_tiling.lua -- Tiling module stub loader
+-- 
+-- Copyright (c) Tuomo Valkonen 2004-2007.
+--
+-- Ion is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+
+-- This is a slight abuse of the package.loaded variable perhaps, but
+-- library-like packages should handle checking if they're loaded instead of
+-- confusing the user with require/include differences.
+if package.loaded["mod_tiling"] then return end
+
+if not ioncore.load_module("mod_tiling") then
+    return
+end
+
+
+-- Change default layout
+if ioncore.getlayout("default")==ioncore.getlayout("empty") then
+    ioncore.deflayout("default", {
+        managed = {
+            {
+                type = "WTiling",
+                bottom = true,
+            }
+        }
+    })
+end
+
+
+-- Mark ourselves loaded.
+package.loaded["mod_tiling"]=true
index 48365528a2c2c16efc17ce8d35daf0135f8fef1b..6ec45e440bf91c166e3f4728615a6b703c691835 100644 (file)
@@ -9,6 +9,7 @@
  * (at your option) any later version.
  */
 
+#include <libtu/objp.h>
 #include <ioncore/common.h>
 #include <ioncore/mplex.h>
 #include <ioncore/focus.h>
 #include "tiling.h"
 
 
+/*{{{ mkbottom */
+
+
 static WRegion *mkbottom_fn(WWindow *parent, const WFitParams *fp, 
                             void *param)
 {
-    WRegion *reg=(WRegion*)param;
+    WRegion *reg=(WRegion*)param, *res;
+    WRegionAttachData data;
     WTiling *tiling;
-    WSplitRegion *node=NULL;
+    WFitParams fp2;
     
-    if(!region_fitrep(reg, parent, fp))
-        return NULL;
+    fp2.mode=REGION_FIT_EXACT;
+    fp2.g=fp->g;
     
-    tiling=create_tiling(parent, fp, NULL, FALSE);
+    tiling=create_tiling(parent, &fp2, NULL, FALSE);
     
     if(tiling==NULL)
         return NULL;
-    
-    node=create_splitregion(&REGION_GEOM(tiling), reg);
-    if(node!=NULL){
-        tiling->split_tree=(WSplit*)node;
-        tiling->split_tree->ws_if_root=tiling;
-        
-        region_detach_manager(reg);
         
-        if(tiling_managed_add(tiling, reg))
-            return (WRegion*)tiling;
-        
-        #warning "TODO: reattach?"
-        
-        destroy_obj((Obj*)tiling->split_tree);
-        tiling->split_tree=NULL;
-    }
+    data.type=REGION_ATTACH_REPARENT;
+    data.u.reg=reg;
     
-    destroy_obj((Obj*)tiling);
-    return NULL;
+    /* Warning! Potentially dangerous call to remove a `reg` from the same
+     * group we're being attached to, and from the attach routine of which
+     * this function is called from!
+     */
+    res=region_attach_helper((WRegion*)tiling, parent, &fp2,
+                             (WRegionDoAttachFn*)tiling_do_attach_initial, 
+                             NULL, &data);
+    
+    if(res==NULL){
+        destroy_obj((Obj*)tiling);
+        return NULL;
+    }
+        
+    return (WRegion*)tiling;
 }
 
 
@@ -63,14 +67,13 @@ bool mod_tiling_mkbottom(WRegion *reg)
     WGroup *grp=REGION_MANAGER_CHK(reg, WGroup);
     WGroupAttachParams ap=GROUPATTACHPARAMS_INIT;
     WRegionAttachData data;
-    WRegion *tiling;
     
     if(grp==NULL){
         warn(TR("Not member of a group"));
         return FALSE;
     }
     
-    if(grp->bottom!=NULL){
+    if(group_bottom(grp)!=NULL){
         warn(TR("Manager group already has bottom"));
         return FALSE;
     }
@@ -90,6 +93,74 @@ bool mod_tiling_mkbottom(WRegion *reg)
     data.u.n.fn=mkbottom_fn;
     data.u.n.param=reg;
     
-    /* kele... poisto samalla kuin attach */
+    /* See the "Warning!" above. */
     return (group_do_attach(grp, &ap, &data)!=NULL);
 }
+
+
+/*}}}*/
+
+
+/*{{{ untile */
+
+
+/*EXTL_DOC
+ * If \var{tiling} is managed by some group, float the frames in
+ * the tiling in that group, and dispose of \var{tiling}.
+ */
+EXTL_EXPORT
+bool mod_tiling_untile(WTiling *tiling)
+{
+    WGroup *grp=REGION_MANAGER_CHK(tiling, WGroup);
+    WGroupAttachParams param=GROUPATTACHPARAMS_INIT;
+    WTilingIterTmp tmp;
+    WRegion *reg, *reg2;
+    
+    if(grp==NULL){
+        warn(TR("Not member of a group"));
+        return FALSE;
+    }
+    
+    if(group_bottom(grp)==(WRegion*)tiling)
+        group_set_bottom(grp, NULL);
+    
+    /* Setting `batchop` will stop `tiling_managed_remove` from 
+     * resizing remaining frames into freed space. It will also 
+     * stop the tiling from being destroyed by actions of
+     * `tiling_managed_disposeroot`.
+     */
+    tiling->batchop=TRUE;
+    
+    FOR_ALL_MANAGED_BY_TILING(reg, tiling, tmp){
+        WRegionAttachData data;
+        
+        /* Don't bother with the status display */
+        if(reg==TILING_STDISP_OF(tiling))
+            continue;
+        
+        /* Don't bother with regions containing no client windows. */
+        if(!region_rescue_needed(reg))
+            continue;
+        
+        data.type=REGION_ATTACH_REPARENT;
+        data.u.reg=reg;
+        
+        param.geom_set=TRUE;
+        param.geom=REGION_GEOM(reg);
+        
+        reg2=group_do_attach(grp, &param, &data);
+        
+        if(reg2==NULL)
+            warn(TR("Unable to move a region from tiling to group."));
+    }
+    
+    tiling->batchop=FALSE;
+    
+    region_dispose((WRegion*)tiling);
+    
+    return TRUE;
+}
+
+
+/*}}}*/
+
index c3edc5e8bc3acff293ca12efe265cb858c4ada09..381bbb3ea4e2d499c9b066a9bd278792a6475884 100644 (file)
@@ -1029,6 +1029,7 @@ err:
 void splittree_changeroot(WSplit *root, WSplit *node)
 {
     WTiling *ws=(WTiling*)(root->ws_if_root);
+    
     assert(ws!=NULL);
     assert(ws->split_tree==root);
     root->ws_if_root=NULL;
index 159f001a0a9af20f7980469f19dc9f3fc0ae10f1..bbefef74855029cbab2a722fed77d5e87d29b6dc 100644 (file)
@@ -48,10 +48,6 @@ static WTilingIterTmp tiling_iter_default_tmp;
 /*{{{ Some helper routines */
 
 
-#define STDISP_OF(WS) \
-     ((WS)->stdispnode!=NULL ? (WS)->stdispnode->regnode.reg : NULL)
-
-
 static WSplitRegion *get_node_check(WTiling *ws, WRegion *reg)
 {
     WSplitRegion *node;
@@ -266,13 +262,6 @@ Window tiling_xwindow(const WTiling *ws)
 }
 
 
-/*
-WRegion *tiling_rqclose_propagate(WTiling *ws, WRegion *maybe_sub)
-{
-    return (region_rqclose((WRegion*)ws, FALSE) ? (WRegion*)ws : NULL);
-}
-*/
-
 WPHolder *tiling_prepare_manage_transient(WTiling *ws,
                                           const WClientWin *transient,
                                           const WManageParams *param,
@@ -500,7 +489,7 @@ bool tiling_managed_add_default(WTiling *ws, WRegion *reg)
     Window bottom=None, top=None;
     WFrame *frame;
     
-    if(STDISP_OF(ws)!=reg){
+    if(TILING_STDISP_OF(ws)!=reg){
         if(!ptrlist_insert_last(&(ws->managed_list), reg))
             return FALSE;
     }
@@ -535,30 +524,25 @@ bool tiling_managed_add(WTiling *ws, WRegion *reg)
 }
 
 
-static WRegion *create_initial_frame(WTiling *ws, WWindow *parent,
-                                     const WFitParams *fp)
+bool tiling_do_attach_initial(WTiling *ws, WRegion *reg)
 {
-    WRegion *reg=ws->create_frame_fn(parent, fp);
-
-    if(reg==NULL)
-        return NULL;
+    assert(ws->split_tree==NULL);
+    
+    ws->split_tree=(WSplit*)create_splitregion(&REGION_GEOM(reg), reg);
+    if(ws->split_tree==NULL)
+        return FALSE;
     
-    ws->split_tree=(WSplit*)create_splitregion(&(fp->g), reg);
-    if(ws->split_tree==NULL){
-        destroy_obj((Obj*)reg);
-        return NULL;
-    }
     ws->split_tree->ws_if_root=ws;
     
     if(!tiling_managed_add(ws, reg)){
-        destroy_obj((Obj*)reg);
         destroy_obj((Obj*)ws->split_tree);
-        return NULL;
+        ws->split_tree=NULL;
+        return FALSE;
     }
-
-    return reg;
+    
+    return TRUE;
 }
-
+                                      
 
 static WRegion *create_frame_tiling(WWindow *parent, const WFitParams *fp)
 {
@@ -575,7 +559,8 @@ bool tiling_init(WTiling *ws, WWindow *parent, const WFitParams *fp,
                          : create_frame_tiling);
     ws->stdispnode=NULL;
     ws->managed_list=NULL;
-
+    ws->batchop=FALSE;
+    
     ws->dummywin=XCreateWindow(ioncore_g.dpy, parent->win,
                                 fp->g.x, fp->g.y, 1, 1, 0,
                                 CopyFromParent, InputOnly,
@@ -589,7 +574,18 @@ bool tiling_init(WTiling *ws, WWindow *parent, const WFitParams *fp,
                     REGION_PLEASE_WARP);
     
     if(ci){
-        if(create_initial_frame(ws, parent, fp)==NULL){
+        WRegionAttachData data;
+        WRegion *res;
+        
+        data.type=REGION_ATTACH_NEW;
+        data.u.n.fn=(WRegionCreateFn*)ws->create_frame_fn;
+        data.u.n.param=NULL;
+    
+        res=region_attach_helper((WRegion*)ws, parent, fp,
+                                 (WRegionDoAttachFn*)tiling_do_attach_initial, 
+                                 NULL, &data);
+
+        if(res==NULL){
             XDestroyWindow(ioncore_g.dpy, ws->dummywin);
             return FALSE;
         }
@@ -648,44 +644,30 @@ void tiling_deinit(WTiling *ws)
 }
 
 
-bool tiling_managed_may_destroy(WTiling *ws, WRegion *reg)
+WRegion *tiling_managed_disposeroot(WTiling *ws, WRegion *reg)
 {
     WTilingIterTmp tmp;
     WRegion *mgd;
-
-    FOR_ALL_MANAGED_BY_TILING(mgd, ws, tmp){
-        if(mgd!=STDISP_OF(ws) && mgd!=reg){
-            return TRUE;
-        }
-    }
     
-    return region_manager_allows_destroying((WRegion*)ws);
-}
-
-
-bool tiling_may_destroy(WTiling *ws, WRegion *reg)
-{
-    WTilingIterTmp tmp;
-    WRegion *mgd;
+    if(ws->batchop)
+        return reg;
     
     FOR_ALL_MANAGED_BY_TILING(mgd, ws, tmp){
-        if(mgd!=STDISP_OF(ws)){
-            warn(TR("Workspace not empty - refusing to destroy."));
-            return FALSE;
-        }
+        if(mgd!=TILING_STDISP_OF(ws) && mgd!=reg)
+            return reg;
     }
     
-    return TRUE;
+    return region_disposeroot((WRegion*)ws);
 }
 
 
-bool tiling_rescue_clientwins(WTiling *ws, WPHolder *ph)
+bool tiling_rescue_clientwins(WTiling *ws, WRescueInfo *info)
 {
     WTilingIterTmp tmp;
     
     ptrlist_iter_init(&tmp, ws->managed_list);
     
-    return region_rescue_some_clientwins((WRegion*)ws, ph,
+    return region_rescue_some_clientwins((WRegion*)ws, info,
                                          (WRegionIterator*)ptrlist_iter, 
                                          &tmp);
 }
@@ -693,7 +675,7 @@ bool tiling_rescue_clientwins(WTiling *ws, WPHolder *ph)
 
 void tiling_do_managed_remove(WTiling *ws, WRegion *reg)
 {
-    if(STDISP_OF(ws)==reg){
+    if(TILING_STDISP_OF(ws)==reg){
         ws->stdispnode->regnode.reg=NULL;
     }else{
         ptrlist_remove(&(ws->managed_list), reg);
@@ -711,30 +693,49 @@ static bool nostdispfilter(WSplit *node)
 
 void tiling_managed_remove(WTiling *ws, WRegion *reg)
 {
-    bool ds=OBJ_IS_BEING_DESTROYED(ws);
     bool act=REGION_IS_ACTIVE(reg);
     bool mcf=region_may_control_focus((WRegion*)ws);
     WSplitRegion *node=get_node_check(ws, reg);
-    WRegion *other;
+    bool norestore=(OBJ_IS_BEING_DESTROYED(ws) || ws->batchop);
+    WRegion *other=NULL;
 
-    other=tiling_do_navi_next(ws, reg, REGION_NAVI_ANY, TRUE, FALSE);
+    if(!norestore)
+        other=tiling_do_navi_next(ws, reg, REGION_NAVI_ANY, TRUE, FALSE);
     
     tiling_do_managed_remove(ws, reg);
 
     if(node==(WSplitRegion*)(ws->stdispnode))
         ws->stdispnode=NULL;
     
-    if(node==NULL)
-        return;
-    
-    splittree_remove((WSplit*)node, (!ds && other!=NULL));
-    
-    if(!ds){
-        if(other==NULL)
-            region_dispose((WRegion*)ws, mcf);
-        else if(act && mcf)
-            region_warp(other);
+    if(node!=NULL){
+        bool reused=FALSE;
+        
+        if(other==NULL && !norestore){
+            WWindow *par=REGION_PARENT(ws);
+            WFitParams fp;
+            
+            assert(par!=NULL);
+            
+            fp.g=node->split.geom;
+            fp.mode=REGION_FIT_EXACT;
+            
+            other=(ws->create_frame_fn)(par, &fp);
+            
+            if(other!=NULL){
+                node->reg=other;
+                tiling_managed_add(ws, other);
+                reused=TRUE;
+            }else{
+                warn(TR("Tiling in useless state."));
+            }
+        }
+        
+        if(!reused)
+            splittree_remove((WSplit*)node, (!norestore && other!=NULL));
     }
+    
+    if(!norestore && other!=NULL && act && mcf)
+        region_warp(other);
 }
 
 
@@ -1086,24 +1087,45 @@ WFrame *tiling_split_at(WTiling *ws, WFrame *frame, const char *dirstr,
 }
 
 
-/*EXTL_DOC
- * Try to relocate regions managed by \var{frame} to another frame
- * and, if possible, destroy the frame.
- */
-EXTL_EXPORT_MEMBER
-bool tiling_unsplit_at(WTiling *ws, WFrame *frame)
+void do_unsplit(WRegion *reg)
 {
-    if(frame==NULL){
-        warn(TR("Nil frame."));
-        return FALSE;
+    WTiling *ws=REGION_MANAGER_CHK(reg, WTiling);
+    WPHolder *ph;
+    bool res;
+    
+    if(ws==NULL)
+        return;
+    
+    ph=region_get_rescue_pholder_for((WRegion*)ws, reg);
+    
+    if(ph==NULL){
+        res=!region_rescue_needed(reg);
+    }else{
+        res=region_rescue(reg, ph);
+        destroy_obj((Obj*)ph);
     }
     
-    if(REGION_MANAGER(frame)!=(WRegion*)ws){
-        warn(TR("The frame is not managed by the workspace."));
-        return FALSE;
+    if(!res){
+        warn(TR("Unable to unsplit: Could not move client windows "
+                "elsewhere within the tiling."));
+        return;
     }
     
-    return region_rqclose((WRegion*)frame, TRUE);
+    destroy_obj((Obj*)reg);
+}
+
+
+/*EXTL_DOC
+ * Try to relocate regions managed by \var{reg} to another frame
+ * and, if possible, destroy it.
+ */
+EXTL_EXPORT_MEMBER
+void tiling_unsplit_at(WTiling *ws, WRegion *reg)
+{
+    if(reg==NULL || REGION_MANAGER(reg)!=(WRegion*)ws)
+        return;
+        
+    mainloop_defer_action((Obj*)reg, (WDeferredAction*)do_unsplit);
 }
 
 
@@ -1716,11 +1738,8 @@ static DynFunTab tiling_dynfuntab[]={
     {(DynFun*)region_get_configuration,
      (DynFun*)tiling_get_configuration},
 
-    {(DynFun*)region_managed_may_destroy,
-     (DynFun*)tiling_managed_may_destroy},
-
-    {(DynFun*)region_may_destroy,
-     (DynFun*)tiling_may_destroy},
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)tiling_managed_disposeroot},
 
     {(DynFun*)region_current,
      (DynFun*)tiling_current},
index 7d9346973ced3460bc20cc23e851e1a15cfd2d65..31abe91527ef53d634ed6972eb08f3acb8eee918 100644 (file)
@@ -20,6 +20,7 @@
 #include <ioncore/rectangle.h>
 #include <ioncore/pholder.h>
 #include <ioncore/navi.h>
+#include <ioncore/manage.h>
 #include "split.h"
 
 
@@ -31,6 +32,7 @@ DECLCLASS(WTiling){
     PtrList *managed_list;
     WRegionSimpleCreateFn *create_frame_fn;
     Window dummywin;
+    bool batchop;
 };
 
 
@@ -41,6 +43,8 @@ extern WTiling *create_tiling(WWindow *parent, const WFitParams *fp,
 extern WTiling *create_tiling_simple(WWindow *parent, const WFitParams *fp);
 extern void tiling_deinit(WTiling *ws);
 
+extern bool tiling_do_attach_initial(WTiling *tiling, WRegion *reg);
+
 extern ExtlTab tiling_resize_tree(WTiling *ws, WSplit *node, ExtlTab g);
 
 extern WRegion *tiling_current(WTiling *ws);
@@ -51,7 +55,7 @@ extern WRegion *tiling_region_at(WTiling *ws, int x, int y);
 extern WFrame *tiling_split_top(WTiling *ws, const char *dirstr);
 extern WFrame *tiling_split_at(WTiling *ws, WFrame *frame, 
                               const char *dirstr, bool attach_current);
-extern bool tiling_unsplit_at(WTiling *ws, WFrame *frame);
+extern void tiling_unsplit_at(WTiling *ws, WRegion *reg);
 
 extern WSplitSplit *tiling_set_floating(WTiling *ws, WSplitSplit *split, 
                                        int sp);
@@ -85,12 +89,11 @@ extern void tiling_managed_rqgeom(WTiling *ws, WRegion *reg,
                                   WRectangle *geomret);
 extern void tiling_managed_remove(WTiling *ws, WRegion *reg);
 extern void tiling_managed_activated(WTiling *ws, WRegion *reg);
-extern bool tiling_rescue_clientwins(WTiling *ws, WPHolder *ph);
+extern bool tiling_rescue_clientwins(WTiling *ws, WRescueInfo *ph);
 extern WPHolder *tiling_get_rescue_pholder_for(WTiling *ws, WRegion *mgd);
 extern void tiling_do_set_focus(WTiling *ws, bool warp);
 extern bool tiling_managed_prepare_focus(WTiling *ws, WRegion *reg, 
                                         int flags, WPrepareFocusResult *res);
-extern bool tiling_managed_may_destroy(WTiling *ws, WRegion *reg);
 extern void tiling_manage_stdisp(WTiling *ws, WRegion *stdisp, 
                                 const WMPlexSTDispInfo *di);
 extern void tiling_unmanage_stdisp(WTiling *ws, bool permanent, bool nofocus);
@@ -123,5 +126,10 @@ typedef PtrListIterTmp WTilingIterTmp;
 #define FOR_ALL_MANAGED_BY_TILING_UNSAFE(VAR, WS) \
     FOR_ALL_ON_PTRLIST_UNSAFE(WRegion*, VAR, (WS)->managed_list)
 
+/* Misc. */
+
+#define TILING_STDISP_OF(WS) \
+     ((WS)->stdispnode!=NULL ? (WS)->stdispnode->regnode.reg : NULL)
+
 
 #endif /* ION_MOD_TILING_TILING_H */
index ca01137e8e972e82c42be4cd1983267fcf2ba121..805daf010d3609fc3c78893c5c3014f7dcb028db 100644 (file)
@@ -81,11 +81,22 @@ defmenu("mainmenu", {
     menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"),
     menuentry("Help",        "ioncore.exec_on(_, ':man pwm3')"),
     submenu("Workspaces",    "wsmenu"),
-    menuentry("New",         "ioncore.create_ws(_)"),
     submenu("Styles",        "stylemenu"),
     submenu("Session",       "sessionmenu"),
 })
 
+-- Application menu
+defmenu("appmenu", {
+    menuentry("XTerm",          "ioncore.exec_on(_, 'xterm')"),
+    menuentry("W3M",            "ioncore.exec_on(_, ':w3m -v')"),
+    menuentry("Rxvt",           "ioncore.exec_on(_, 'rxvt')"),
+    menuentry("Opera",          "ioncore.exec_on(_, 'opera')"),
+    menuentry("Links",          "ioncore.exec_on(_, ':links')"),
+    menuentry("Konqueror",      "ioncore.exec_on(_, 'konqueror')"),
+    menuentry("Dillo",          "ioncore.exec_on(_, 'dillo')"),
+    menuentry("Run...",         "mod_query.query_exec(_)"),
+})
+
 -- Workspace menu
 defmenu("wsmenu", {
     menuentry("New",         "ioncore.create_ws(_)"),
index bbb042f792dfb9fcbf294cb33b03e77ae713e6d8..c4a080474a9458aca9e25b9e144b729563bef60b 100644 (file)
--- a/pwm/pwm.c
+++ b/pwm/pwm.c
@@ -76,7 +76,7 @@ static OptParserOpt pwm_opts[]={
 static void help()
 {
     int i;
-    printf(TR("Usage: %s [options]\n\n"), prog_execname());
+    printf(TR("Usage: %s [options]\n\n"), libtu_progname());
     for(i=0; pwm_opts[i].descr!=NULL; i++)
         pwm_opts[i].descr=TR(pwm_opts[i].descr);
     optparser_printhelp(OPTP_MIDLONG, pwm_opts);
@@ -188,7 +188,7 @@ fail:
             fclose(ef);
             pid=fork();
             if(pid==0){
-                ioncore_setup_environ(DefaultScreen(ioncore_g.dpy));
+                ioncore_setup_display(DefaultScreen(ioncore_g.dpy));
                 if(!may_continue)
                     XCloseDisplay(ioncore_g.dpy);
                 else
index e09131818094b347187e2e6ccc79f637422b58df..c6165a70d993ce151b6a4fc5984ae12111f2612e 100644 (file)
--- a/system.mk
+++ b/system.mk
@@ -81,13 +81,14 @@ X11_PREFIX=/usr/X11R6
 X11_LIBS=-L$(X11_PREFIX)/lib -lX11 -lXext
 X11_INCLUDES=-I$(X11_PREFIX)/include
 
-# XFree86 libraries up to 4.3.0 have a bug that will cause Ion to segfault
-# if Opera is used when i18n support is enabled. The following setting
-# should work around that situation.
+# XFree86 libraries up to 4.3.0 have a bug that can cause a segfault.
+# The following setting  should  work around that situation.
 DEFINES += -DCF_XFREE86_TEXTPROP_BUG_WORKAROUND
 
-# Use the Xutf8 routines (XFree86 extension) instead of Xmb routines in
-# an UTF8 locale.
+# Use the Xutf8 routines (XFree86 extension) instead of the Xmb routines
+# in an UTF-8 locale. (No, you don't need this in UTF-8 locales, and 
+# most likely don't even want. It's only there because both Xmb and 
+# Xutf8 routines are broken, in different ways.)
 #DEFINES += -DCF_DE_USE_XUTF8
 
 # Remap F11 key to SunF36 and F12 to SunF37? You may want to set this
@@ -105,7 +106,6 @@ DEFINES += -DCF_XFREE86_TEXTPROP_BUG_WORKAROUND
 # in sprintf_2.2/ is used.
 #HAS_SYSTEM_ASPRINTF=1
 
-
 # If you're on an archaic system (such as relatively recent *BSD releases)
 # without even dummy multibyte/widechar and localisation support, you may 
 # have to uncomment the following line:
index 9f71f83877d3b71000c46bec7dcef40d430f96c5..969839bbddb452c217e730561fadb34181442063 100644 (file)
@@ -1,11 +1,14 @@
 #!/bin/sh
 
+prog=$0
 tocompl=""
 section=""
 beg=""
 action=""
 usercache=""
 syscache=""
+linebeg="^"
+icase=""
 
 translate_grepsafe() { 
     # The regexp below is supposed to be [\[\].*$^\\], but sed sucks
@@ -15,30 +18,46 @@ translate_grepsafe() {
     sed 's:^[ \t]*\(.*\)[ \t]*$:\1:; s:[[.[.][.].].*$^\\]:\\&:g'
 }
 
-case "$1" in
-    -complete)
-        read section tocompl << EOF
+
+while test $# -ge 1; do
+    case "$1" in
+        -mid)
+            linebeg=""
+            ;;
+        -icase)
+            icase="-i"
+            ;;
+        -complete)
+            read section tocompl << EOF
 $2
 EOF
-        if test "$tocompl" = ""; then
-            tocompl="$section"
-            section=""
-        else
-            beg="$section "
-        fi
-        tocompl=`echo "$tocompl" | translate_grepsafe`
-        action="complete"
-        ;;
-    -mkusercache)
-        action="mkusercache"
-        ;;
-    -mksyscache)
-        action="mksyscache"
-        ;;
-esac
-   
+            if test "$tocompl" = ""; then
+                tocompl="$section"
+                section=""
+            else
+                beg="$section "
+            fi
+            tocompl=`echo "$tocompl" | translate_grepsafe`
+            action="complete"
+            break
+            ;;
+        -mkusercache)
+            action="mkusercache"
+            break
+            ;;
+        -mksyscache)
+            action="mksyscache"
+            break
+            ;;
+        *)
+            break
+            ;;
+    esac
+    shift
+done
+
 if test "x$action" = x; then
-    echo 2>&1 "Usage: $0 (-complete what|-mkusercache|-mksyscache)"
+    echo 2>&1 "Usage: $prog [-icase] [-mid] (-complete what|-mkusercache|-mksyscache)"
     exit 1
 fi
         
@@ -58,7 +77,7 @@ grepper() {
         if test "$section" = ""; then
             section="[0-9]"
         fi
-        grep "^$tocompl.*\.$section"
+        grep $icase "$linebeg$tocompl.*\.$section"
     fi
 }
 
index 4688aae84d469ea8660aa4c7b94d2bdb2b247099..31b30f560c8dd966a338ff9f19f475e2a458e2b9 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,2 +1,2 @@
-#define ION_VERSION "3ds-20070203"
+#define ION_VERSION "3ds-20070318"
 #define ION_API_VERSION "3-"ION_VERSION