Hi
As you may know i have two-monitor config. The problem is when
restarting e (with existing windows). On initial desk all is ok - i mean
the windows which were minimized are minimized after restart and which
was on screen, stays on screen. But on the other screen i always needed
to minimize windows after restart - because e still shows me on desktop
windows which was hidden in shelf before.
So - here is what i find out during debug:
The state of window is reverted in e_hints_window_init (called from
e_border_eval).
Inside is check for:
(bd->client.iccm.state==ECORE_X_WINDOW_HINT_ICONIC &&
bd->client.netwm.state.hidden)
depends on result the window is iconified or leave on screen
The problem was - that minimized windows (in my case all on not initial
screen) always has set state to ECORE_X_WINDOW_STATE_HINT_NORMAL instead
of ECORE_X_WINDOW_STATE_HINT_ICONIC.
After some digging i found out the place where the state is wrongly
assigned:
e_manager_manage_windows is called before - and inside (in /* we have
seen this window before */) is a call:
if (desk) e_border_desk_set(bd,desk)
Following - in e_border_desk_set is (depend on desk->visible or
bd->sticky) a call for e_border_show()
And in e_border_show the iccm.state is wrongly assigned in line:
e_hints_window_visible_set(bd) - this call causes to change the
iccm.state to ECORE_X_WINDOW_STATE_HINT_NORMAL
bingo :)
I removed from e_border_desk_set the piece of code with e_border_show
and e_border_hide because:
1. it cause the described problem
2. the e_border_show and e_border_hide are called a moment later in
e_hints_window_init() iteration
Please review :)
regards,
--
manio
jabber/e-mail: ma...@skyboo.net
http://manio.skyboo.net
Index: e_border.c
===================================================================
--- e_border.c (revision 41315)
+++ e_border.c (working copy)
@@ -690,11 +690,6 @@
e_object_ref(E_OBJECT(desk));
ecore_event_add(E_EVENT_BORDER_DESK_SET, ev, _e_border_event_border_desk_set_free, NULL);
- if ((bd->desk->visible) || (bd->sticky))
- e_border_show(bd);
- else
- e_border_hide(bd, 1);
-
if (e_config->transient.desktop)
{
Eina_List *l;
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel