e-modules/engage: fix overlap-autohide, check if window is iconic
SVN revision: 59026
This commit is contained in:
parent
a142fe18b7
commit
4bd43a6392
102
src/e_mod_main.c
102
src/e_mod_main.c
|
@ -1248,6 +1248,8 @@ ngi_reposition(Ng *ng)
|
||||||
int cnt = 0, end;
|
int cnt = 0, end;
|
||||||
int width = ng->horizontal ? ng->win->popup->w : ng->win->popup->h;
|
int width = ng->horizontal ? ng->win->popup->w : ng->win->popup->h;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
ng->w = 0;
|
ng->w = 0;
|
||||||
|
|
||||||
EINA_LIST_FOREACH (ng->boxes, l, box)
|
EINA_LIST_FOREACH (ng->boxes, l, box)
|
||||||
|
@ -1275,12 +1277,11 @@ ngi_reposition(Ng *ng)
|
||||||
|
|
||||||
end = ng->start - SIDE_OFFSET + disp;
|
end = ng->start - SIDE_OFFSET + disp;
|
||||||
|
|
||||||
|
if ((end > 0) || (size <= 0))
|
||||||
|
break;
|
||||||
|
|
||||||
/* shrink bar when it becomes larger than screen height/width */
|
/* shrink bar when it becomes larger than screen height/width */
|
||||||
if (end < 0 && size > 1)
|
ng->size = size = size - 1;
|
||||||
{
|
|
||||||
ng->size -= 1;
|
|
||||||
ngi_reposition(ng);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cnt = 0;
|
cnt = 0;
|
||||||
|
@ -1639,6 +1640,12 @@ _ngi_win_border_intersects(Ng *ng)
|
||||||
if ((bd->desk != desk) && (!bd->sticky))
|
if ((bd->desk != desk) && (!bd->sticky))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (bd->iconic)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!bd->visible)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (E_INTERSECTS(x, y, w, h, bd->x, bd->y, bd->w, bd->h))
|
if (E_INTERSECTS(x, y, w, h, bd->x, bd->y, bd->w, bd->h))
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1646,46 +1653,13 @@ _ngi_win_border_intersects(Ng *ng)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static void
|
||||||
_ngi_win_cb_desk_show(void *data, int type, void *event)
|
_ngi_win_autohide_check(Ng *ng, E_Desk *desk)
|
||||||
{
|
{
|
||||||
E_Event_Desk_Show *ev = event;
|
|
||||||
Ng *ng = data;
|
|
||||||
int fullscreen;
|
|
||||||
|
|
||||||
if (ng->cfg->stacking == below_fullscreen)
|
|
||||||
{
|
|
||||||
fullscreen = ev->desk->fullscreen_borders;
|
|
||||||
|
|
||||||
if (fullscreen)
|
|
||||||
e_popup_hide(ng->win->popup);
|
|
||||||
else
|
|
||||||
e_popup_show(ng->win->popup);
|
|
||||||
}
|
|
||||||
else if (ng->cfg->autohide == AUTOHIDE_FULLSCREEN)
|
|
||||||
{
|
|
||||||
fullscreen = ev->desk->fullscreen_borders;
|
|
||||||
|
|
||||||
if (ng->hide != fullscreen)
|
|
||||||
ngi_animate(ng);
|
|
||||||
|
|
||||||
ng->hide = fullscreen;
|
|
||||||
}
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ngi_win_cb_border_event(void *data, int type, void *event)
|
|
||||||
{
|
|
||||||
E_Event_Border_Property *ev = event;
|
|
||||||
Ng *ng = data;
|
|
||||||
E_Desk *desk;
|
|
||||||
int hide;
|
int hide;
|
||||||
|
|
||||||
if (ng->cfg->stacking == below_fullscreen)
|
if (ng->cfg->stacking == below_fullscreen)
|
||||||
{
|
{
|
||||||
desk = e_desk_current_get(ng->zone);
|
|
||||||
|
|
||||||
hide = desk->fullscreen_borders;
|
hide = desk->fullscreen_borders;
|
||||||
|
|
||||||
if (hide)
|
if (hide)
|
||||||
|
@ -1696,8 +1670,6 @@ _ngi_win_cb_border_event(void *data, int type, void *event)
|
||||||
|
|
||||||
if (ng->cfg->autohide == AUTOHIDE_FULLSCREEN)
|
if (ng->cfg->autohide == AUTOHIDE_FULLSCREEN)
|
||||||
{
|
{
|
||||||
desk = e_desk_current_get(ng->zone);
|
|
||||||
|
|
||||||
hide = desk->fullscreen_borders;
|
hide = desk->fullscreen_borders;
|
||||||
|
|
||||||
if (ng->hide != hide)
|
if (ng->hide != hide)
|
||||||
|
@ -1707,8 +1679,6 @@ _ngi_win_cb_border_event(void *data, int type, void *event)
|
||||||
}
|
}
|
||||||
else if (ng->cfg->autohide == AUTOHIDE_OVERLAP)
|
else if (ng->cfg->autohide == AUTOHIDE_OVERLAP)
|
||||||
{
|
{
|
||||||
desk = e_desk_current_get(ng->zone);
|
|
||||||
|
|
||||||
hide = _ngi_win_border_intersects(ng);
|
hide = _ngi_win_border_intersects(ng);
|
||||||
|
|
||||||
if (ng->hide != hide)
|
if (ng->hide != hide)
|
||||||
|
@ -1716,6 +1686,30 @@ _ngi_win_cb_border_event(void *data, int type, void *event)
|
||||||
|
|
||||||
ng->hide = hide;
|
ng->hide = hide;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_ngi_win_cb_desk_show(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
E_Event_Desk_Show *ev = event;
|
||||||
|
Ng *ng = data;
|
||||||
|
|
||||||
|
_ngi_win_autohide_check(ng, ev->desk);
|
||||||
|
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_ngi_win_cb_border_event(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
E_Event_Border_Property *ev = event;
|
||||||
|
Ng *ng = data;
|
||||||
|
E_Desk *desk;
|
||||||
|
|
||||||
|
desk = e_desk_current_get(ng->zone);
|
||||||
|
|
||||||
|
if ((ev->border->desk == desk) || (ev->border->sticky))
|
||||||
|
_ngi_win_autohide_check(ng, desk);
|
||||||
|
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
@ -1725,18 +1719,23 @@ _ngi_win_cb_border_event(void *data, int type, void *event)
|
||||||
|
|
||||||
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "engage" };
|
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "engage" };
|
||||||
|
|
||||||
static int
|
static Eina_Bool
|
||||||
_ngi_init_timer_cb(void *data)
|
_ngi_init_timer_cb(void *data)
|
||||||
{
|
{
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Config_Item *ci;
|
Config_Item *ci;
|
||||||
|
|
||||||
|
/* if (ecore_x_screen_is_composited(0)) */
|
||||||
|
ngi_config->use_composite = 1;
|
||||||
|
/* else
|
||||||
|
* ngi_config->use_composite = 0; */
|
||||||
|
|
||||||
EINA_LIST_FOREACH (ngi_config->items, l, ci)
|
EINA_LIST_FOREACH (ngi_config->items, l, ci)
|
||||||
ngi_new(ci);
|
ngi_new(ci);
|
||||||
|
|
||||||
initialized = 1;
|
initialized = 1;
|
||||||
|
|
||||||
return 0;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* menu item callback(s) */
|
/* menu item callback(s) */
|
||||||
|
@ -1953,13 +1952,11 @@ e_modapi_init(E_Module *m)
|
||||||
ngi_taskbar_init();
|
ngi_taskbar_init();
|
||||||
ngi_gadcon_init();
|
ngi_gadcon_init();
|
||||||
|
|
||||||
if (ecore_x_screen_is_composited(0))
|
|
||||||
ngi_config->use_composite = 1;
|
|
||||||
else
|
|
||||||
ngi_config->use_composite = 0;
|
|
||||||
|
|
||||||
e_module_delayed_set(m, 1);
|
e_module_delayed_set(m, 1);
|
||||||
_ngi_init_timer_cb(NULL);
|
|
||||||
|
ecore_timer_add(1.0, _ngi_init_timer_cb, NULL);
|
||||||
|
|
||||||
|
/* _ngi_init_timer_cb(NULL); */
|
||||||
|
|
||||||
/* maug = e_int_menus_menu_augmentation_add
|
/* maug = e_int_menus_menu_augmentation_add
|
||||||
* ("config/1", _e_mod_menu_add, NULL, NULL, NULL); */
|
* ("config/1", _e_mod_menu_add, NULL, NULL, NULL); */
|
||||||
|
@ -2009,5 +2006,6 @@ EAPI int
|
||||||
e_modapi_save(E_Module *m)
|
e_modapi_save(E_Module *m)
|
||||||
{
|
{
|
||||||
e_config_domain_save("module.engage", ngi_conf_edd, ngi_config);
|
e_config_domain_save("module.engage", ngi_conf_edd, ngi_config);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue