forked from enlightenment/enlightenment
finally fix bug with "don't composite fullscreen windows" option
ticket #1558 SVN revision: 83076
This commit is contained in:
parent
b93d7aeb23
commit
6d4ccf159c
|
@ -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
|
||||
|
||||
|
|
1
NEWS
1
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
|
||||
|
|
|
@ -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
|
||||
<no-reply@enlightenment.org> 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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue