From: manio <ma...@sk...> - 2009-07-31 08:03:50
|
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...@sk... http://manio.skyboo.net |