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
|
* No longer build illume edj files
|
||||||
* fixed gadget dragging on desktop near screen edges
|
* 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
|
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
|
* fixed bug where backlight settings would try to update dummy backlight devices
|
||||||
* Reuse notifications for mixer and battery modules.
|
* Reuse notifications for mixer and battery modules.
|
||||||
* fixed gadget dragging on desktop near screen edges
|
* 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 hidden_override : 1; // hidden override
|
||||||
Eina_Bool animating : 1; // it's busy animating - defer hides/dels
|
Eina_Bool animating : 1; // it's busy animating - defer hides/dels
|
||||||
Eina_Bool force : 1; // force del/hide even if animating
|
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 defer_hide : 1; // flag to get hide to work on deferred hide
|
||||||
Eina_Bool delete_me : 1; // delete me!
|
Eina_Bool delete_me : 1; // delete me!
|
||||||
Eina_Bool visible : 1; // is visible
|
Eina_Bool visible : 1; // is visible
|
||||||
|
@ -1063,7 +1062,7 @@ _e_comp_win_release(E_Comp_Win *cw)
|
||||||
cw->pw = 0;
|
cw->pw = 0;
|
||||||
cw->ph = 0;
|
cw->ph = 0;
|
||||||
ecore_x_e_comp_pixmap_set(cw->win, cw->pixmap);
|
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)
|
if (cw->redirected)
|
||||||
{
|
{
|
||||||
|
@ -1192,7 +1191,7 @@ _e_comp_cb_nocomp_end(E_Comp *c)
|
||||||
{
|
{
|
||||||
if (!cw->nocomp)
|
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)
|
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);
|
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;
|
cw->defer_hide = 0;
|
||||||
if (!cw->hidden_override) _e_comp_child_show(cw);
|
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;
|
Ecore_X_Event_Window_Show *ev = event;
|
||||||
E_Comp_Win *cw = _e_comp_win_find(ev->win);
|
E_Comp_Win *cw = _e_comp_win_find(ev->win);
|
||||||
if (!cw) return ECORE_CALLBACK_PASS_ON;
|
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;
|
cw->defer_hide = 0;
|
||||||
if (cw->visible) return ECORE_CALLBACK_PASS_ON;
|
if (cw->visible) return ECORE_CALLBACK_PASS_ON;
|
||||||
_e_comp_win_show(cw);
|
_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);
|
E_Comp_Win *cw = _e_comp_win_find(ev->win);
|
||||||
if (!cw) return ECORE_CALLBACK_PASS_ON;
|
if (!cw) return ECORE_CALLBACK_PASS_ON;
|
||||||
if (!cw->visible) return ECORE_CALLBACK_PASS_ON;
|
if (!cw->visible) return ECORE_CALLBACK_PASS_ON;
|
||||||
if (cw->defer_show) cw->defer_show = 0;
|
_e_comp_win_real_hide(cw);
|
||||||
else _e_comp_win_real_hide(cw);
|
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue