an XWithdrawWindow unmaps a window and sends a synthetic UnmapEvent after
that. when the second UnmapEvent arrives we have to set either the WM_STATE to
WithdrawnState or delete it. i decided for deletion so its absolutly clear
its not any longer under our control
<Workspace> in apps-file. Reason is, that an unmanaged window is not yet
assigned to an workspace and thus the returned workspacenumber is -1 ... which
leads in combination with getWorkspace(nr) to an invalid workspace (0x0) ...
This also fixes the problem with several deiconify-modes of the iconbar, when
the iconbar is in icons-only mode (same reason)
The other changes in the files are just cosmetic, i throw out the comments
about the changes Simon did coz they make sense and are correct imho.
only when using "imlib_load_image_with_error_return" as the loading
function imlib2 seems to avoid trouble when an image with <filename>
doesnt exist. all other loadroutines lead to heavy problems when
fluxbox shuts down and tries to restart (memleak(?), distorted xressources
etc)
i ll analyze this further. another open issue with imlib2 is that it
doesnt work when xserver/fluxbox is running in dualscreen-mode (not
xinerama), no valid pixmaps are visible on the second head. dunno why
(yet).
besides xpm. to get imlib2 support in fluxbox one has to
./configure --enable-imblib2
default is disabled. a fluxbox-binary that supports imlib2 will have
IMLIB2 in "fluxbox -info"-output
explanation to the changed files:
* xft.m4 -> acinclude.m4 + added ac_path_generic.m4
(from http://ac-archive.sourceforge.net/Miscellaneous/ac_path_generic.html)
* configure.in, Makefile.am, src/FbTk/Makefile.am changed to handle
imlib2-support
* Font.cc/hh Image.cc/hh App.cc fluxbox.cc consistent way of init for global
stuff for fonts and imagehandlers.
* rest of changes just add the imlib2-code, pretty straightforward
* synchronize _NET_WM_STATE in Ewmh.cc
* added FluxboxWindow::setFullscreen(bool) to Window.cc
furthermore, if a window is in fullscreenmode any existing shape is
disabled (looks pretty annoying in mplayer for example)
file and directory - helproutines.
* created the FileUtil-namespace which contains file-related functions, moved
those functions out of Directory - code
* changes to the rest of the files to follow those changes
FbTk::Menu::update(Subject*) and FbTk::Menu::update(int index)
to avoid this, we rename FbTk::Menu::update(int index)
-> FbTk::Menu::updateMenu(int index)
this is mostly cosmetic, but if it makes the life of a compiler happy, well ..
be happy icc :)
causes a reconfigure .. which causes a loop over all toolbaritems and call
updateSizing() .. where we should check, if a new timeformat makes the clock
bigger or smaller...
closes#1026096
and all related bugreports elsewhere. "fixes" because i think the real problem
is in xft somewhere somehow, but i dont have any prove (yet).
thanx to Rob Stevens for informing us about that problem.
furthermore, and this is really interesting, this seems to fix also the bug
widely known as g.o.d - the grab of death. the g.o.d seems to freeze fluxbox
but let the mouse still be moving and no high-cpuload can be seen. the
(un)lucky can force the g.o.d by clicking like a weirdo and pressing keys like
crazy and then maybe it will happen. we are not quite sure WHY exactly this
happens but as it seems: XSync(true) caused the trouble.
we still keep watching this issue but hopefully noone experiences bad
"freezes" anymore. (/me crosses fingers)