]> git.decadent.org.uk Git - ion3.git/commitdiff
[svn-upgrade] Integrating new upstream version, ion3 (20080707) 20080707
authorBen Hutchings <ben@decadent.org.uk>
Sun, 2 Nov 2008 12:10:41 +0000 (12:10 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 2 Nov 2008 12:21:44 +0000 (12:21 +0000)
26 files changed:
ChangeLog
RELNOTES
build/mkman.lua
build/mkpreload.lua
exact-version
ioncore/binding.c
ioncore/framedpholder.c
ioncore/group.c
ioncore/group.h
ioncore/grouppholder.c
ioncore/ioncore_luaext.lua
ioncore/ioncore_menudb.lua
ioncore/ioncore_misc.lua
ioncore/ioncore_winprops.lua
ioncore/screen-notify.c
libmainloop/select.c
libmainloop/signal.c
libmainloop/signal.h
mod_menu/grabmenu.c
mod_menu/mkmenu.c
mod_query/fwarn.c
mod_query/mod_query.lua
mod_query/query.c
mod_sp/main.c
system.mk
version.h

index 6bed12d7faaa9c7a948a7789d586125dffa0b5e9..c5d6a379972556ff12bfdaa44caa868fce3b24c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,49 @@
+2008-07-07 15:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  tagged ion-3-20080707
+
+2008-07-07 15:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Release notes
+
+2008-05-18 12:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some distros *braindead* beyond repair, do not compile lua with LUA_COMPAT_VARARG
+  that would provide the 5.0-style 'arg' table. The special ... syntax of Lua 5.1 
+  is useless, as you have to convert it to a table (arg={...}) in almost any
+  reasonable use of varargs anyway (that will involve iteration over them). 
+  The ... syntax of 5.1 is only of any use when passing the varargs directly 
+  to another function without modifications.
+
+2008-07-02 18:49 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Dirty select timeout hack.
+  If pselect() isn't available, and there are timers, add a timeout
+  to select() to ensure return. Race conditions with other signals
+  we'll just have to ignore.
+
+2008-07-02 18:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * tab-info gets updated on title change
+
+2008-06-23 19:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Use pselect if available
+
+2008-06-27 14:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Stacking level adjustment.
+  Scratchpad should go between transients and queries/menus.
+
+2008-06-18 10:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * We don't really need it_interval
+
+2008-06-05 21:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Apply KNOWN_MODIFIERS_MASK some more
+
+2008-05-02 19:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Floating frame initial geometry size hint usage tuning
+
+2008-05-02 19:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * WGroup needed "whatever" attach geometry option 
+  for proper WGroupCW/WClientWin initial size setup.
+
+2008-05-02 09:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Binding refresh fixes on keymap change
+
 2008-04-11 15:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3-20080411
 
 2008-02-17 15:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed groupws dispose chain
 
-2008-02-06 06:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * doc. fix
-
 2008-02-05 17:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3-20080207
 
 2008-02-04 22:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Release notes
 
+2008-02-06 06:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * doc. fix
+
 2008-02-04 22:50 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * More cfg_ion.lua embedded documentation
 
 2008-01-02 15:15 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Changes in version.h defs. to accomodate flags
 
-2008-01-01 16:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * New year
-
 2007-12-30 18:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * system.mk documentation improvements
 
 2007-12-30 17:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Replaced order of LIBS and EXTRA_LIBS in system.mk defaults
 
+2008-01-01 16:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * New year
+
 2007-12-30 00:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed FS mode return regression after recent pholder code changes.
 
   blocking the parent. Otherwise the parent handles it.
   
 
-2007-11-30 17:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-3rc-20071130
-
 2007-11-29 19:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
   UNDO: Removed pointer event subwindow forwarding hack.
   Only useful use cases seem to be handled by not grabbing modifierless
   * Oops, tilings were resetting frame modes incorrectly.
   (Copy-paste...)
 
+2007-11-30 17:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  tagged ion-3rc-20071130
+
 2007-11-30 17:24 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Some release notes
 
   * Oops, some of the rescue code hacks broke other things..
   (Shouldn't try to rescue whole WGroupCWs without further info.)
 
-2007-10-27 12:44 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Further rescue code hacks.
-
 2007-11-01 14:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * query_exec completor uses mplex working directory.
 
   (As the last one. It's a bit ugly that the order of parameters isn't similar
   to exec_on, but I'm not going to start breaking the Lua-side API at RC stage.)
 
+2007-10-27 12:44 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Further rescue code hacks.
+
 2007-10-27 12:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Suppressed dead object warnings from tab number script.
 
 2007-05-08 15:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed tiling emergency restore code
 
-2007-05-08 15:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Binding fn. doc. fixes
-
 2007-05-08 15:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * "Improved" stacking traversal code wasn't considering fallback.
 
+2007-05-08 15:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Binding fn. doc. fixes
+
 2007-05-07 20:55 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Do not use `which lua5.1` in system.mk examples.
   Makes for confusing error messages if not found.
 2007-03-17 14:51 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Screen notification windows' positions are based on stdisp position now.
 
+2007-03-17 13:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved default style
+
 2007-03-17 14:26 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Oops
 
   * 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-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 18:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, wrong flag...
+
 2007-03-08 17:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Year update
 
 2007-03-02 21:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Don't refresh on all notifies in frame_managed_notify.
 
+2007-02-26 20:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Simpler mod_query.query_attachclient handler.
+  (Uses WRegion.groupleader_of.)
+
 2007-03-02 16:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Size hints base size usage fixes.
 
 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-24 18:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added maximum width parameter to infowin_set_text.
+
 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
 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-17 14:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added WRegion.group_of and WRegion.groupleader_of exports.
 
+2007-02-11 18:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some menu/query cycling improvements
+  (partially incomplete)
+
 2007-02-08 16:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Mplex attach size kludges
 
   * 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-01-26 19:01 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Completion code fixes
 
+2007-01-26 18:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added quasiactivity hint to the "clean" styles (+improved activity colour).
+  Frame padding is drawn in red when frame frame is quasiactive. Stylistically
+  it's far from ideal, but that seems to be the best place for the hint
+  without major improvements to the drawing engine. The "emboss" styles still
+  need to get this added, but they also demand other work, being largely
+  bitrotted.
+
+2007-01-26 17:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Drawing engine API and attribute handling changes.
+  An attribute string is no longer passed to every drawing function,
+  but instead the attributes must be allocated from libtu's "stringstore",
+  and then set on the brush. The attributes are also no longer matched
+  linearly, but by simple containment, with the linear specification strings
+  in the style files (and gr_get_brush also still), however still modifying
+  the score a match gives. These changes should make it easier to add 
+  additional attributes.
+
+2007-01-26 17:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed leak in mod_query_history_push_
+
+2007-01-21 13:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * RELNOTES conflict resolution
+
+2007-01-21 13:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixes
+
+2007-01-21 13:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Frame quasiactivation tracking
+
+2007-01-20 20:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed 'detail' from notify_change parameters
+  (And reordered call in unset_manager.)
+
+2007-01-14 15:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed fake activication messages for non-windows.
+
+2007-01-13 20:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Do not use Watches in return storage.
+  Instead clean up things in region_deinit. The pointer to the region in the
+  watch is reset before calling the watch handler, so node in the search tree
+  is never found, the watch/pointer being the key.
+
+2007-01-13 20:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in padding/spacing usage in frames.
+  (See RELNOTES.)
+
+2007-01-13 20:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Do not draw spacing after last textbox
+
 2007-01-26 11:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * README  update
 
 2007-01-23 07:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Marked WFrame.mode "safe"
 
-2007-01-26 18:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added quasiactivity hint to the "clean" styles (+improved activity colour).
-  Frame padding is drawn in red when frame frame is quasiactive. Stylistically
-  it's far from ideal, but that seems to be the best place for the hint
-  without major improvements to the drawing engine. The "emboss" styles still
-  need to get this added, but they also demand other work, being largely
-  bitrotted.
-
-2007-01-26 17:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Drawing engine API and attribute handling changes.
-  An attribute string is no longer passed to every drawing function,
-  but instead the attributes must be allocated from libtu's "stringstore",
-  and then set on the brush. The attributes are also no longer matched
-  linearly, but by simple containment, with the linear specification strings
-  in the style files (and gr_get_brush also still), however still modifying
-  the score a match gives. These changes should make it easier to add 
-  additional attributes.
-
-2007-01-26 17:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed leak in mod_query_history_push_
-
 2007-01-22 20:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Ugly pointer focus hack for messy floats:
   If a window that does not have the focus, or if the focus is being 
   has the focus, and no change elsewhere is known, current focus policy 
   dictates that the focus should fall to the underlying window.)
 
-2007-01-21 13:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * RELNOTES conflict resolution
-
-2007-01-21 13:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixes
-
-2007-01-21 13:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Frame quasiactivation tracking
-
 2007-01-21 12:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Pseudoactivity state maintenance hack
 
 2007-01-18 20:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Navi-code updates
 
-2007-01-17 20:49 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Comment updates
-
-2007-01-20 20:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed 'detail' from notify_change parameters
-  (And reordered call in unset_manager.)
-
 2007-01-18 08:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Year changed...
   (The one nice thing about CVS was that you could automate this
   numbering. Perhaps a record check script could make you update 
   the dates manually as you change the files...)
 
+2007-01-17 20:49 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Comment updates
+
 2007-01-17 18:18 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Further simplifications/dead code removal.
   (Made possible by removal of Xinerama #ifdef hacks.)
 2007-01-14 00:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixes wrt. FRAME_MODE_UNKNOWN (e.g. scratchpad).
 
-2007-01-14 15:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed fake activication messages for non-windows.
-
 2007-01-13 23:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Toplevel bindmap usage tuning
 
-2007-01-13 20:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Do not use Watches in return storage.
-  Instead clean up things in region_deinit. The pointer to the region in the
-  watch is reset before calling the watch handler, so node in the search tree
-  is never found, the watch/pointer being the key.
-
-2007-01-13 20:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Changes in padding/spacing usage in frames.
-  (See RELNOTES.)
-
-2007-01-13 20:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Do not draw spacing after last textbox
-
 2007-01-13 18:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Oops, forgot this...
 
     are now returned back to the same frame, even if the original
     frame was emptied (and thus destroyed) in the meanwhile.
 
-2007-01-08 20:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Typo fix (+ minor related policy changes)
-
 2007-01-06 18:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added mode to WFramedParam
 
+2007-01-08 20:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Typo fix (+ minor related policy changes)
+
 2007-01-04 22:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Moved set/is_fullscreen from WClientWin to WGroup
    - Simplifies the binding (and the config needs to be updated!)
 2006-12-27 14:35 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Use return storage for return from full screen mode
 
-2006-12-26 20:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Don't snow info window for activity on active screen
-
 2006-12-26 17:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * More functions for return storage
 
 2006-12-26 16:53 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed unused variable/string
 
+2006-12-26 20:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Don't snow info window for activity on active screen
+
 2006-12-23 14:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3ds-20061223
 
 2006-11-11 12:01 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Warp in WMPlex.set_hidden
 
+2006-11-09 18:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Do not duplicate entries already in history when pushing.
+  Instead move the first already existing first.
+
+2006-11-09 18:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * strcoll instead of strcmp for completion sorting
+
+2006-11-09 17:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Complete history in history order instead of character set
+
 2006-11-04 14:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Clear a few more flags of frame size hints
 
 2006-11-03 07:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed switchto/hidden WMPlex attach parameter interaction.
 
-2006-11-09 18:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Do not duplicate entries already in history when pushing.
-  Instead move the first already existing first.
-
-2006-11-09 18:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * strcoll instead of strcmp for completion sorting
-
-2006-11-09 17:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Complete history in history order instead of character set
-
 2006-11-01 20:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Remanage stdisp when bottom attached to group
 
 2006-10-16 12:16 UTC  Miroslav Kure <kurem@debian.cz>
   * Updated Czech translation
 
-2006-10-02 11:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * README update
-
 2006-10-15 22:35 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed a typo in workspace query
   (Stupid dynamic typing.)
 2006-10-03 15:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Simplified group attach stuff with separate WFramedPHolder
 
+2006-10-02 11:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * README update
+
 2006-09-30 20:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * mod_menu was still referring to WMPlex.llist
 
 2006-08-31 19:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Various minor fixes and clean-up.
 
+2006-08-31 17:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some attach mechanism improvements.
+
 2006-08-25 02:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Moved commented-out transpose_words as Control+K T.
 
 2006-08-24 20:52 UTC  Tibor Csögör <tibi@tiborius.net>
   * Added transpose_chars and transpose_words to mod_query.
 
-2006-08-31 17:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Some attach mechanism improvements.
-
 2006-08-21 17:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Navigation code fixes
 
   * Generic navigation code improvements.
   - Also removed some redundant tiling code.
 
+2006-08-14 18:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed some undefined references in mod_dock.
+
 2006-08-11 16:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed an assert trigger
 
 2006-08-14 15:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added a missing check for nil table.
 
-2006-08-14 18:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed some undefined references in mod_dock.
-
 2006-08-09 17:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Use redblack tree for reg->stacking lookup.
 
 2006-08-05 18:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed mplex_lcount stuff.
 
-2006-08-02 14:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Possible fixes to (initial) effect of stdisp on tiling llayout.
-
-2006-08-03 21:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated to predist.sh to reflect changed paths of *.mk.
-
-2006-08-03 21:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Changes in predist.sh to reflect _darcs/ having been changed.
-
 2006-08-03 15:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Simplifications in mplex/group focus code.
 
 2006-08-01 22:11 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Some field renames for further changes.
 
+2006-08-03 21:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Updated to predist.sh to reflect changed paths of *.mk.
+
+2006-08-03 21:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in predist.sh to reflect _darcs/ having been changed.
+
+2006-08-02 14:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Possible fixes to (initial) effect of stdisp on tiling llayout.
+
 2006-07-16 15:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * WGroupCW uses the bottom_last_close option now (instead of reinventing it).
 
   - Backwards compatibility hack included for saved layouts, but not
     configuration files.
 
-2006-07-14 11:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Moved some region_register calls to safer places.
-
 2006-07-14 11:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Changed remaining lua-side references to WGenWS to WGroupWS.
 
-2006-07-10 20:25 UTC  pfeifer@wait.de
-  * pass-table-fix
-  This patch fixes a bug in mod_panes that would prevent a caller for successfully passing
-  a table as template to the module
+2006-07-12 11:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Temporarily disabled mod_panews.
+
+2006-07-14 11:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Moved some region_register calls to safer places.
 
 2006-07-14 10:26 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed redundant code by using weave for raise/lower.
 2006-07-12 12:34 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed WGenWS entirely.
 
-2006-07-08 10:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * mod_dock was still referring to mplex_layer.
+2006-07-07 18:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added beginnings of more generic navigation code.
 
-2006-07-12 11:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Temporarily disabled mod_panews.
+2006-07-08 07:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * floatws redirects prepare_manage to 'bottom' if active.
+
+2006-07-07 14:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Redirect stdisp to WGroup(WS) 'bottom'.
 
 2006-07-12 05:00 UTC  Etan Reisner <deryni@gmail.com>
   * Remove an extra space in the Lua query prompt.
 
-2006-07-08 08:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixes in initial stacking of regions.
+2006-07-10 20:25 UTC  pfeifer@wait.de
+  * pass-table-fix
+  This patch fixes a bug in mod_panes that would prevent a caller for successfully passing
+  a table as template to the module
 
-2006-07-08 07:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * floatws redirects prepare_manage to 'bottom' if active.
+2006-07-08 10:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * mod_dock was still referring to mplex_layer.
 
-2006-07-07 18:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added beginnings of more generic navigation code.
+2006-07-08 08:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixes in initial stacking of regions.
 
 2006-07-07 17:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed 'bottom' initial stacking.
 
-2006-07-07 14:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Redirect stdisp to WGroup(WS) 'bottom'.
-
 2006-07-05 15:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Ugly Makefile hacks.
 
 2006-07-01 18:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Further improvements in focus code.
 
+2006-06-25 17:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Minor fixes to group stuff.
+
+2006-06-25 16:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Reduced use of WGenWS.
+  (Only WIonWS and WPaneWS still refer to it.)
+
 2006-07-01 16:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * region_managed_goto improvements.
 
 2006-06-25 20:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixes and simplifications to key handling code.
 
-2006-06-25 17:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Minor fixes to group stuff.
-
-2006-06-25 16:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Reduced use of WGenWS.
-  (Only WIonWS and WPaneWS still refer to it.)
-
 2006-06-25 09:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * WGroupCW passes on region_managed_notify for the 'bottom'.
 
 2006-06-22 23:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * First steps of client window groups.
 
-2006-06-21 16:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * There were unused fields in WClientWin.
-
-2006-06-21 16:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Some dates were wrong..
-
 2006-06-21 16:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed group attach geometry stuff.
 
-2006-06-21 08:10 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Typo fixes.
-
 2006-06-20 19:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Inherited WFloatWS from WGroup.
 
 2006-06-19 16:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added generic floatws attach routines.
 
+2006-06-21 16:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some dates were wrong..
+
+2006-06-21 16:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * There were unused fields in WClientWin.
+
+2006-06-21 08:10 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Typo fixes.
+
 2006-06-19 12:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Allow override of xterm with the XTERM Lua-side variable.
 
 2006-06-17 17:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added manager specific list to WStacking.
 
+2006-06-11 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improvements to floatws bottom support + use size policies.
+
+2006-06-11 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added SIZEPOLICY_UNCONSTRAINED.
+
+2006-06-10 21:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Preliminary floatws "bottom" support.
+
+2006-05-29 16:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added levels to stacking code.
+
+2006-05-28 20:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed some redundancy from stacking code.
+
+2006-05-28 17:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some more stacking code changes.
+
+2006-05-28 11:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some more stacking code cleanup etc.
+
+2006-05-27 15:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some improvements/cleanup in floatws stacking code.
+
 2006-06-17 10:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Cleaned up the top directory of building related files.
   - In particular, autovirus stuff is in build/ac now and must be run there.
 2006-06-07 09:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Export ioncore.tags_first.
 
-2006-06-11 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Improvements to floatws bottom support + use size policies.
-
-2006-06-11 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added SIZEPOLICY_UNCONSTRAINED.
-
-2006-06-10 21:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Preliminary floatws "bottom" support.
-
 2006-06-09 14:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Exclude USECS_IN_SEC itself from valid values too..
 
   * Size hints weren't being applied on client windows on Ion startup startup.
   (Now they're applied if we do not modify the old client window size.)
 
-2006-05-29 16:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added levels to stacking code.
-
-2006-05-28 20:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed some redundancy from stacking code.
-
 2006-05-19 21:36 UTC  Etan Reisner <deryni@gmail.com>
   * s/kpress_waitrel/kpress_wait/ and some s/waitrel/wait/ since I believe waitrel is the old name and this makes things a little cleaner.
   The switch_bindings.lua script currently has an ugly if/elseif section to do
   all the binding removal stuff, with this change that whole section can be
   replaced with one line.
 
-2006-05-28 17:52 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Some more stacking code changes.
-
-2006-05-28 11:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Some more stacking code cleanup etc.
-
-2006-05-27 15:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Some improvements/cleanup in floatws stacking code.
-
 2006-05-24 16:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3ds-20060524
 
 2006-04-26 17:49 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * framed_transients is on by default now.
 
+2006-04-26 17:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added WFrame.toplevel and WMPlex.toplevel binding maps.
+  - These are not used by frames for transients.
+  - Changed the default bindings accordingly.
+
 2006-04-22 16:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Added toggle for showing tab numbers.
   - WFrame:set_numbers with the usual 'set'/'unset'/'toggle' parametrisation.
 2006-04-20 19:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed obsolete references to -i18n flag.
 
-2006-04-26 17:45 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added WFrame.toplevel and WMPlex.toplevel binding maps.
-  - These are not used by frames for transients.
-  - Changed the default bindings accordingly.
-
 2006-04-13 22:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * The frame_add_last option had been broken.
   - Since switching to use of placeholders for initial management 
 2005-11-25 19:54 UTC  Miroslav Kure <kurem@debian.cz>
   * Updated Czech translation
 
-2005-11-15 17:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Another temporary clientwin resize hack.
-
 2005-11-20 13:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Improved previous active region tracking.
   - Replaced explicit and cumbersome previous active object saving
 2005-11-20 12:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Hmm.. active_screen was still in ioncore_g.
 
+2005-11-15 17:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Another temporary clientwin resize hack.
+
 2005-11-15 07:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed a typo; wairel -> waitrel.
 
 2005-10-25 18:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed (unframed) nested transient size issue.
 
-2005-10-13 20:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed -sessionname to -session in manual pages.
-
 2005-10-24 20:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Oops. %filler update had removed stretching space constant part.
 
 2005-10-23 15:55 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed dummy size hint setup.
 
+2005-10-15 18:11 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in frame autodestroy code.
+
 2005-10-18 16:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Oops. mod_dock hadn't been updated to reflect changes in mplex_set/get_stdisp.
 
-2005-10-15 18:11 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Changes in frame autodestroy code.
+2005-10-13 20:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed -sessionname to -session in manual pages.
 
 2005-10-07 21:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Fixed 180 degree rotation.
 2005-09-05 20:20 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed mail monitor from default statusbar template.
 
-2005-08-29 05:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed floatws_backcirculate (copy-paste bug..)
-
 2005-08-31 10:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
   * Removed unused parameter of ioncore.x_get_atom_name.
 
+2005-08-29 05:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed floatws_backcirculate (copy-paste bug..)
+
 2005-08-27 23:01 UTC  Per Olofsson <pelle@dsv.su.se>
   * Some updates to README.dock.
 
index effb8a60e0aa7fbd4b4460a6243ef0e68a237aa1..1c272f67251e63fdb7c3ec2f61033c5ca9056b6d 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,4 +1,10 @@
 
+ion-3-20080707
+--------------
+
+This is yet another maintenance release fixing a few issues.
+
+
 ion-3-20080411
 --------------
 
index 8c5d0552d352914ea62c9522e039406c2418692f..da97d5036a0cd23978ecb9e450e62cb78afe1216 100644 (file)
@@ -20,7 +20,7 @@ local function gettext(x)
 end
 
 local function TR(x, ...)
-    return string.format(gettext(x), unpack(arg))
+    return string.format(gettext(x), ...)
 end
 
 local function read_translations(pofile)
@@ -314,7 +314,7 @@ local function doargs(a)
     end
 end
 
-doargs(arg)
+doargs({...})
 
 local f, err=io.open(infile)
 if not f then
index 6b51cebf46c12cb9e7e157cec1f798f01d2e599d..184644a1eea19c498f85b8c4b6fb52c9efc8bc62 100644 (file)
@@ -6,7 +6,7 @@ io.stdout:write([[
 
 ]]);
 
-for _, v in ipairs(arg) do
+for _, v in ipairs({...}) do
     io.stdout:write(string.format([[
 extern bool %s_init();
 extern void %s_deinit();
@@ -19,7 +19,7 @@ io.stdout:write([[
 WStaticModuleInfo ioncore_static_modules[]={
 ]])
 
-for _, v in ipairs(arg) do
+for _, v in ipairs({...}) do
     io.stdout:write(string.format(
         '    {"%s", %s_init, %s_deinit, FALSE},\n',
         v, v, v));                          
index f38473ebf369e8134f7a9306463339409b4438ff..ffaa1facc3eca087b1cba8dd5eee5fa7cea9f4c1 100644 (file)
@@ -1,5 +1,5 @@
 
 Context:
 
-[TAG ion-3-20080411
-Tuomo Valkonen <tuomov@iki.fi>**20080411150249
+[TAG ion-3-20080707
+Tuomo Valkonen <tuomov@iki.fi>**20080707153848
index 5ca284ddb157cfeaa71ef5d219781f5f80aa15a3..f4fb0e67a0fd352ea659ec9f7ab08d1cd212b2df 100644 (file)
@@ -95,18 +95,13 @@ static int compare_bindings(const WBinding *a, const WBinding *b)
 }
 
 /* This is only used for searching AnyKey etc. */
-static int compare_bindings_ksb(const WBinding *a, const WBinding *b)
+static int compare_bindings_any(const WBinding *a, const WBinding *b)
 {
-    int r=CVAL(a, b, act);
-    if(r==0){
+    int r=compare_bindings(a, b);
+    
+    if(r==0)
         r=CVAL(a, b, ksb);
-        if(r==0){
-            r=CVAL(a, b, state);
-            if(r==0){
-                r=CVAL(a, b, area);
-            }
-        }
-    }
+    
     return r;
 }
                     
@@ -398,7 +393,7 @@ void binding_grab_on(const WBinding *binding, Window win)
 
 void binding_ungrab_on(const WBinding *binding, Window win)
 {
-    if(binding->act==BINDING_KEYPRESS){
+    if(binding->act==BINDING_KEYPRESS && binding->kcb!=0){
 #ifndef CF_HACK_IGNORE_EVIL_LOCKS
         XUngrabKey(ioncore_g.dpy, binding->kcb, binding->state, win);
 #else
@@ -444,7 +439,7 @@ static WBinding *search_binding(WBindmap *bindmap, WBinding *binding)
 }
 
 
-static WBinding *search_binding_ksb(WBindmap *bindmap, WBinding *binding)
+static WBinding *search_binding_any(WBindmap *bindmap, WBinding *binding)
 {
     Rb_node node;
     int found=0;
@@ -453,7 +448,7 @@ static WBinding *search_binding_ksb(WBindmap *bindmap, WBinding *binding)
         return NULL;
     
     node=rb_find_gkey_n(bindmap->bindings, binding,
-                        (Rb_compfn*)compare_bindings_ksb, &found);
+                        (Rb_compfn*)compare_bindings_any, &found);
     
     if(found==0)
         return NULL;
@@ -494,13 +489,14 @@ static WBinding *do_bindmap_lookup_binding(WBindmap *bindmap,
 
         if(binding==NULL){
             tmp.state=state;
+            tmp.kcb=0;
             tmp.ksb=(act==BINDING_KEYPRESS ? AnyKey : AnyButton);
             
-            binding=search_binding_ksb(bindmap, &tmp);
+            binding=search_binding_any(bindmap, &tmp);
 
             if(binding==NULL){
                 tmp.state=AnyModifier;
-                binding=search_binding_ksb(bindmap, &tmp);
+                binding=search_binding_any(bindmap, &tmp);
             }
         }
     }
@@ -542,6 +538,7 @@ int ioncore_unmod(int state, int keycode)
 #ifdef CF_HACK_IGNORE_EVIL_LOCKS
     state&=~evilignoremask;
 #endif
+    state&=KNOWN_MODIFIERS_MASK;
 
     for(j=0; j<N_MODS*modmap->max_keypermod; j++){
         if(modmap->modifiermap[j]==keycode)
@@ -572,6 +569,8 @@ int ioncore_modstate()
 #ifdef CF_HACK_IGNORE_EVIL_LOCKS
     state&=~evilignoremask;
 #endif
+    state&=KNOWN_MODIFIERS_MASK;
+    
     return state;
 }
 
index 4597eecd35ee02c9e9863f2c46f625fc6f7c3eb1..0a198087709a0b913f4ce5253028feca52b6491a 100644 (file)
@@ -13,6 +13,7 @@
 #include "frame.h"
 #include "framedpholder.h"
 #include "sizehint.h"
+#include "resize.h"
 
 
 /*{{{ Init/deinit */
@@ -70,32 +71,46 @@ void frame_adjust_to_initial(WFrame *frame, const WFitParams *fp,
                              const WFramedParam *param, WRegion *reg)
 {
     WRectangle rqg, mg;
+    WSizeHints szh;
+    int iw, ih;
  
     if(!(fp->mode&(REGION_FIT_BOUNDS|REGION_FIT_WHATEVER)))
         return;
 
     mplex_managed_geom((WMPlex*)frame, &mg);
-
+    
     /* Adjust geometry */
     if(!param->inner_geom_gravity_set){
+        iw=REGION_GEOM(reg).w;
+        ih=REGION_GEOM(reg).h;
         rqg.x=REGION_GEOM(frame).x;
         rqg.y=REGION_GEOM(frame).y;
-        rqg.w=maxof(1, REGION_GEOM(reg).w+(REGION_GEOM(frame).w-mg.w));
-        rqg.h=maxof(1, REGION_GEOM(reg).h+(REGION_GEOM(frame).h-mg.h));
     }else{
         int bl=mg.x;
         int br=REGION_GEOM(frame).w-(mg.x+mg.w);
         int bt=mg.y;
         int bb=REGION_GEOM(frame).h-(mg.y+mg.h);
         
+        iw=param->inner_geom.w;
+        ih=param->inner_geom.h;
+        
         rqg.x=(/*fp->g.x+*/param->inner_geom.x+
                xgravity_deltax(param->gravity, bl, br));
         rqg.y=(/*fp->g.y+*/param->inner_geom.y+
                xgravity_deltay(param->gravity, bt, bb));
-        rqg.w=maxof(1, param->inner_geom.w+(REGION_GEOM(frame).w-mg.w));
-        rqg.h=maxof(1, param->inner_geom.h+(REGION_GEOM(frame).h-mg.h));
     }
-
+    
+    /* Some apps seem to request geometries inconsistent with their size hints,
+     * so correct for that here.
+     * Because WGroup(CW) sets no_constrain on the size hints, we have
+     * to set override_no_constrain to force the frame to have the size
+     * of the 'bottom' of the group.
+     */
+    region_size_hints(reg, &szh);
+    sizehints_correct(&szh, &iw, &ih, TRUE, TRUE);
+    rqg.w=maxof(1, iw+(REGION_GEOM(frame).w-mg.w));
+    rqg.h=maxof(1, ih+(REGION_GEOM(frame).h-mg.h));
+    
     if(!(fp->mode&REGION_FIT_WHATEVER))
         rectangle_constrain(&rqg, &fp->g);
     
index 21db4bbb15608d11af2447a495a7ad8a39093895..6d0409c1bd6e9862809f913beb086eab21fefd60 100644 (file)
@@ -628,52 +628,54 @@ bool group_do_attach_final(WGroup *ws,
               ? param->level 
               : STACKING_LEVEL_NORMAL));
     
-    /* Fit */
-    szplcy=(param->szplcy_set
-            ? param->szplcy
-            : (param->bottom
-               ? SIZEPOLICY_FULL_EXACT
-               : SIZEPOLICY_UNCONSTRAINED));
-    
-    weak=(param->geom_weak_set
-          ? param->geom_weak
-          : (param->geom_set
-             ? 0
-             : REGION_RQGEOM_WEAK_ALL));
-    
-    if(param->geom_set)
-        geom_group_to_parent(ws, &param->geom, &g);
-    else
-        g=REGION_GEOM(reg);
-    
-    /* If the requested geometry does not overlap the workspaces's geometry, 
-     * position request is never honoured.
-     */
-    if((g.x+g.w<=REGION_GEOM(ws).x) ||
-       (g.x>=REGION_GEOM(ws).x+REGION_GEOM(ws).w)){
-        weak|=REGION_RQGEOM_WEAK_X;
-    }
-       
-    if((g.y+g.h<=REGION_GEOM(ws).y) ||
-       (g.y>=REGION_GEOM(ws).y+REGION_GEOM(ws).h)){
-        weak|=REGION_RQGEOM_WEAK_Y;
-    }
+    if(!param->whatever){
+        /* Fit */
+        szplcy=(param->szplcy_set
+                ? param->szplcy
+                : (param->bottom
+                   ? SIZEPOLICY_FULL_EXACT
+                   : SIZEPOLICY_UNCONSTRAINED));
+        
+        weak=(param->geom_weak_set
+              ? param->geom_weak
+              : (param->geom_set
+                 ? 0
+                 : REGION_RQGEOM_WEAK_ALL));
+        
+        if(param->geom_set)
+            geom_group_to_parent(ws, &param->geom, &g);
+        else
+            g=REGION_GEOM(reg);
+        
+        /* If the requested geometry does not overlap the workspaces's geometry, 
+         * position request is never honoured.
+         */
+        if((g.x+g.w<=REGION_GEOM(ws).x) ||
+           (g.x>=REGION_GEOM(ws).x+REGION_GEOM(ws).w)){
+            weak|=REGION_RQGEOM_WEAK_X;
+        }
+           
+        if((g.y+g.h<=REGION_GEOM(ws).y) ||
+           (g.y>=REGION_GEOM(ws).y+REGION_GEOM(ws).h)){
+            weak|=REGION_RQGEOM_WEAK_Y;
+        }
 
-    if(weak&(REGION_RQGEOM_WEAK_X|REGION_RQGEOM_WEAK_Y) &&
-        (szplcy==SIZEPOLICY_UNCONSTRAINED ||
-         szplcy==SIZEPOLICY_FREE ||
-         szplcy==SIZEPOLICY_FREE_GLUE /* without flags */)){
-        /* TODO: use 'weak'? */
-        group_calc_placement(ws, level, &g);
-    }
+        if(weak&(REGION_RQGEOM_WEAK_X|REGION_RQGEOM_WEAK_Y) &&
+            (szplcy==SIZEPOLICY_UNCONSTRAINED ||
+             szplcy==SIZEPOLICY_FREE ||
+             szplcy==SIZEPOLICY_FREE_GLUE /* without flags */)){
+            /* TODO: use 'weak'? */
+            group_calc_placement(ws, level, &g);
+        }
 
-    fp.g=REGION_GEOM(ws);
-    fp.mode=REGION_FIT_EXACT;
+        fp.g=REGION_GEOM(ws);
+        fp.mode=REGION_FIT_EXACT;
 
-    sizepolicy(&szplcy, reg, &g, weak, &fp);
+        sizepolicy(&szplcy, reg, &g, weak, &fp);
 
-    if(rectangle_compare(&fp.g, &REGION_GEOM(reg))!=RECTANGLE_SAME)
-        region_fitrep(reg, NULL, &fp);
+        if(rectangle_compare(&fp.g, &REGION_GEOM(reg))!=RECTANGLE_SAME)
+            region_fitrep(reg, NULL, &fp);
+    }
     
     /* Add */
     st=group_do_add_managed(ws, reg, level, szplcy);
index d8227118a1cf8cfd516659abb9f9befaa946a750..85af3495b06d7dcfdef4df37e6817f5b24bb3ba5 100644 (file)
@@ -33,6 +33,7 @@ DECLSTRUCT(WGroupAttachParams){
     
     uint switchto:1;
     uint bottom:1;
+    uint whatever:1;
     
     int geom_weak;
     WRectangle geom;
@@ -43,7 +44,7 @@ DECLSTRUCT(WGroupAttachParams){
 };
 
 #define GROUPATTACHPARAMS_INIT \
-    {0, 0, 0, 0, 0,  0, 0,   0, {0, 0, 0, 0},  0, 0, NULL}
+    {0, 0, 0, 0, 0,  0, 0, 0,  0, {0, 0, 0, 0},  0, 0, NULL}
 
 
 DECLCLASS(WGroup){
index cdd2dce546b35b144132d83adc1340f63750e7ba..2d941e4166bf15d08cd8438b055ec2a5f9f1e31b 100644 (file)
@@ -197,9 +197,13 @@ static WRegion *recreate_handler(WWindow *par,
     
     if(grp==NULL)
         return NULL;
+        
+    rp->ph->param.whatever=(fp->mode&REGION_FIT_WHATEVER ? 1 : 0);
     
     rp->reg_ret=group_do_attach(grp, &rp->ph->param, rp->data);
     
+    rp->ph->param.whatever=0;
+    
     if(rp->reg_ret==NULL){
         destroy_obj((Obj*)grp);
         return NULL;
@@ -210,6 +214,9 @@ static WRegion *recreate_handler(WWindow *par,
             phtmp->group=grp;
     }
     
+    if(fp->mode&REGION_FIT_WHATEVER)
+        REGION_GEOM(grp)=REGION_GEOM(rp->reg_ret);
+    
     return (WRegion*)grp;
 }
 
index 74d38802686302c7b05efd0caa0b55741008d5b1..a98d2cea40041808862e02c911ec804f1e20e274 100644 (file)
@@ -82,7 +82,7 @@ end
 --DOC
 -- Export a list of functions from \var{lib} into global namespace.
 function export(lib, ...)
-    for k, v in pairs(arg) do
+    for k, v in pairs({...}) do
         _G[v]=lib[v]
     end
 end
index 17b0c4af51e0b9274cef431eb05f273cbf04e78a..62cf04a7622ca95d81861f43c3c313d00487e17d 100644 (file)
@@ -45,11 +45,12 @@ end
 -- of menu entries.
 function ioncore.defctxmenu(ctx, ...)
     local tab, add
-    if #arg>1 and type(arg[1])=="string" then
-        tab=arg[2]
-        tab.label=ioncore.gettext(arg[1])
+    local a1, a2 = ...
+    if a2 and type(a1)=="string" then
+        tab=a2
+        tab.label=ioncore.gettext(a1)
     else
-        tab=arg[1]
+        tab=a1
     end
     ioncore.defmenu("ctxmenu-"..ctx, tab)
 end
index dde914ecc7cef299c21ccda3e3955b9ce5c8c921..1a0b0eb620b158a349ce86d30e5ed3bb83e85480 100644 (file)
@@ -73,7 +73,7 @@ end
 --DOC
 -- gettext+string.format
 function ioncore.TR(s, ...)
-    return string.format(ioncore.gettext(s), unpack(arg))
+    return string.format(ioncore.gettext(s), ...)
 end
 
 
index 7497356e9c1db82861195f6f8ae20049a1f020f6..b74ed63c0dda546717ed0d54a3473834f710b3ce 100644 (file)
@@ -11,6 +11,7 @@ local ioncore=_G.ioncore
 local winprops={}
 
 local function ifnil(...)
+    local arg={...}
     local n=#arg
     local function nxt(_, i)
         local j=i+1
index 522a0a549149eb401dd1517041fe0de4ab9b93fd..ecb280702aac96b863b5b40c69dca38c0eca73ff 100644 (file)
@@ -377,8 +377,11 @@ void ioncore_screen_activity_notify(WRegion *reg, WRegionNotify how)
     if(how==ioncore_g.notifies.activity){
         screen_update_notifywin(region_screen_of(reg));
     }else if(how==ioncore_g.notifies.name){
+        WScreen *scr=region_screen_of(reg);
         if(region_is_activity(reg))
-            screen_update_notifywin(region_screen_of(reg));
+            screen_update_notifywin(scr);
+        if((WRegion*)scr==REGION_MANAGER(reg))
+            screen_do_update_infowin(scr);
     }
 }
 
index e66d35ca3d195e11ddf208d38e0e69bf5fc0de40..f8410a5b846c46b318deb3d1a039576c0b0b6618 100644 (file)
@@ -1,16 +1,20 @@
 /*
- * ion/libmainloop/mainloop.c
+ * libmainloop/select.c
  * 
  * Partly based on a contributed code.
  *
  * See the included file LICENSE for details.
  */
 
+#include <signal.h>
+#include <sys/select.h>
+
 #include <libtu/types.h>
 #include <libtu/misc.h>
 #include <libtu/dlist.h>
 
 #include "select.h"
+#include "signal.h"
 
 
 /*{{{ File descriptor management */
@@ -94,12 +98,41 @@ void mainloop_select()
 {
     fd_set rfds;
     int nfds=0;
-            
+    int ret=0;
+    
     FD_ZERO(&rfds);
     
     set_input_fds(&rfds, &nfds);
     
-    if(select(nfds+1, &rfds, NULL, NULL, NULL)>0)
+#ifdef _POSIX_SELECT
+    {
+        sigset_t oldmask;
+        
+        mainloop_block_signals(&oldmask);
+        
+        if(!mainloop_unhandled_signals())
+            ret=pselect(nfds+1, &rfds, NULL, NULL, NULL, &oldmask);
+        
+        sigprocmask(SIG_SETMASK, &oldmask, NULL);
+    }
+#else
+    #warning "pselect() unavailable -- using dirty hacks"
+    {
+        struct timeval tv_={0, 0}, *tv=&tv_;
+        
+        /* If there are timers, make sure we return from select with 
+         * some delay, if the timer signal happens right before
+         * entering select(). Race conditions with other signals
+         * we'll just have to ignore without pselect().
+         */
+        if(!libmainloop_get_timeout(tv))
+            tv=NULL;
+            
+        if(!mainloop_unhandled_signals())
+            ret=select(nfds+1, &rfds, NULL, NULL, tv);
+    }
+#endif
+    if(ret>0)
         check_input_fds(&rfds);
 }
 
index 877e3ec808665b5a5b7a44a8d928eafb5ebfcae7..fd37161b332689c7073b5065f930ab5e11549428 100644 (file)
@@ -36,6 +36,8 @@ static bool had_tmr=FALSE;
 WHook *mainloop_sigchld_hook=NULL;
 WHook *mainloop_sigusr2_hook=NULL;
 
+static sigset_t special_sigs;
+
 
 /*{{{ Timers */
 
@@ -79,44 +81,51 @@ int mainloop_gettime(struct timeval *val)
 #define USECS_IN_SEC 1000000
 
 
-static void do_timer_set()
+bool libmainloop_get_timeout(struct timeval *tv)
 {
-    struct itimerval val={{0, 0}, {0, 0}};
-    
-    if(queue==NULL){
-        setitimer(ITIMER_REAL, &val, NULL);
-        return;
-    }
+    if(queue==NULL)
+        return FALSE;
 
     /* Subtract queue time from current time, don't go below zero */
-    mainloop_gettime(&(val.it_value));
-    if(TIMEVAL_LATER((queue)->when, val.it_value)){
-        if(queue->when.tv_usec<val.it_value.tv_usec){
+    mainloop_gettime(tv);
+    if(TIMEVAL_LATER((queue)->when, (*tv))){
+        if(queue->when.tv_usec<tv->tv_usec){
             queue->when.tv_usec+=USECS_IN_SEC;
             queue->when.tv_sec--;
         }
-        val.it_value.tv_usec=queue->when.tv_usec-val.it_value.tv_usec;
-        val.it_value.tv_sec=queue->when.tv_sec-val.it_value.tv_sec;
-        if(val.it_value.tv_usec<0)
-            val.it_value.tv_usec=0;
+        tv->tv_usec=queue->when.tv_usec-tv->tv_usec;
+        tv->tv_sec=queue->when.tv_sec-tv->tv_sec;
+        if(tv->tv_usec<0)
+            tv->tv_usec=0;
         /* POSIX and some kernels have been designed by absolute morons and 
          * contain idiotic artificial restrictions on the value of tv_usec, 
          * that will only cause more code being run and clock cycles being 
          * spent to do the same thing, as the kernel will in any case convert
          * the seconds to some other units.
          */
-         val.it_value.tv_sec+=val.it_value.tv_usec/USECS_IN_SEC;
-         val.it_value.tv_usec%=USECS_IN_SEC;
+         tv->tv_sec+=tv->tv_usec/USECS_IN_SEC;
+         tv->tv_usec%=USECS_IN_SEC;
     }else{
         had_tmr=TRUE;
-        return;
+        return FALSE;
     }
+    
+    return TRUE;
+}
+
 
-    val.it_interval.tv_usec=val.it_value.tv_usec;
-    val.it_interval.tv_sec=val.it_value.tv_sec;
+static void do_timer_set()
+{
+    struct itimerval val={{0, 0}, {0, 0}};
     
-    if((setitimer(ITIMER_REAL, &val, NULL))){
-        had_tmr=TRUE;
+    if(libmainloop_get_timeout(&val.it_value)){
+        val.it_interval.tv_usec=0;
+        val.it_interval.tv_sec=0;
+        
+        if((setitimer(ITIMER_REAL, &val, NULL)))
+            had_tmr=TRUE;
+    }else if(!had_tmr){
+        setitimer(ITIMER_REAL, &val, NULL);
     }
 }
 
@@ -250,6 +259,18 @@ bool mainloop_check_signals()
 }
 
 
+void mainloop_block_signals(sigset_t *oldmask)
+{
+    sigprocmask(SIG_BLOCK, &special_sigs, oldmask);
+}
+
+
+bool mainloop_unhandled_signals()
+{
+    return (usr2_sig || wait_sig || kill_sig || had_tmr);
+}
+
+
 static void add_to_current_time(struct timeval *when, uint msecs)
 {
     long tmp_usec;
@@ -475,6 +496,7 @@ static void ignore_handler(int signal_num)
 #define FATAL(X) IFTRAP(X) signal(X, fatal_signal_handler);
 #define IGNORE(X) IFTRAP(X) signal(X, SIG_IGN)
 
+
 void mainloop_trap_signals(const sigset_t *which)
 {
     struct sigaction sa;
@@ -486,6 +508,7 @@ void mainloop_trap_signals(const sigset_t *which)
         which=&dummy;
     }
     
+    sigemptyset(&special_sigs);
     sigemptyset(&set);
     sigemptyset(&oldset);
     sigprocmask(SIG_SETMASK, &set, &oldset);
@@ -509,24 +532,28 @@ void mainloop_trap_signals(const sigset_t *which)
         sa.sa_handler=timer_handler;
         sa.sa_flags=SA_RESTART;
         sigaction(SIGALRM, &sa, NULL);
+        sigaddset(&special_sigs, SIGALRM);
     }
 
     IFTRAP(SIGCHLD){
         sa.sa_handler=chld_handler;
         sa.sa_flags=SA_NOCLDSTOP|SA_RESTART;
         sigaction(SIGCHLD, &sa, NULL);
+        sigaddset(&special_sigs, SIGCHLD);
     }
 
     IFTRAP(SIGUSR2){
         sa.sa_handler=usr2_handler;
         sa.sa_flags=SA_RESTART;
         sigaction(SIGUSR2, &sa, NULL);
+        sigaddset(&special_sigs, SIGUSR2);
     }
 
     IFTRAP(SIGTERM){
         sa.sa_handler=exit_handler;
         sa.sa_flags=SA_RESTART;
         sigaction(SIGTERM, &sa, NULL);
+        sigaddset(&special_sigs, SIGTERM);
     }
     
     IFTRAP(SIGUSR1){
index 72691dc842b802bd4e9ec4ca67a08a236de8f699..bd93fb2aeea8c96bb2eb2949cd86209c793339c3 100644 (file)
@@ -50,6 +50,9 @@ extern bool timer_is_set(WTimer *timer);
 
 extern bool mainloop_check_signals();
 extern void mainloop_trap_signals(const sigset_t *set);
+extern void mainloop_block_signals(sigset_t *oldmask);
+extern bool mainloop_unhandled_signals();
+extern bool libmainloop_get_timeout(struct timeval *tv);
 
 extern WHook *mainloop_sigchld_hook;
 extern WHook *mainloop_sigusr2_hook;
index 5c44bed473c99847db73c4dc3a32a5af02385ae0..02746836b09e07d0552a9d22b5ec310f60e7f02c 100644 (file)
@@ -95,7 +95,7 @@ WMenu *mod_menu_do_grabmenu(WMPlex *mplex, ExtlFn handler, ExtlTab tab,
                MPLEX_ATTACH_UNNUMBERED|
                MPLEX_ATTACH_SIZEPOLICY);
     par.szplcy=SIZEPOLICY_FULL_BOUNDS;
-    par.level=STACKING_LEVEL_MODAL1+1;
+    par.level=STACKING_LEVEL_MODAL1+2;
 
     menu=(WMenu*)mplex_do_attach_new(mplex, &par,
                                      (WRegionCreateFn*)create_menu,
index 14d95e6beb973160ef3519a214ab635afaa8d5d4..d20882f7c2d775d313b1ddb82aae48a2cf4466b6 100644 (file)
@@ -51,7 +51,7 @@ WMenu *mod_menu_do_menu(WMPlex *mplex, ExtlFn handler, ExtlTab tab,
                MPLEX_ATTACH_UNNUMBERED|
                MPLEX_ATTACH_SIZEPOLICY);
     par.szplcy=SIZEPOLICY_FULL_BOUNDS;
-    par.level=STACKING_LEVEL_MODAL1+1;
+    par.level=STACKING_LEVEL_MODAL1+2;
     
     return (WMenu*)mplex_do_attach_new(mplex, &par,
                                        (WRegionCreateFn*)create_menu,
index 0caf928a52b7598dcbe6909838578776feccf628..6abf6c371bea96a4c6185c09a1674f42706380a9 100644 (file)
@@ -58,7 +58,7 @@ WMessage *mod_query_do_message(WMPlex *mplex, const char *p)
                MPLEX_ATTACH_UNNUMBERED|
                MPLEX_ATTACH_SIZEPOLICY);
     par.szplcy=SIZEPOLICY_FULL_BOUNDS;
-    par.level=STACKING_LEVEL_MODAL1+1;
+    par.level=STACKING_LEVEL_MODAL1+2;
 
     return (WMessage*)mplex_do_attach_new(mplex, &par,
                                           (WRegionCreateFn*)create_wmsg,
index 3685adedf95c5fc86c7ad6a7f95f171014669e3d..a9524809b4948dc9afe010f4bdd4fde6b34cdf2e 100644 (file)
@@ -1027,6 +1027,7 @@ function mod_query.do_handle_lua(mplex, env, code)
     local print_res
     local function collect_print(...)
         local tmp=""
+        local arg={...}
         local l=#arg
         for i=1,l do
             tmp=tmp..tostring(arg[i])..(i==l and "\n" or "\t")
index 8aadc4054a8df5ffb00b46ecfd5f0a3717259cc9..2749f1d2e0c3e2f2061974a75d52fec667b45592 100644 (file)
@@ -47,7 +47,7 @@ WEdln *mod_query_do_query(WMPlex *mplex, const char *prompt, const char *dflt,
                MPLEX_ATTACH_UNNUMBERED|
                MPLEX_ATTACH_SIZEPOLICY);
     par.szplcy=SIZEPOLICY_FULL_BOUNDS;
-    par.level=STACKING_LEVEL_MODAL1+1;
+    par.level=STACKING_LEVEL_MODAL1+2;
 
     wedln=(WEdln*)mplex_do_attach_new(mplex, &par,
                                       (WRegionCreateFn*)create_wedln,
index ae5d7f9877cd9147216a86fa59986f21ccf239dc..512f38a2d751747540103bcff225f554406053fc 100644 (file)
@@ -88,7 +88,7 @@ static WRegion *create_scratchws(WWindow *parent, const WFitParams *fp,
     par.geom.y=(fp->g.h-par.geom.h)/2;
     
     par.level_set=TRUE;
-    par.level=STACKING_LEVEL_MODAL1;
+    par.level=STACKING_LEVEL_MODAL1+1;
     
     par.bottom=TRUE;
     
index 11996f48c66d9ee02be7008a69a1786cee258710..0554fc005d2ce8b1532f24157eb93ef06f03f8b3 100644 (file)
--- a/system.mk
+++ b/system.mk
@@ -169,7 +169,7 @@ EXPORT_DYNAMIC=-Xlinker --export-dynamic
 
 #C89_SOURCE=-ansi
 
-#POSIX_SOURCE=-D_POSIX_C_SOURCE=200112L
+POSIX_SOURCE=-D_POSIX_C_SOURCE=200112L
 
 # Most systems
 #XOPEN_SOURCE=-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED
index 9aba166793052b56574251d45ab895c4dec3fa3a..0ff85a582df292597ef92f2aa0b9a818a9100f83 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,3 +1,3 @@
-#define ION_RELEASE "3-20080411"
+#define ION_RELEASE "3-20080707"
 #define ION_VERSION ION_RELEASE
 #define ION_API_VERSION "3"