diff --git a/ChangeLog b/ChangeLog index 2ddb00c40..7e288bc4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * No longer build illume edj files * fixed gadget dragging on desktop near screen edges + * fixed bug where "don't composite fullscreen windows" option would cause some windows to stop appearing 2013-01-15 Mike Blumenkrantz diff --git a/NEWS b/NEWS index e0374d441..f652b9c78 100644 --- a/NEWS +++ b/NEWS @@ -109,3 +109,4 @@ Fixes: * fixed bug where backlight settings would try to update dummy backlight devices * Reuse notifications for mixer and battery modules. * fixed gadget dragging on desktop near screen edges + * fixed bug where "don't composite fullscreen windows" option would cause some windows to stop appearing diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 65e8cf08c..110a2063b 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -126,7 +126,6 @@ struct _E_Comp_Win Eina_Bool hidden_override : 1; // hidden override Eina_Bool animating : 1; // it's busy animating - defer hides/dels Eina_Bool force : 1; // force del/hide even if animating - Eina_Bool defer_show : 1; // stupid gtk apps hide windows twice, ticket #1558 Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide Eina_Bool delete_me : 1; // delete me! Eina_Bool visible : 1; // is visible @@ -1063,7 +1062,7 @@ _e_comp_win_release(E_Comp_Win *cw) cw->pw = 0; cw->ph = 0; ecore_x_e_comp_pixmap_set(cw->win, cw->pixmap); - //cw->show_ready = 0; // hmm maybe not needed? + cw->show_ready = 0; // hmm maybe not needed? } if (cw->redirected) { @@ -1192,7 +1191,7 @@ _e_comp_cb_nocomp_end(E_Comp *c) { if (!cw->nocomp) { - if ((cw->input_only) || (cw->invalid) || (cw->real_hid)) continue; + if ((cw->input_only) || (cw->invalid)) continue; if (cw->nocomp_need_update) { @@ -2352,7 +2351,7 @@ _e_comp_win_show(E_Comp_Win *cw) } ecore_x_e_comp_pixmap_set(cw->win, cw->pixmap); } - if (((cw->dmg_updates >= 1) || (cw->defer_show)) && (cw->show_ready)) + if ((cw->dmg_updates >= 1) && (cw->show_ready)) { cw->defer_hide = 0; if (!cw->hidden_override) _e_comp_child_show(cw); @@ -2741,43 +2740,6 @@ _e_comp_show(void *data __UNUSED__, Ecore_X_Event_Window_Show *ev = event; E_Comp_Win *cw = _e_comp_win_find(ev->win); if (!cw) return ECORE_CALLBACK_PASS_ON; - /* - Vincent Torri via lists.sourceforge.net - - 2:31 PM (8 minutes ago) - - to enlightenment-devel. - would it be possible to add a note in the code, about the reason of - that change ? - - Vincent - - On Thu, Jun 21, 2012 at 3:29 PM, Enlightenment SVN - wrote: - > Log: - > gtk developers with IQs over 180 enjoy hiding and showing their windows constantly, - > especially when resizing. this broke e's comp since we are not nearly that clever - > and try to defer hide animations in most cases. undoing the defer whenever - > this happens allows us to keep up with their towering genius. - > fixes ticket #765 and probably some others. - > affected apps: claws-mail, firefox - */ - if (cw->defer_hide) - { - /* - * this flag was added to further increase compatibility with such magnificent - * gui programming specialists as described in the above comment. another corner - * case of the previously-mentioned genius involves the menus of this incredible toolkit: - * when activating and deactivating menus quickly, gtk sends two separate hide events for - * the same window back-to-back. this means we end up with HIDE-SHOW-HIDE because - * the next activation comes between the hides. to prevent this, we set the defer_show - * flag, which tells comp to ignore the next hide event and to ignore the window's DAMAGE - * event counter when evaluating whether to show it in _e_comp_win_show() below. in this - * way, we ensure that such menus will always be shown. - * ticket #1558 - */ - cw->defer_show = 1; - } cw->defer_hide = 0; if (cw->visible) return ECORE_CALLBACK_PASS_ON; _e_comp_win_show(cw); @@ -2793,8 +2755,7 @@ _e_comp_hide(void *data __UNUSED__, E_Comp_Win *cw = _e_comp_win_find(ev->win); if (!cw) return ECORE_CALLBACK_PASS_ON; if (!cw->visible) return ECORE_CALLBACK_PASS_ON; - if (cw->defer_show) cw->defer_show = 0; - else _e_comp_win_real_hide(cw); + _e_comp_win_real_hide(cw); return ECORE_CALLBACK_PASS_ON; }