When user hit shutdown or restart from dialog, evoke will immediately sent shutdown/restart signal, causing abnormal X termination, killing all childs. With this commit, evoke will first close all X childs, then send shutdown/restart signal.
When user logout or shutdown the system, a warning dialog was showing about wrong DBus reply. Now are used
ConsoleKit commands 'CanStop' and 'CanRestart' to check can user perform the action.
ede-panel has alternative way of calling ede-about dialog
Dumped SettingsApplicator.* code from evoke. They are replaced with ede-settings-apply script
which should call all programs that needs to apply stored settings. This will reduce code entropy
evoke will call ede-settings-apply at the startup
ede-bell-conf modified to use "--apply" arg and to apply known settings
ede-desktop will start icon exec path via ede-launch
Fixed freebsd specific code in ede-panel's battery code
Set Gtk/FontName in ede-settings.conf to the sane values so firefox (and other gtk apps)
does not yield unreadable windows
Removed some debugging code in evoke
Replaced hardcoded values for screen sizes used by logout dialog with passed values.
Removed spawn_backtrace() function; not used any more.
Some code reordering
Composite will now draw only damaged regions, and their damage is (now) correctly
reported, mostly due changes in main FLTK loop.
Also there are two ways how evoke will be running: if USE_FLTK_LOOP_EMULATION
is defined (default yes), it will fully emulate FLTK loop (as done before). Oposite
way (without emulation) it will relay on FLTK message passing, but it is very unpredictable
since FLTK will sometime miss SelectionClear events (XSETTINGS relay on it), probably due
large XDamageNotify throttling. When emulation is used, there are no such problems
since all events are processed before they are routed to FLTK.
In composite is added another way of repainting (when USE_CHECK is defined), and it will
relay on Fl::add_check() function; there are some differences between this function
and timer used for screen refresh. Timer will try to refresh it every XX ms and when
there are large number of XDamageNotify reports, this will not be suitable for
movements smoothing on the screen; on other hand add_check() will call callback every
time when event is processed, which brings smooth movements. For now only timer is used
untill I finish compositing stuff.
Also composite will handle messages from it's own add_handler() since (somehow), all pending
XDamageNotify events will not be correctly reported inside EvokeService handler.
And about splash... splash will now keep it's window at the top, no matter what window is
raised. This is a small hack until I implement _NET_WM_WINDOW_TYPE_SPLASH in edewm (I don't
have to say that this hack works for all wm's I tested :P).
Sound from splash is removed; reason for this is when evoke starts childs (only when X session
was started), device descriptors will be used by childs too making sound device unusable and
marked as busy. This can be solved by using better sound library, which is story for itself...
A lot of things are pending for implementation like region translucency, shadows, fading...
Per window translucency is in, but now working as expected.
should not interfere with popped up message boxes. Still there is a issue
with childs during splash startup: when one of them crashes with core dump
crash dialog will not be shown, but the main process handler correctly returns crash flag.
second and rest would be fine. That is hopefully fixed now.
Splash window still gets hidden by old eiconman; for other apps it is fine. Pending for revision.
service_watcher() would not be drawn correctly yielding program hang since
add_fd() would not send events to fltk.
Also commented hack from Splash to keep it's window at the top of all;
now, using add_fd() evoke will get events before fltk which is what I want.
Not tested with other wm's.
Note: enabling that hack will surely crash evoke unless fl_handle() is removed
from main evoke loop.
without possible stealing from fltk. Prevous, add_handler(), would send only
unknown events for fltk which leave us without really important ones, like selection events
used by XSETTINGS manager.
Added XSETTINGS support (yet unfinished) which will make evoke as XSETTINGS manager.
session should be logged out. Previous version (althought commented) was
closing all windows (buttons and rest are counted too), not their main
window. Thanks to some old code from babaya project I found, XmuClientWindow
is what I needed, so emulation is provided to avoid linking with libXmu.
Also added some more signals to detect quitting.
Pending issue: I'm getting strange sound driver locks when X are started
via evoke. This is un-reporoduceable when evoke is started from gui console.
This still needs to be investigate.
executable was not found or file is not executable.
Add mutexes since childs return codes comes from second thread. This
will also prevent races when report dialogs are shown.