+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
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.
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>
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.
+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
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
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
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])
{
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;
}
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)
}
-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;
}
}
}
+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)
{
}
+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);
+}
+
+
/*}}}*/
}
+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);
}
style->border.hl=1;
style->border.pad=1;
style->border.style=DEBORDER_INLAID;
+ style->border.sides=DEBORDER_ALL;
style->spacing=0;
DEBORDER_GROOVE /* \_/xxxx\_/ */
};
+enum{
+ DEBORDER_ALL=0,
+ DEBORDER_TB,
+ DEBORDER_LR
+};
+
enum{
DEALIGN_LEFT=0,
DECLSTRUCT(DEBorder){
uint sh, hl, pad;
uint style;
+ uint sides;
};
+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
\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
\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
\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
\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}
\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}
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}
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}.
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}
\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} &
Context:
-[TAG ion-doc-3ds-20070203
-Tuomo Valkonen <tuomov@iki.fi>**20070203150437]
+[TAG ion-doc-3ds-20070318
+Tuomo Valkonen <tuomov@iki.fi>**20070318200902]
\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}
\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}{}
\title{Configuring and extending Ion3 with Lua}
\author{Tuomo Valkonen \\ tuomov at iki.fi}
-\date{2007-02-03}
+\date{2007-03-18}
\makeindex
-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
(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
]
-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
\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}
\stepcounter{subsection}
\stepcounter{subsection}
{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline1031}%
+\lthtmlinlinemathA{tex2html_wrap_inline1045}%
$N=1{\ldots} 5$%
\lthtmlinlinemathZ
\lthtmlcheckvsize\clearpage}
\stepcounter{subsection}
\stepcounter{subsection}
\stepcounter{subsection}
+\stepcounter{subsection}
\stepcounter{subsubsection}
\stepcounter{subsubsection}
\stepcounter{subsubsection}
\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}
\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}
<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>
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-->
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
<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>
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-->
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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/;
$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";
$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";
$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/;
$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";
$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/;
$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/;
$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";
$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";
$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";
$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";
$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";
$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";
$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";
$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/;
$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/;
$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";
$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/;
$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/;
$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/;
$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/;
$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/;
$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/;
$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";
$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/;
$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";
$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/;
$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";
$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/;
$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/;
$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/;
$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";
$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";
$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";
$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/;
$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";
<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>
- <B> <A NAME="tex2html129"
+ <B> <A NAME="tex2html132"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<!--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-->
<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>
- <B> <A NAME="tex2html422"
+ <B> <A NAME="tex2html431"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html424"
+ <B> <A NAME="tex2html433"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
- <B> <A NAME="tex2html422"
+ <B> <A NAME="tex2html431"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html424"
+ <B> <A NAME="tex2html433"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html436"
+ <B> <A NAME="tex2html445"
HREF="node1.html">Contents</A></B>
<BR>
<BR></DIV>
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>
<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>
- <B> <A NAME="tex2html446"
+ <B> <A NAME="tex2html455"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html448"
+ <B> <A NAME="tex2html457"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
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>
<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>
- <B> <A NAME="tex2html223"
+ <B> <A NAME="tex2html229"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html225"
+ <B> <A NAME="tex2html231"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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>
- <B> <A NAME="tex2html223"
+ <B> <A NAME="tex2html229"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html225"
+ <B> <A NAME="tex2html231"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html237"
+ <B> <A NAME="tex2html243"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html239"
+ <B> <A NAME="tex2html245"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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-->
| |--> 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
</PRE></TD></TR>
</TABLE>
</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>
- <B> <A NAME="tex2html237"
+ <B> <A NAME="tex2html243"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html239"
+ <B> <A NAME="tex2html245"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html258"
+ <B> <A NAME="tex2html264"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html260"
+ <B> <A NAME="tex2html266"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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>
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.
<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>
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>
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...<3>'; 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
<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>
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>.
<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>
<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>
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
</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
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>
</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
</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
</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>
</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.
</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>
</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.
</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>
</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>
</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
</DD>
<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1440"></A>
+<DD><A NAME="1445"></A>
Discard this winprop after first use.
</DD>
</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>
</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.
</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>.
</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>
</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>
<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
<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>
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
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
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:
<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>
<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>
<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>
<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
</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>
- <B> <A NAME="tex2html258"
+ <B> <A NAME="tex2html264"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html260"
+ <B> <A NAME="tex2html266"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html294"
+ <B> <A NAME="tex2html301"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html296"
+ <B> <A NAME="tex2html303"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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-->
<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>
<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
<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>
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>
<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>
- <B> <A NAME="tex2html294"
+ <B> <A NAME="tex2html301"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html296"
+ <B> <A NAME="tex2html303"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html325"
+ <B> <A NAME="tex2html332"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html327"
+ <B> <A NAME="tex2html334"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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-->
<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
<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>
- <B> <A NAME="tex2html325"
+ <B> <A NAME="tex2html332"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html327"
+ <B> <A NAME="tex2html334"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html345"
+ <B> <A NAME="tex2html352"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html347"
+ <B> <A NAME="tex2html354"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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">
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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">
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<P>
<DL>
-<DD><A NAME="4610"></A>
+<DD><A NAME="4699"></A>
<A NAME="fn:export"></A>
</DD>
<DT><STRONG>Synopsis:</STRONG></DT>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
</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">
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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">
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
</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>
<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>
<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>
<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>
<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>
<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>
<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>
<P>
<DL>
-<DD><A NAME="9530"></A>
+<DD><A NAME="9878"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9531"></A>
+<DD><A NAME="9879"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9532"></A>
+<DD><A NAME="9880"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9533"></A>
+<DD><A NAME="9881"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9534"></A>
+<DD><A NAME="9882"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9535"></A>
+<DD><A NAME="9883"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9536"></A>
+<DD><A NAME="9884"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9537"></A>
+<DD><A NAME="9885"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9538"></A>
+<DD><A NAME="9886"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9539"></A>
+<DD><A NAME="9887"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9540"></A>
+<DD><A NAME="9888"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<P>
<DL>
-<DD><A NAME="9541"></A>
+<DD><A NAME="9889"></A>
</DD>
<DT><STRONG>Hook name:</STRONG></DT>
<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>
- <B> <A NAME="tex2html345"
+ <B> <A NAME="tex2html352"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html347"
+ <B> <A NAME="tex2html354"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html393"
+ <B> <A NAME="tex2html402"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html395"
+ <B> <A NAME="tex2html404"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
<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-->
<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>
- <B> <A NAME="tex2html393"
+ <B> <A NAME="tex2html402"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html395"
+ <B> <A NAME="tex2html404"
HREF="node11.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->
<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>
- <B> <A NAME="tex2html408"
+ <B> <A NAME="tex2html417"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html410"
+ <B> <A NAME="tex2html419"
HREF="node11.html">Index</A></B>
<BR>
<BR></DIV>
| |--> 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
</PRE></TD></TR>
</TABLE>
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>
| |--> 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}
######################################
-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
######################################
_install: etc_install
rm -f $(ETCDIR)/look.lua
- ln -s look_cleanviolet.lua $(ETCDIR)/look.lua
+ ln -s look_newviolet.lua $(ETCDIR)/look.lua
--- /dev/null
+--
+-- 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)
--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")
--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)
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')"),
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:')"),
})
}),
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(_)"),
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)"),
kpress("V", "WFrame.maximize_vert(_)"),
bdoc("Attach tagged objects to this frame."),
- kpress("A", "WFrame.attach_tagged(_)"),
+ kpress("A", "ioncore.tagged_attach(_)"),
}),
})
-- 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(_)"),
})
--- 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()"),
})
--- 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')"),
})
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(_)"),
+})
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{
-- Layouts for Ion
--
+--
+-- Helper routines and structures
+--
+
+-- Tiled frame template for the layouts below
local a_frame = {
type="WSplitRegion",
regparams = {
}
}
+-- 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))
+++ /dev/null
---
--- 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")
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,
}
--]]
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')"),
dopath("lookcommon_clean")
-de.defstyle("tab-menuentry-big", {
- based_on = "tab-menuentry",
- font = "-*-helvetica-medium-r-normal-*-17-*-*-*-*-*-*-*",
- padding_pixels = 7,
-})
-
gr.refresh()
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()
--- /dev/null
+--
+-- 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()
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",
--- 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")
--- /dev/null
+-- 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,
+})
--- /dev/null
+-- 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",
+ }),
+})
--- /dev/null
+-- 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,
+})
--- 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")
--- /dev/null
+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",
+})
--- /dev/null
+-- 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",
+ }),
+})
--- /dev/null
+-- 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,
+})
Context:
-[TAG ion-3ds-20070203
-Tuomo Valkonen <tuomov@iki.fi>**20070203145039]
+[TAG ion-3ds-20070318
+Tuomo Valkonen <tuomov@iki.fi>**20070318203122]
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);
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
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 \
}
+ObjList *ioncore_activity_list()
+{
+ return actlist;
+}
+
+
/*EXTL_DOC
* Go to first region on activity list.
*/
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 */
#include "manage.h"
#include "extlconv.h"
#include "names.h"
+#include "focus.h"
/*{{{ Helper */
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®ION_FIT_WHATEVER){
/* fp->g is not final; substitute size with current to avoid
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;
}
/*}}}*/
-/*{{{ 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);
}
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 */
*/
#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"
/*
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;
+}
+
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 */
#include "bindmaps.h"
#include "return.h"
#include "conf.h"
+#include "group.h"
static void set_clientwin_state(WClientWin *cwin, int state);
}
-#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)
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;
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;
+ }
}
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
: ForgetGravity);
param.tfor=clientwin_get_transient_for(cwin);
+ if(!extl_table_gets_b(cwin->proptab, "userpos", ¶m.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
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);
}
}
-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
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;
}
}
/*{{{ 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;
}
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){
#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){
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);
* \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}
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,
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);
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);
#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)
WGroup *grp;
bool set, nset;
- reg=region_group_if_bottom(reg);
+ reg=region_groupleader_of(reg);
grp=find_group(check_mplex(reg, &mode));
}
+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));
+}
+
+
extern bool ioncore_detach(WRegion *reg, int sp);
+extern void ioncore_unsqueeze(WRegion *reg, bool override);
+
#endif /* ION_IONCORE_DETACH_H */
}
-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);
}
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);
}
}
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));
/*{{{ 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)
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.)
}
}
- 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;
+ }
}
}
-
-void ioncore_handle_focus_in(const XFocusChangeEvent *ev, bool skip)
+void ioncore_handle_focus_in(const XFocusChangeEvent *ev)
{
WRegion *reg;
WWindow *wwin;
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;
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;
+ }
}
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));
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);
/*{{{ 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);
snprintf(tmp+strlen(tmp), 11, ".%u", (unsigned)xscr);
putenv(tmp);
-
+
/* No need to free it, we'll execve soon */
/*free(tmp);*/
}
-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)
}
+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,
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());
}
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);
}
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);
}
#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,
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));
extern void ioncore_emergency_snapshot();
+/* const WExecP* parameter */
+extern WHook *ioncore_exec_environ_hook;
+
#endif /* ION_IONCORE_EXEC_H */
}
+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)
}
-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)
}
-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)
}
-static bool tiling_placement(WGroup *ws, WRectangle *g)
+static bool tiling_placement(WGroup *ws, uint level, WRectangle *g)
{
WRegion *p;
WRectangle r, r2;
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;
}
}
}
-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);
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 */
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,
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);
}
{
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);
}
*/
void region_pointer_focus_hack(WRegion *reg)
{
- WRegion *act=ioncore_await_focus();
- const WRectangle *g=®ION_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;
}
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){
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);
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;*/
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);
+ }
}
}
-#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;
}
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;
}
{(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},
/* 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);
#include "fullscreen.h"
#include "mwmhints.h"
#include "focus.h"
-#include "group-cw.h"
+#include "group.h"
#include "return.h"
}
-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;
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))
* 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;
}
#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);
IONCORE_OPMODE_DEINIT
};
+enum{
+ IONCORE_FOCUSNEXT_OTHER,
+ IONCORE_FOCUSNEXT_POINTERHACK,
+ IONCORE_FOCUSNEXT_ENTERWINDOW,
+ IONCORE_FOCUSNEXT_FALLBACK
+};
+
+
INTRSTRUCT(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.
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. */
unset_return,
pseudoactivated,
pseudoinactivated,
- deinit;
+ deinit,
+ map,
+ unmap;
} notifies;
};
* 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
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);
}
* 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
/* Title has changed */
region_notify_change((WRegion*)cwg, how);
}
+
+ group_managed_notify(&cwg->grp, reg, how);
}
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;
static void group_place_stdisp(WGroup *ws, WWindow *parent,
int pos, WRegion *stdisp);
+static void group_remanage_stdisp(WGroup *ws);
/*{{{ Stacking list stuff */
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®ION_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;
}
-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);
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);
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
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){
-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,
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
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);
if(rectangle_compare(&fp.g, ®ION_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)
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){
}
+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)
/*{{{ 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}.
}
-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);
}
extl_unref_table(substab);
}
-
- ws->bottom_last_close=extl_table_is_bool_set(tab, "bottom_last_close");
}
{(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},
WStacking *current_managed;
WStacking *bottom;
Window dummywin;
- uint bottom_last_close:1;
};
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);
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;
#include "resize.h"
#include "gr.h"
#include "event.h"
+#include "strings.h"
/*{{{ Init/deinit */
* 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);
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);
#include "group-cw.h"
#include "group-ws.h"
#include "llist.h"
+#include "exec.h"
+#include "screen-notify.h"
+
#include "../version.h"
#include "exports.h"
void ioncore_warn_nolog(const char *str)
{
- fprintf(stderr, "%s: %s\n", prog_execname(), str);
+ fprintf(stderr, "%s: %s\n", libtu_progname(), str);
}
#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()
{
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",
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;
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;
INITSTR(pseudoinactivated);
INITSTR(tag);
INITSTR(deinit);
+ INITSTR(map);
+ INITSTR(unmap);
return TRUE;
}
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
-- \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
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
end
-local function get_ctxmenu(reg, sub, is_par)
+local function get_ctxmenu(reg, sub)
local m={}
local function cp(m2)
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
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
-- }}}
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
---]]
+
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
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
}
+/*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.
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);
#include "extlconv.h"
#include "return.h"
#include "conf.h"
+#include "detach.h"
#include "group-ws.h"
}
+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);
assert(param->tfor!=cwin);
ph=region_prepare_manage_transient((WRegion*)param->tfor, cwin,
param, 0);
+ uq=TRUE;
}
if(ph==NULL){
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;
}
/*{{{ Rescue */
+DECLSTRUCT(WRescueInfo){
+ WPHolder *ph;
+ WRegion *get_rescue;
+ bool failed_get;
+ bool test;
+};
+
+
static WRegion *iter_children(void *st)
{
WRegion **nextp=(WRegion**)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);
+}
+
+
/*}}}*/
/* 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);
}
-bool mplex_may_destroy(WMPlex *mplex)
-{
- if(mplex->mgd!=NULL){
- warn(TR("Refusing to destroy - not empty."));
- return FALSE;
- }
-
- return TRUE;
-}
-
-
/*}}}*/
/*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}. \\
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);
/*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
/*{{{ 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;
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;
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;
}
}
/* 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);
- }*/
+ }
}
* 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);
+ }
}
}
static bool mplex_refocus(WMPlex *mplex, WStacking *node, bool warp)
{
- WRegion *foc=NULL;
+ WStacking *foc=NULL;
bool ret=TRUE;
if(node!=NULL){
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;
}
WStacking *sub, int flags,
WPrepareFocusResult *res)
{
- WRegion *foc;
+ WStacking *foc;
if(sub==NULL && node==NULL)
return FALSE;
foc=mplex_do_to_focus(mplex, sub);
if(foc!=NULL){
- res->reg=foc;
+ if(ioncore_g.autoraise &&
+ !(flags®ION_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;
}
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);
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);
hidden=(hidden || (!sw && !(param->flags&MPLEX_ATTACH_UNNUMBERED)));
-
node=create_stacking();
if(node==NULL)
}
node->hidden=TRUE;
- node->szplcy=param->szplcy;
+ node->szplcy=szplcy;
node->level=level;
if(lnode!=NULL){
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, ®ION_GEOM(reg))!=RECTANGLE_SAME)
+ region_fitrep(reg, NULL, &fp);
+ }
+
if(!hidden)
mplex_do_node_display(mplex, node, FALSE);
else
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(¶m->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);
}
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;
* \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}
*
}
-/*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)
{
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);
}
-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);
}
}
if(oldstdisp!=NULL && oldstdisp!=reg)
- region_dispose((WRegion*)oldstdisp, FALSE);
+ mainloop_defer_destroy((Obj*)oldstdisp);
return TRUE;
}
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);
{(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},
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);
/* Misc */
extern WRegion *mplex_current(WMPlex *mplex);
-extern bool mplex_may_destroy(WMPlex *mplex);
extern bool mplex_managed_i(WMPlex *mplex, ExtlFn iterfn);
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 */
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;
}
/*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)
{
WRegionNaviData data;
- if(reg==NULL){
- /* ??? */
+ if(reg==NULL)
return NULL;
- }
if(!get_param(&data, dirstr, param))
return NULL;
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;
}
#include "focus.h"
#include "xwindow.h"
#include "extlconv.h"
+#include "group.h"
/*{{{ Atoms */
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);
}
/*{{{ _NET_WM_STATE */
-int netwm_check_initial_fullscreen(WClientWin *cwin, bool sw)
+WScreen *netwm_check_initial_fullscreen(WClientWin *cwin)
{
int i, n;
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;
}
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.. */
}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;
#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 */
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);
}
-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);
{
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));
}
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;
}
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);
}
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){
/* 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;
}
/*{{{ 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);
}
* 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));
}
{
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;
+ }
}
* 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)
}
-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);
}
/* 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);
{(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},
{(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},
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);
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);
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);
}
+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)
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;
}
+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)
{
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);
}
+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}),
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, ®ION_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);
}
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);
const WRectangle *rgeom,
WRectangle *pgeom);
+extern void rqgeomparams_from_table(WRQGeomParams *rq,
+ const WRectangle *origg, ExtlTab g);
+
#endif /* ION_IONCORE_RESIZE_H */
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);
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);
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;
}
+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;
}
--- /dev/null
+/*
+ * 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, ¶m,
+ (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);
+
+ }
+}
+
+
+/*}}}*/
+
--- /dev/null
+/*
+ * 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 */
#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 */
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));
n==NULL ? "" : n);
}
+ if(region_is_activity_r((WRegion*)scr))
+ screen_update_notifywin(scr);
+
screen_update_infowin(scr);
mplex_call_changed_hook((WMPlex*)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, ¶m,
- (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. */
}
-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;
}
-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);
-}
-
/*}}}*/
{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},
{(DynFun*)region_fitrep,
(DynFun*)screen_fitrep},
- {(DynFun*)region_get_rescue_pholder_for,
- (DynFun*)screen_get_rescue_pholder_for},
-
END_DYNFUNTAB
};
int id;
Atom atom_workspace;
bool uses_root;
- int rotation;
WRectangle managed_off;
WScreen *next_scr, *prev_scr;
Watch notifywin_watch;
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();
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){
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);
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){
* 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 */;
}
/*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
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 */
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);
}
/*}}}*/
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]
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
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);
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;
}
return 0;
}
- if(param.spec->fn==NULL){
+ if(!param.spec->registered){
extl_warn(TR("Called function has been unregistered."));
return 0;
}
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;
}
®data)){
return FALSE;
}
+ spec[i].registered=TRUE;
}
return TRUE;
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);
regdata.spec=&(spec[i]);
extl_cpcall(l_st, (ExtlCPCallFn*)extl_do_unregister_function,
®data);
+ spec[i].registered=FALSE;
}
}
ExtlL2CallHandler *l2handler;
bool safe;
bool untraced;
+ bool registered;
} ExtlExportedFnSpec;
typedef struct ExtlSafelist_struct{
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){
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;
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]
if(!progname_enable)
return;
- progname=prog_execname();
+ progname=libtu_progname();
if(progname==NULL)
return;
StringId stringstore_alloc(const char *str)
{
+ if(str==NULL)
+ return STRINGID_NONE;
+
return stringstore_alloc_n(str, strlen(str));
}
{
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.");
}
-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);
+}
+
#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 */
}
-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)
{
{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,
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,
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;
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;
}
#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"
}
+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;
+}
+
+
/*}}}*/
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){
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);
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);
EXTL_EXPORT_MEMBER
void menu_cancel(WMenu *menu)
{
- if(region_manager_allows_destroying((WRegion*)menu))
- region_dispose_((WRegion*)menu);
+ region_defer_rqdispose((WRegion*)menu);
}
{window_insstr, menu_insstr},
{region_restack, menu_restack},
{region_stacking, menu_stacking},
+ {region_size_hints, menu_size_hints},
END_DYNFUNTAB
};
#include <ioncore/window.h>
#include <ioncore/gr.h>
#include <ioncore/rectangle.h>
+#include <ioncore/binding.h>
INTRCLASS(WMenu);
INTRSTRUCT(WMenuEntry);
char *typeahead;
uint gm_kcb, gm_state;
+
+ /*WBindmap *cycle_bindmap;*/
};
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
-- 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
#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;
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;
#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 */
EXTL_EXPORT_MEMBER
void input_cancel(WInput *input)
{
- if(region_manager_allows_destroying((WRegion*)input))
- region_dispose_((WRegion*)input);
+ region_defer_rqdispose((WRegion*)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 */
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 */
-- 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}
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)
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
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
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
--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
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
#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
*/
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;
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;
#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 */
#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"
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;
}
}
+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;
+}
+
+
/*}}}*/
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);
{input_scrolldown, wedln_scrolldown_completions},
{window_insstr, wedln_insstr},
{(DynFun*)input_style, (DynFun*)wedln_style},
+ {region_size_hints, wedln_size_hints},
END_DYNFUNTAB
};
#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"
}
+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;
+}
+
+
/*}}}*/
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
};
#include <libtu/misc.h>
#include <libtu/parser.h>
#include <libtu/tokenizer.h>
+#include <libtu/util.h>
#include <ioncore/common.h>
#include <ioncore/global.h>
* 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){
######################################
-_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
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);
MAKE_EXPORTS=mod_tiling
MODULE=mod_tiling
+MODULE_STUB=mod_tiling.lua
######################################
--- /dev/null
+--
+-- 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
* (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(®ION_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;
}
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;
}
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, ¶m, &data);
+
+ if(reg2==NULL)
+ warn(TR("Unable to move a region from tiling to group."));
+ }
+
+ tiling->batchop=FALSE;
+
+ region_dispose((WRegion*)tiling);
+
+ return TRUE;
+}
+
+
+/*}}}*/
+
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;
/*{{{ 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;
}
-/*
-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,
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;
}
}
-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(®ION_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)
{
: 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,
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;
}
}
-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);
}
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);
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);
}
}
-/*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);
}
{(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},
#include <ioncore/rectangle.h>
#include <ioncore/pholder.h>
#include <ioncore/navi.h>
+#include <ioncore/manage.h>
#include "split.h"
PtrList *managed_list;
WRegionSimpleCreateFn *create_frame_fn;
Window dummywin;
+ bool batchop;
};
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);
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);
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);
#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 */
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(_)"),
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);
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
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
# 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:
#!/bin/sh
+prog=$0
tocompl=""
section=""
beg=""
action=""
usercache=""
syscache=""
+linebeg="^"
+icase=""
translate_grepsafe() {
# The regexp below is supposed to be [\[\].*$^\\], but sed sucks
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
if test "$section" = ""; then
section="[0-9]"
fi
- grep "^$tocompl.*\.$section"
+ grep $icase "$linebeg$tocompl.*\.$section"
fi
}
-#define ION_VERSION "3ds-20070203"
+#define ION_VERSION "3ds-20070318"
#define ION_API_VERSION "3-"ION_VERSION