Thanks a lot for finding the condition for this bug!
The problem is this: Moving the scratchpad eventually ends up in
"sizepolicy_free_snap" (seems to have been in-lined in the build I debugged)
#0 sizepolicy (szplcy=0x88f998c, reg=0x88f93e8, rq_geom=0xbfd774cc,
rq_flags=<value optimized out>, fp=0xbfd773e0) at sizepolicy.c:194
#1 0x08073852 in group_managed_rqgeom (ws=0x88f8fa8, reg=0x88f93e8,
rq=0xbfd774cc, geomret=0x891d468) at group.c:997
#2 0x08065c21 in region_managed_rqgeom (mgr=0x88f8fa8, reg=0x88f93e8,
rq=0xbfd774cc, geomret=0x891d468) at resize.c:593
#3 0x08065e83 in region_rqgeom (reg=0x88f93e8, rq=0xbfd774cc,
geomret=0x891d468) at resize.c:531
#4 0x08066514 in moveresmode_do_newgeom (mode=0x891d408, rq=0xbfd774cc) at
resize.c:336
#5 0x0806679b in moveresmode_delta (mode=0x891d408, dx1=<value optimized out>,
dx2=<value optimized out>, dy1=-6, dy2=-6, rret=0x0) at resize.c:423
#6 0x0805ec7d in ioncore_do_handle_motionnotify (ev=0xbfd77644) at
pointer.c:176
#7 0x080653bc in ioncore_handle_buttonpress (ev=0xbfd77644) at eventh.c:493
#8 0x08065705 in ioncore_handle_event (ev=0xbfd773e0) at eventh.c:81
#9 0x0807a92d in hook_call_alt (hk=0x88246f8, p=0xbfd77644, m=0x807a8b1
<marshall_alt_p>, em=0) at hooks.c:371
#10 0x0807a9ff in hook_call_alt_p (hk=0x88246f8, p=0xbfd77644, em=0) at
hooks.c:416
#11 0x0805cd37 in ioncore_x_connection_handler (conn=10, unused=0x0) at
event.c:210
#12 0x0807997c in mainloop_select () at select.c:88
#13 0x0805ce1f in ioncore_mainloop () at event.c:238
#14 0x0805b631 in main (argc=) at ion.c:278
Here the sizepolicy is combined with border modifiers (e.g.
SIZEPOLICY_HORIZ_LEFT) if the scratchpad is at one of the borders.
This results in a sizepolicy without a string representation (szplcy_specs,
sizepolicy.c:311), so when stringpolizy2string is called when the layout is
saved it returns NULL.
The following small patch fixes the issue: (done against ion3plus with latest
patchset)
hunk ./ioncore/sizepolicy.c 363
- return stringintmap_key(szplcy_specs, szplcy, NULL);
+ char* str=stringintmap_key(szplcy_specs, szplcy, NULL);
+ if(str==NULL){
+ /* fall back on policy without modifiers if full name not found */
+ str=stringintmap_key(szplcy_specs, szplcy&0xff, NULL);
+ }
+ return str;
On Sat, 05 Dec 2009 04:16:23 +0100, Canaan Hadley-Voth <[email protected]>
wrote:
More on this issue:
http://article.gmane.org/gmane.comp.window-managers.ion.general/8897/match=scratchpad
(Scratchpad stuck in max size "mode")
If my scratchpad is touching any screen border when I restart, ion will forget to write
sizepolicy="free glue" to the saved_layout.lua file, and after restarting it will then
take up the whole screen and not be resizeable. If the scratchpad is not touching any border when
I restart, saved_layout will show the "free glue" entry for *scratchpad* and will
function properly.
_________________________________________________________________
Windows Live Hotmail gives you a free,exclusive gift.
http://www.microsoft.com/windows/windowslive/hotmail_bl1/hotmail_bl1.aspx?ocid=PID23879::T:WLMTAGL:ON:WL:en-ww:WM_IMHM_7:092009