From 801e83f399c5307749d9a1caa7ca43814bf343a1 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Sun, 2 Nov 2008 12:10:41 +0000 Subject: [PATCH] [svn-upgrade] Integrating new upstream version, ion3 (20080707) --- ChangeLog | 436 +++++++++++++++++++---------------- RELNOTES | 6 + build/mkman.lua | 4 +- build/mkpreload.lua | 4 +- exact-version | 4 +- ioncore/binding.c | 29 ++- ioncore/framedpholder.c | 27 ++- ioncore/group.c | 86 +++---- ioncore/group.h | 3 +- ioncore/grouppholder.c | 7 + ioncore/ioncore_luaext.lua | 2 +- ioncore/ioncore_menudb.lua | 9 +- ioncore/ioncore_misc.lua | 2 +- ioncore/ioncore_winprops.lua | 1 + ioncore/screen-notify.c | 5 +- libmainloop/select.c | 39 +++- libmainloop/signal.c | 69 ++++-- libmainloop/signal.h | 3 + mod_menu/grabmenu.c | 2 +- mod_menu/mkmenu.c | 2 +- mod_query/fwarn.c | 2 +- mod_query/mod_query.lua | 1 + mod_query/query.c | 2 +- mod_sp/main.c | 2 +- system.mk | 2 +- version.h | 2 +- 26 files changed, 448 insertions(+), 303 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6bed12d..c5d6a37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,49 @@ +2008-07-07 15:38 UTC Tuomo Valkonen + tagged ion-3-20080707 + +2008-07-07 15:38 UTC Tuomo Valkonen + * Release notes + +2008-05-18 12:23 UTC Tuomo Valkonen + * 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 + * 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 + * tab-info gets updated on title change + +2008-06-23 19:12 UTC Tuomo Valkonen + * Use pselect if available + +2008-06-27 14:41 UTC Tuomo Valkonen + * Stacking level adjustment. + Scratchpad should go between transients and queries/menus. + +2008-06-18 10:06 UTC Tuomo Valkonen + * We don't really need it_interval + +2008-06-05 21:20 UTC Tuomo Valkonen + * Apply KNOWN_MODIFIERS_MASK some more + +2008-05-02 19:19 UTC Tuomo Valkonen + * Floating frame initial geometry size hint usage tuning + +2008-05-02 19:14 UTC Tuomo Valkonen + * WGroup needed "whatever" attach geometry option + for proper WGroupCW/WClientWin initial size setup. + +2008-05-02 09:45 UTC Tuomo Valkonen + * Binding refresh fixes on keymap change + 2008-04-11 15:02 UTC Tuomo Valkonen tagged ion-3-20080411 @@ -36,15 +82,15 @@ 2008-02-17 15:02 UTC Tuomo Valkonen * Fixed groupws dispose chain -2008-02-06 06:52 UTC Tuomo Valkonen - * doc. fix - 2008-02-05 17:40 UTC Tuomo Valkonen tagged ion-3-20080207 2008-02-04 22:51 UTC Tuomo Valkonen * Release notes +2008-02-06 06:52 UTC Tuomo Valkonen + * doc. fix + 2008-02-04 22:50 UTC Tuomo Valkonen * More cfg_ion.lua embedded documentation @@ -104,9 +150,6 @@ 2008-01-02 15:15 UTC Tuomo Valkonen * Changes in version.h defs. to accomodate flags -2008-01-01 16:51 UTC Tuomo Valkonen - * New year - 2007-12-30 18:04 UTC Tuomo Valkonen * system.mk documentation improvements @@ -116,6 +159,9 @@ 2007-12-30 17:51 UTC Tuomo Valkonen * Replaced order of LIBS and EXTRA_LIBS in system.mk defaults +2008-01-01 16:51 UTC Tuomo Valkonen + * New year + 2007-12-30 00:04 UTC Tuomo Valkonen * Fixed FS mode return regression after recent pholder code changes. @@ -223,9 +269,6 @@ blocking the parent. Otherwise the parent handles it. -2007-11-30 17:25 UTC Tuomo Valkonen - tagged ion-3rc-20071130 - 2007-11-29 19:48 UTC Tuomo Valkonen UNDO: Removed pointer event subwindow forwarding hack. Only useful use cases seem to be handled by not grabbing modifierless @@ -238,6 +281,9 @@ * Oops, tilings were resetting frame modes incorrectly. (Copy-paste...) +2007-11-30 17:25 UTC Tuomo Valkonen + tagged ion-3rc-20071130 + 2007-11-30 17:24 UTC Tuomo Valkonen * Some release notes @@ -370,9 +416,6 @@ * 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 - * Further rescue code hacks. - 2007-11-01 14:21 UTC Tuomo Valkonen * query_exec completor uses mplex working directory. @@ -381,6 +424,9 @@ (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 + * Further rescue code hacks. + 2007-10-27 12:38 UTC Tuomo Valkonen * Suppressed dead object warnings from tab number script. @@ -653,12 +699,12 @@ 2007-05-08 15:56 UTC Tuomo Valkonen * Fixed tiling emergency restore code -2007-05-08 15:25 UTC Tuomo Valkonen - * Binding fn. doc. fixes - 2007-05-08 15:23 UTC Tuomo Valkonen * "Improved" stacking traversal code wasn't considering fallback. +2007-05-08 15:25 UTC Tuomo Valkonen + * Binding fn. doc. fixes + 2007-05-07 20:55 UTC Tuomo Valkonen * Do not use `which lua5.1` in system.mk examples. Makes for confusing error messages if not found. @@ -1082,6 +1128,9 @@ 2007-03-17 14:51 UTC Tuomo Valkonen * Screen notification windows' positions are based on stdisp position now. +2007-03-17 13:41 UTC Tuomo Valkonen + * Improved default style + 2007-03-17 14:26 UTC Tuomo Valkonen * Oops @@ -1089,9 +1138,6 @@ * WMPlex focus restoring improvements (Closing the scratchpad returns where the focus used to be, etc.) -2007-03-17 13:41 UTC Tuomo Valkonen - * Improved default style - 2007-03-17 13:18 UTC Tuomo Valkonen * Hmm... @@ -1185,12 +1231,12 @@ 2007-03-10 14:30 UTC Tuomo Valkonen * ignore_cfgrq winprop for Xpdf open dialog -2007-03-08 18:09 UTC Tuomo Valkonen - * Oops, wrong flag... - 2007-03-10 13:46 UTC Tuomo Valkonen * Fixed mkbottom geometry +2007-03-08 18:09 UTC Tuomo Valkonen + * Oops, wrong flag... + 2007-03-08 17:32 UTC Tuomo Valkonen * Year update @@ -1234,6 +1280,10 @@ 2007-03-02 21:57 UTC Tuomo Valkonen * Don't refresh on all notifies in frame_managed_notify. +2007-02-26 20:43 UTC Tuomo Valkonen + * Simpler mod_query.query_attachclient handler. + (Uses WRegion.groupleader_of.) + 2007-03-02 16:33 UTC Tuomo Valkonen * Size hints base size usage fixes. @@ -1272,16 +1322,15 @@ 2007-02-27 20:53 UTC Tuomo Valkonen * group_bottom was missing EXTL_SAFE -2007-02-26 20:43 UTC Tuomo Valkonen - * Simpler mod_query.query_attachclient handler. - (Uses WRegion.groupleader_of.) - 2007-02-26 19:31 UTC Tuomo Valkonen * WFrame.floating bindmap is applied to transients too 2007-02-26 16:28 UTC Tuomo Valkonen * Activity notification display improvements (?). +2007-02-24 18:52 UTC Tuomo Valkonen + * Added maximum width parameter to infowin_set_text. + 2007-02-25 22:54 UTC Tuomo Valkonen * Improved float placement code. All of the stacking structure for all groups is scanned, on the target @@ -1293,9 +1342,6 @@ 2007-02-25 18:54 UTC Tuomo Valkonen * Split out screen notification window code into scree-notify.c -2007-02-24 18:52 UTC Tuomo Valkonen - * Added maximum width parameter to infowin_set_text. - 2007-02-24 17:59 UTC Tuomo Valkonen * Fixed unsplit @@ -1462,6 +1508,10 @@ 2007-02-17 14:17 UTC Tuomo Valkonen * Added WRegion.group_of and WRegion.groupleader_of exports. +2007-02-11 18:42 UTC Tuomo Valkonen + * Some menu/query cycling improvements + (partially incomplete) + 2007-02-08 16:17 UTC Tuomo Valkonen * Mplex attach size kludges @@ -1488,10 +1538,6 @@ * Removed stub appmenu. F3/query_exec is the Ion way. (The appmenu remains for pwm, though.) -2007-02-11 18:42 UTC Tuomo Valkonen - * Some menu/query cycling improvements - (partially incomplete) - 2007-02-05 17:47 UTC Tuomo Valkonen * Close grabmenus when grab is killed (Esc). @@ -1611,6 +1657,56 @@ 2007-01-26 19:01 UTC Tuomo Valkonen * Completion code fixes +2007-01-26 18:08 UTC Tuomo Valkonen + * 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 + * 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 + * Fixed leak in mod_query_history_push_ + +2007-01-21 13:25 UTC Tuomo Valkonen + * RELNOTES conflict resolution + +2007-01-21 13:06 UTC Tuomo Valkonen + * Fixes + +2007-01-21 13:05 UTC Tuomo Valkonen + * Frame quasiactivation tracking + +2007-01-20 20:07 UTC Tuomo Valkonen + * Removed 'detail' from notify_change parameters + (And reordered call in unset_manager.) + +2007-01-14 15:39 UTC Tuomo Valkonen + * Removed fake activication messages for non-windows. + +2007-01-13 20:58 UTC Tuomo Valkonen + * 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 + * Changes in padding/spacing usage in frames. + (See RELNOTES.) + +2007-01-13 20:27 UTC Tuomo Valkonen + * Do not draw spacing after last textbox + 2007-01-26 11:12 UTC Tuomo Valkonen * README update @@ -1646,27 +1742,6 @@ 2007-01-23 07:09 UTC Tuomo Valkonen * Marked WFrame.mode "safe" -2007-01-26 18:08 UTC Tuomo Valkonen - * 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 - * 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 - * Fixed leak in mod_query_history_push_ - 2007-01-22 20:32 UTC Tuomo Valkonen * Ugly pointer focus hack for messy floats: If a window that does not have the focus, or if the focus is being @@ -1676,34 +1751,21 @@ 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 - * RELNOTES conflict resolution - -2007-01-21 13:06 UTC Tuomo Valkonen - * Fixes - -2007-01-21 13:05 UTC Tuomo Valkonen - * Frame quasiactivation tracking - 2007-01-21 12:39 UTC Tuomo Valkonen * Pseudoactivity state maintenance hack 2007-01-18 20:14 UTC Tuomo Valkonen * Navi-code updates -2007-01-17 20:49 UTC Tuomo Valkonen - * Comment updates - -2007-01-20 20:07 UTC Tuomo Valkonen - * Removed 'detail' from notify_change parameters - (And reordered call in unset_manager.) - 2007-01-18 08:00 UTC Tuomo Valkonen * 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 + * Comment updates + 2007-01-17 18:18 UTC Tuomo Valkonen * Further simplifications/dead code removal. (Made possible by removal of Xinerama #ifdef hacks.) @@ -1738,25 +1800,9 @@ 2007-01-14 00:30 UTC Tuomo Valkonen * Fixes wrt. FRAME_MODE_UNKNOWN (e.g. scratchpad). -2007-01-14 15:39 UTC Tuomo Valkonen - * Removed fake activication messages for non-windows. - 2007-01-13 23:27 UTC Tuomo Valkonen * Toplevel bindmap usage tuning -2007-01-13 20:58 UTC Tuomo Valkonen - * 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 - * Changes in padding/spacing usage in frames. - (See RELNOTES.) - -2007-01-13 20:27 UTC Tuomo Valkonen - * Do not draw spacing after last textbox - 2007-01-13 18:54 UTC Tuomo Valkonen * Oops, forgot this... @@ -1820,12 +1866,12 @@ 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 - * Typo fix (+ minor related policy changes) - 2007-01-06 18:56 UTC Tuomo Valkonen * Added mode to WFramedParam +2007-01-08 20:12 UTC Tuomo Valkonen + * Typo fix (+ minor related policy changes) + 2007-01-04 22:13 UTC Tuomo Valkonen * Moved set/is_fullscreen from WClientWin to WGroup - Simplifies the binding (and the config needs to be updated!) @@ -1874,9 +1920,6 @@ 2006-12-27 14:35 UTC Tuomo Valkonen * Use return storage for return from full screen mode -2006-12-26 20:25 UTC Tuomo Valkonen - * Don't snow info window for activity on active screen - 2006-12-26 17:40 UTC Tuomo Valkonen * More functions for return storage @@ -1889,6 +1932,9 @@ 2006-12-26 16:53 UTC Tuomo Valkonen * Removed unused variable/string +2006-12-26 20:25 UTC Tuomo Valkonen + * Don't snow info window for activity on active screen + 2006-12-23 14:59 UTC Tuomo Valkonen tagged ion-3ds-20061223 @@ -1977,6 +2023,16 @@ 2006-11-11 12:01 UTC Tuomo Valkonen * Warp in WMPlex.set_hidden +2006-11-09 18:09 UTC Tuomo Valkonen + * Do not duplicate entries already in history when pushing. + Instead move the first already existing first. + +2006-11-09 18:00 UTC Tuomo Valkonen + * strcoll instead of strcmp for completion sorting + +2006-11-09 17:59 UTC Tuomo Valkonen + * Complete history in history order instead of character set + 2006-11-04 14:58 UTC Tuomo Valkonen * Clear a few more flags of frame size hints @@ -1991,16 +2047,6 @@ 2006-11-03 07:52 UTC Tuomo Valkonen * Fixed switchto/hidden WMPlex attach parameter interaction. -2006-11-09 18:09 UTC Tuomo Valkonen - * Do not duplicate entries already in history when pushing. - Instead move the first already existing first. - -2006-11-09 18:00 UTC Tuomo Valkonen - * strcoll instead of strcmp for completion sorting - -2006-11-09 17:59 UTC Tuomo Valkonen - * Complete history in history order instead of character set - 2006-11-01 20:13 UTC Tuomo Valkonen * Remanage stdisp when bottom attached to group @@ -2153,9 +2199,6 @@ 2006-10-16 12:16 UTC Miroslav Kure * Updated Czech translation -2006-10-02 11:57 UTC Tuomo Valkonen - * README update - 2006-10-15 22:35 UTC Tuomo Valkonen * Fixed a typo in workspace query (Stupid dynamic typing.) @@ -2275,6 +2318,9 @@ 2006-10-03 15:39 UTC Tuomo Valkonen * Simplified group attach stuff with separate WFramedPHolder +2006-10-02 11:57 UTC Tuomo Valkonen + * README update + 2006-09-30 20:57 UTC Tuomo Valkonen * mod_menu was still referring to WMPlex.llist @@ -2400,15 +2446,15 @@ 2006-08-31 19:33 UTC Tuomo Valkonen * Various minor fixes and clean-up. +2006-08-31 17:20 UTC Tuomo Valkonen + * Some attach mechanism improvements. + 2006-08-25 02:06 UTC Tuomo Valkonen * Moved commented-out transpose_words as Control+K T. 2006-08-24 20:52 UTC Tibor Csögör * Added transpose_chars and transpose_words to mod_query. -2006-08-31 17:20 UTC Tuomo Valkonen - * Some attach mechanism improvements. - 2006-08-21 17:02 UTC Tuomo Valkonen * Navigation code fixes @@ -2445,6 +2491,9 @@ * Generic navigation code improvements. - Also removed some redundant tiling code. +2006-08-14 18:57 UTC Tuomo Valkonen + * Fixed some undefined references in mod_dock. + 2006-08-11 16:46 UTC Tuomo Valkonen * Fixed an assert trigger @@ -2454,9 +2503,6 @@ 2006-08-14 15:57 UTC Tuomo Valkonen * Added a missing check for nil table. -2006-08-14 18:57 UTC Tuomo Valkonen - * Fixed some undefined references in mod_dock. - 2006-08-09 17:57 UTC Tuomo Valkonen * Use redblack tree for reg->stacking lookup. @@ -2472,15 +2518,6 @@ 2006-08-05 18:39 UTC Tuomo Valkonen * Removed mplex_lcount stuff. -2006-08-02 14:56 UTC Tuomo Valkonen - * Possible fixes to (initial) effect of stdisp on tiling llayout. - -2006-08-03 21:13 UTC Tuomo Valkonen - * Updated to predist.sh to reflect changed paths of *.mk. - -2006-08-03 21:03 UTC Tuomo Valkonen - * Changes in predist.sh to reflect _darcs/ having been changed. - 2006-08-03 15:56 UTC Tuomo Valkonen * Simplifications in mplex/group focus code. @@ -2490,6 +2527,15 @@ 2006-08-01 22:11 UTC Tuomo Valkonen * Some field renames for further changes. +2006-08-03 21:13 UTC Tuomo Valkonen + * Updated to predist.sh to reflect changed paths of *.mk. + +2006-08-03 21:03 UTC Tuomo Valkonen + * Changes in predist.sh to reflect _darcs/ having been changed. + +2006-08-02 14:56 UTC Tuomo Valkonen + * Possible fixes to (initial) effect of stdisp on tiling llayout. + 2006-07-16 15:33 UTC Tuomo Valkonen * WGroupCW uses the bottom_last_close option now (instead of reinventing it). @@ -2516,16 +2562,14 @@ - Backwards compatibility hack included for saved layouts, but not configuration files. -2006-07-14 11:21 UTC Tuomo Valkonen - * Moved some region_register calls to safer places. - 2006-07-14 11:07 UTC Tuomo Valkonen * 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 + * Temporarily disabled mod_panews. + +2006-07-14 11:21 UTC Tuomo Valkonen + * Moved some region_register calls to safer places. 2006-07-14 10:26 UTC Tuomo Valkonen * Removed redundant code by using weave for raise/lower. @@ -2533,30 +2577,32 @@ 2006-07-12 12:34 UTC Tuomo Valkonen * Removed WGenWS entirely. -2006-07-08 10:13 UTC Tuomo Valkonen - * mod_dock was still referring to mplex_layer. +2006-07-07 18:19 UTC Tuomo Valkonen + * Added beginnings of more generic navigation code. -2006-07-12 11:59 UTC Tuomo Valkonen - * Temporarily disabled mod_panews. +2006-07-08 07:54 UTC Tuomo Valkonen + * floatws redirects prepare_manage to 'bottom' if active. + +2006-07-07 14:42 UTC Tuomo Valkonen + * Redirect stdisp to WGroup(WS) 'bottom'. 2006-07-12 05:00 UTC Etan Reisner * Remove an extra space in the Lua query prompt. -2006-07-08 08:48 UTC Tuomo Valkonen - * 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 - * floatws redirects prepare_manage to 'bottom' if active. +2006-07-08 10:13 UTC Tuomo Valkonen + * mod_dock was still referring to mplex_layer. -2006-07-07 18:19 UTC Tuomo Valkonen - * Added beginnings of more generic navigation code. +2006-07-08 08:48 UTC Tuomo Valkonen + * Fixes in initial stacking of regions. 2006-07-07 17:13 UTC Tuomo Valkonen * Fixed 'bottom' initial stacking. -2006-07-07 14:42 UTC Tuomo Valkonen - * Redirect stdisp to WGroup(WS) 'bottom'. - 2006-07-05 15:13 UTC Tuomo Valkonen * Ugly Makefile hacks. @@ -2575,6 +2621,13 @@ 2006-07-01 18:19 UTC Tuomo Valkonen * Further improvements in focus code. +2006-06-25 17:36 UTC Tuomo Valkonen + * Minor fixes to group stuff. + +2006-06-25 16:03 UTC Tuomo Valkonen + * Reduced use of WGenWS. + (Only WIonWS and WPaneWS still refer to it.) + 2006-07-01 16:28 UTC Tuomo Valkonen * region_managed_goto improvements. @@ -2587,13 +2640,6 @@ 2006-06-25 20:00 UTC Tuomo Valkonen * Fixes and simplifications to key handling code. -2006-06-25 17:36 UTC Tuomo Valkonen - * Minor fixes to group stuff. - -2006-06-25 16:03 UTC Tuomo Valkonen - * Reduced use of WGenWS. - (Only WIonWS and WPaneWS still refer to it.) - 2006-06-25 09:37 UTC Tuomo Valkonen * WGroupCW passes on region_managed_notify for the 'bottom'. @@ -2651,18 +2697,9 @@ 2006-06-22 23:38 UTC Tuomo Valkonen * First steps of client window groups. -2006-06-21 16:46 UTC Tuomo Valkonen - * There were unused fields in WClientWin. - -2006-06-21 16:42 UTC Tuomo Valkonen - * Some dates were wrong.. - 2006-06-21 16:39 UTC Tuomo Valkonen * Fixed group attach geometry stuff. -2006-06-21 08:10 UTC Tuomo Valkonen - * Typo fixes. - 2006-06-20 19:05 UTC Tuomo Valkonen * Inherited WFloatWS from WGroup. @@ -2687,6 +2724,15 @@ 2006-06-19 16:13 UTC Tuomo Valkonen * Added generic floatws attach routines. +2006-06-21 16:42 UTC Tuomo Valkonen + * Some dates were wrong.. + +2006-06-21 16:46 UTC Tuomo Valkonen + * There were unused fields in WClientWin. + +2006-06-21 08:10 UTC Tuomo Valkonen + * Typo fixes. + 2006-06-19 12:36 UTC Tuomo Valkonen * Allow override of xterm with the XTERM Lua-side variable. @@ -2705,6 +2751,30 @@ 2006-06-17 17:36 UTC Tuomo Valkonen * Added manager specific list to WStacking. +2006-06-11 17:30 UTC Tuomo Valkonen + * Improvements to floatws bottom support + use size policies. + +2006-06-11 17:30 UTC Tuomo Valkonen + * Added SIZEPOLICY_UNCONSTRAINED. + +2006-06-10 21:45 UTC Tuomo Valkonen + * Preliminary floatws "bottom" support. + +2006-05-29 16:05 UTC Tuomo Valkonen + * Added levels to stacking code. + +2006-05-28 20:17 UTC Tuomo Valkonen + * Removed some redundancy from stacking code. + +2006-05-28 17:52 UTC Tuomo Valkonen + * Some more stacking code changes. + +2006-05-28 11:36 UTC Tuomo Valkonen + * Some more stacking code cleanup etc. + +2006-05-27 15:25 UTC Tuomo Valkonen + * Some improvements/cleanup in floatws stacking code. + 2006-06-17 10:45 UTC Tuomo Valkonen * Cleaned up the top directory of building related files. - In particular, autovirus stuff is in build/ac now and must be run there. @@ -2721,15 +2791,6 @@ 2006-06-07 09:47 UTC Tuomo Valkonen * Export ioncore.tags_first. -2006-06-11 17:30 UTC Tuomo Valkonen - * Improvements to floatws bottom support + use size policies. - -2006-06-11 17:30 UTC Tuomo Valkonen - * Added SIZEPOLICY_UNCONSTRAINED. - -2006-06-10 21:45 UTC Tuomo Valkonen - * Preliminary floatws "bottom" support. - 2006-06-09 14:37 UTC Tuomo Valkonen * Exclude USECS_IN_SEC itself from valid values too.. @@ -2741,27 +2802,12 @@ * 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 - * Added levels to stacking code. - -2006-05-28 20:17 UTC Tuomo Valkonen - * Removed some redundancy from stacking code. - 2006-05-19 21:36 UTC Etan Reisner * 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 - * Some more stacking code changes. - -2006-05-28 11:36 UTC Tuomo Valkonen - * Some more stacking code cleanup etc. - -2006-05-27 15:25 UTC Tuomo Valkonen - * Some improvements/cleanup in floatws stacking code. - 2006-05-24 16:22 UTC Tuomo Valkonen tagged ion-3ds-20060524 @@ -2880,6 +2926,11 @@ 2006-04-26 17:49 UTC Tuomo Valkonen * framed_transients is on by default now. +2006-04-26 17:45 UTC Tuomo Valkonen + * 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 * Added toggle for showing tab numbers. - WFrame:set_numbers with the usual 'set'/'unset'/'toggle' parametrisation. @@ -2887,11 +2938,6 @@ 2006-04-20 19:19 UTC Tuomo Valkonen * Removed obsolete references to -i18n flag. -2006-04-26 17:45 UTC Tuomo Valkonen - * 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 * The frame_add_last option had been broken. - Since switching to use of placeholders for initial management @@ -3267,9 +3313,6 @@ 2005-11-25 19:54 UTC Miroslav Kure * Updated Czech translation -2005-11-15 17:04 UTC Tuomo Valkonen - * Another temporary clientwin resize hack. - 2005-11-20 13:00 UTC Tuomo Valkonen * Improved previous active region tracking. - Replaced explicit and cumbersome previous active object saving @@ -3279,6 +3322,9 @@ 2005-11-20 12:31 UTC Tuomo Valkonen * Hmm.. active_screen was still in ioncore_g. +2005-11-15 17:04 UTC Tuomo Valkonen + * Another temporary clientwin resize hack. + 2005-11-15 07:20 UTC Tuomo Valkonen * Fixed a typo; wairel -> waitrel. @@ -3337,9 +3383,6 @@ 2005-10-25 18:31 UTC Tuomo Valkonen * Fixed (unframed) nested transient size issue. -2005-10-13 20:57 UTC Tuomo Valkonen - * Fixed -sessionname to -session in manual pages. - 2005-10-24 20:47 UTC Tuomo Valkonen * Oops. %filler update had removed stretching space constant part. @@ -3359,11 +3402,14 @@ 2005-10-23 15:55 UTC Tuomo Valkonen * Fixed dummy size hint setup. +2005-10-15 18:11 UTC Tuomo Valkonen + * Changes in frame autodestroy code. + 2005-10-18 16:22 UTC Tuomo Valkonen * Oops. mod_dock hadn't been updated to reflect changes in mplex_set/get_stdisp. -2005-10-15 18:11 UTC Tuomo Valkonen - * Changes in frame autodestroy code. +2005-10-13 20:57 UTC Tuomo Valkonen + * Fixed -sessionname to -session in manual pages. 2005-10-07 21:07 UTC Tuomo Valkonen * Fixed 180 degree rotation. @@ -3407,12 +3453,12 @@ 2005-09-05 20:20 UTC Tuomo Valkonen * Removed mail monitor from default statusbar template. -2005-08-29 05:43 UTC Tuomo Valkonen - * Fixed floatws_backcirculate (copy-paste bug..) - 2005-08-31 10:19 UTC Tuomo Valkonen * Removed unused parameter of ioncore.x_get_atom_name. +2005-08-29 05:43 UTC Tuomo Valkonen + * Fixed floatws_backcirculate (copy-paste bug..) + 2005-08-27 23:01 UTC Per Olofsson * Some updates to README.dock. diff --git a/RELNOTES b/RELNOTES index effb8a6..1c272f6 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,4 +1,10 @@ +ion-3-20080707 +-------------- + +This is yet another maintenance release fixing a few issues. + + ion-3-20080411 -------------- diff --git a/build/mkman.lua b/build/mkman.lua index 8c5d055..da97d50 100644 --- a/build/mkman.lua +++ b/build/mkman.lua @@ -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 diff --git a/build/mkpreload.lua b/build/mkpreload.lua index 6b51ceb..184644a 100644 --- a/build/mkpreload.lua +++ b/build/mkpreload.lua @@ -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)); diff --git a/exact-version b/exact-version index f38473e..ffaa1fa 100644 --- a/exact-version +++ b/exact-version @@ -1,5 +1,5 @@ Context: -[TAG ion-3-20080411 -Tuomo Valkonen **20080411150249] +[TAG ion-3-20080707 +Tuomo Valkonen **20080707153848] diff --git a/ioncore/binding.c b/ioncore/binding.c index 5ca284d..f4fb0e6 100644 --- a/ioncore/binding.c +++ b/ioncore/binding.c @@ -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; jmax_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; } diff --git a/ioncore/framedpholder.c b/ioncore/framedpholder.c index 4597eec..0a19808 100644 --- a/ioncore/framedpholder.c +++ b/ioncore/framedpholder.c @@ -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®ION_FIT_WHATEVER)) rectangle_constrain(&rqg, &fp->g); diff --git a/ioncore/group.c b/ioncore/group.c index 21db4bb..6d0409c 100644 --- a/ioncore/group.c +++ b/ioncore/group.c @@ -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, ¶m->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, ¶m->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, ®ION_GEOM(reg))!=RECTANGLE_SAME) - region_fitrep(reg, NULL, &fp); + if(rectangle_compare(&fp.g, ®ION_GEOM(reg))!=RECTANGLE_SAME) + region_fitrep(reg, NULL, &fp); + } /* Add */ st=group_do_add_managed(ws, reg, level, szplcy); diff --git a/ioncore/group.h b/ioncore/group.h index d822711..85af349 100644 --- a/ioncore/group.h +++ b/ioncore/group.h @@ -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){ diff --git a/ioncore/grouppholder.c b/ioncore/grouppholder.c index cdd2dce..2d941e4 100644 --- a/ioncore/grouppholder.c +++ b/ioncore/grouppholder.c @@ -197,9 +197,13 @@ static WRegion *recreate_handler(WWindow *par, if(grp==NULL) return NULL; + + rp->ph->param.whatever=(fp->mode®ION_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®ION_FIT_WHATEVER) + REGION_GEOM(grp)=REGION_GEOM(rp->reg_ret); + return (WRegion*)grp; } diff --git a/ioncore/ioncore_luaext.lua b/ioncore/ioncore_luaext.lua index 74d3880..a98d2ce 100644 --- a/ioncore/ioncore_luaext.lua +++ b/ioncore/ioncore_luaext.lua @@ -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 diff --git a/ioncore/ioncore_menudb.lua b/ioncore/ioncore_menudb.lua index 17b0c4a..62cf04a 100644 --- a/ioncore/ioncore_menudb.lua +++ b/ioncore/ioncore_menudb.lua @@ -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 diff --git a/ioncore/ioncore_misc.lua b/ioncore/ioncore_misc.lua index dde914e..1a0b0eb 100644 --- a/ioncore/ioncore_misc.lua +++ b/ioncore/ioncore_misc.lua @@ -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 diff --git a/ioncore/ioncore_winprops.lua b/ioncore/ioncore_winprops.lua index 7497356..b74ed63 100644 --- a/ioncore/ioncore_winprops.lua +++ b/ioncore/ioncore_winprops.lua @@ -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 diff --git a/ioncore/screen-notify.c b/ioncore/screen-notify.c index 522a0a5..ecb2807 100644 --- a/ioncore/screen-notify.c +++ b/ioncore/screen-notify.c @@ -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); } } diff --git a/libmainloop/select.c b/libmainloop/select.c index e66d35c..f8410a5 100644 --- a/libmainloop/select.c +++ b/libmainloop/select.c @@ -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 +#include + #include #include #include #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); } diff --git a/libmainloop/signal.c b/libmainloop/signal.c index 877e3ec..fd37161 100644 --- a/libmainloop/signal.c +++ b/libmainloop/signal.c @@ -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_usecwhen, (*tv))){ + if(queue->when.tv_usectv_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){ diff --git a/libmainloop/signal.h b/libmainloop/signal.h index 72691dc..bd93fb2 100644 --- a/libmainloop/signal.h +++ b/libmainloop/signal.h @@ -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; diff --git a/mod_menu/grabmenu.c b/mod_menu/grabmenu.c index 5c44bed..0274683 100644 --- a/mod_menu/grabmenu.c +++ b/mod_menu/grabmenu.c @@ -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, diff --git a/mod_menu/mkmenu.c b/mod_menu/mkmenu.c index 14d95e6..d20882f 100644 --- a/mod_menu/mkmenu.c +++ b/mod_menu/mkmenu.c @@ -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, diff --git a/mod_query/fwarn.c b/mod_query/fwarn.c index 0caf928..6abf6c3 100644 --- a/mod_query/fwarn.c +++ b/mod_query/fwarn.c @@ -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, diff --git a/mod_query/mod_query.lua b/mod_query/mod_query.lua index 3685ade..a952480 100644 --- a/mod_query/mod_query.lua +++ b/mod_query/mod_query.lua @@ -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") diff --git a/mod_query/query.c b/mod_query/query.c index 8aadc40..2749f1d 100644 --- a/mod_query/query.c +++ b/mod_query/query.c @@ -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, diff --git a/mod_sp/main.c b/mod_sp/main.c index ae5d7f9..512f38a 100644 --- a/mod_sp/main.c +++ b/mod_sp/main.c @@ -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; diff --git a/system.mk b/system.mk index 11996f4..0554fc0 100644 --- 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 diff --git a/version.h b/version.h index 9aba166..0ff85a5 100644 --- 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" -- 2.39.2