e-modules/engage: fix 'show current desk' mode (hope so). leak-- in label set
SVN revision: 58350
This commit is contained in:
parent
1aa2f196be
commit
3cf509f063
|
@ -1489,11 +1489,16 @@ _ngi_redraw(Ng *ng)
|
|||
else
|
||||
evas_object_hide(box->separator);
|
||||
|
||||
pos = 0;
|
||||
|
||||
EINA_LIST_FOREACH (box->items, l, it)
|
||||
{
|
||||
double size;
|
||||
|
||||
if (!l->prev)
|
||||
if (it->scale == 0.0)
|
||||
continue;
|
||||
|
||||
if (pos == 0)
|
||||
{
|
||||
_ngi_zoom_function(ng, it->pos - ng->pos, &pos);
|
||||
pos = (double)it->pos + pos;
|
||||
|
|
106
src/ng_taskbar.c
106
src/ng_taskbar.c
|
@ -114,9 +114,12 @@ ngi_taskbar_remove(Ngi_Box *box)
|
|||
static int
|
||||
_border_check(Ngi_Box *box, E_Border *bd)
|
||||
{
|
||||
if (box->cfg->taskbar_show_desktop && bd->desk != e_desk_current_get(box->ng->zone))
|
||||
return 0;
|
||||
/* if (box->cfg->taskbar_show_desktop && bd->desk != e_desk_current_get(box->ng->zone))
|
||||
* return 0; */
|
||||
|
||||
if (box->ng->zone != bd->zone)
|
||||
return 0;
|
||||
|
||||
if (box->cfg->taskbar_show_iconified == 0 && bd->iconic)
|
||||
return 0;
|
||||
|
||||
|
@ -377,48 +380,33 @@ _cb_border_event(void *data, int type, void *event)
|
|||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
/* FIXME set it->visible to skip icons */
|
||||
static Eina_Bool
|
||||
_cb_desk_show(void *data, int type, void *event)
|
||||
{
|
||||
/* E_Event_Desk_Show *ev = (E_Event_Desk_Show*) event; */
|
||||
Ng *ng;
|
||||
Ngi_Box *box;
|
||||
E_Event_Desk_Show *ev = event;
|
||||
Ngi_Box *box = data;
|
||||
Ngi_Item_Taskbar *it;
|
||||
Eina_List *l, *ll, *lll;
|
||||
E_Desk *desk;
|
||||
int changed = 0;
|
||||
Eina_List *l;
|
||||
|
||||
EINA_LIST_FOREACH (ngi_config->instances, l, ng)
|
||||
{
|
||||
EINA_LIST_FOREACH (ng->boxes, ll, box)
|
||||
{
|
||||
if ((box->cfg->type != taskbar) ||
|
||||
(!box->cfg->taskbar_show_desktop))
|
||||
continue;
|
||||
EINA_LIST_FOREACH(box->items, l, it)
|
||||
{
|
||||
if ((it->border->desk == ev->desk) || (it->border->sticky))
|
||||
{
|
||||
evas_object_show(it->base.obj);
|
||||
evas_object_show(it->base.over);
|
||||
it->base.scale = 1.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
evas_object_hide(it->base.obj);
|
||||
evas_object_hide(it->base.over);
|
||||
it->base.scale = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
ngi_thaw(box->ng);
|
||||
|
||||
desk = e_desk_current_get(ng->zone);
|
||||
|
||||
EINA_LIST_FOREACH (box->items, lll, it)
|
||||
{
|
||||
if (it->border->desk == desk)
|
||||
{
|
||||
changed = 1;
|
||||
it->base.scale = 1.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
changed = 1;
|
||||
it->base.scale = 0.0;
|
||||
}
|
||||
}
|
||||
if (changed)
|
||||
ngi_thaw(ng);
|
||||
|
||||
changed = 0;
|
||||
}
|
||||
}
|
||||
return EINA_TRUE;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
/* *************************** TASKBAR ITEM *************************** */
|
||||
|
@ -427,6 +415,7 @@ static void
|
|||
_item_new(Ngi_Box *box, E_Border *bd)
|
||||
{
|
||||
Ngi_Item_Taskbar *it, *l_it = NULL, *ll_it = NULL;
|
||||
Ngi_Item *item;
|
||||
Eina_List *l;
|
||||
|
||||
if (!_border_check(box, bd))
|
||||
|
@ -437,7 +426,8 @@ _item_new(Ngi_Box *box, E_Border *bd)
|
|||
|
||||
it = E_NEW(Ngi_Item_Taskbar, 1);
|
||||
it->base.box = box;
|
||||
ngi_item_init_defaults((Ngi_Item*)it);
|
||||
item = (Ngi_Item*) it;
|
||||
ngi_item_init_defaults(item);
|
||||
|
||||
e_object_ref(E_OBJECT(bd));
|
||||
it->border = bd;
|
||||
|
@ -491,14 +481,24 @@ _item_new(Ngi_Box *box, E_Border *bd)
|
|||
box->items = eina_list_prepend(box->items, it);
|
||||
}
|
||||
|
||||
ngi_item_show((Ngi_Item*)it, 0);
|
||||
|
||||
if ((box->cfg->taskbar_show_desktop) &&
|
||||
(bd->desk != e_desk_current_get(box->ng->zone)) &&
|
||||
(!bd->sticky))
|
||||
{
|
||||
ngi_item_show(item, 1);
|
||||
item->scale = 0.0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ngi_item_show(item, 0);
|
||||
}
|
||||
|
||||
if (bd->iconic)
|
||||
ngi_item_signal_emit((Ngi_Item*)it, "e,state,taskbar,iconic,on");
|
||||
ngi_item_signal_emit(item, "e,state,taskbar,iconic,on");
|
||||
|
||||
it->urgent = bd->client.icccm.urgent;
|
||||
if (it->urgent)
|
||||
ngi_item_signal_emit((Ngi_Item*)it, "e,state,taskbar,urgent,on");
|
||||
ngi_item_signal_emit(item, "e,state,taskbar,urgent,on");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -507,7 +507,7 @@ _item_cb_free(Ngi_Item *item)
|
|||
Ngi_Item_Taskbar *it = (Ngi_Item_Taskbar *) item;
|
||||
|
||||
if (it->urgent)
|
||||
ngi_bar_lock(((Ngi_Item*)it)->box->ng, 0);
|
||||
ngi_bar_lock(item->box->ng, 0);
|
||||
|
||||
if (it->border)
|
||||
e_object_unref(E_OBJECT(it->border));
|
||||
|
@ -558,11 +558,9 @@ _border_icon_add(E_Border *bd, Evas *evas)
|
|||
{
|
||||
evas_object_del(o);
|
||||
o = e_icon_add(evas);
|
||||
double tmp = e_scale;
|
||||
e_scale = 3.0;
|
||||
e_icon_scale_size_set(o, 128);
|
||||
if (!e_util_icon_theme_set(o, bd->internal_icon))
|
||||
e_util_icon_theme_set(o, "enlightenment");
|
||||
e_scale = tmp;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -687,17 +685,19 @@ _item_set_label(Ngi_Item_Taskbar *it)
|
|||
{
|
||||
char *abbv;
|
||||
const char *left, *right;
|
||||
|
||||
abbv = (char *)calloc(E_CLIENTLIST_MAX_CAPTION_LEN + 4, sizeof(char));
|
||||
|
||||
abbv = E_NEW(char, E_CLIENTLIST_MAX_CAPTION_LEN + 4);
|
||||
left = title;
|
||||
right = title + (strlen(title) - (max_len / 2));
|
||||
|
||||
|
||||
strncpy(abbv, left, max_len / 2);
|
||||
strncat(abbv, "...", 3);
|
||||
strncat(abbv, right, max_len / 2);
|
||||
|
||||
ngi_item_label_set((Ngi_Item*)it, abbv);
|
||||
return;
|
||||
|
||||
ngi_item_label_set((Ngi_Item*)it, abbv);
|
||||
E_FREE(abbv);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ngi_item_label_set((Ngi_Item*)it, title);
|
||||
|
|
Loading…
Reference in New Issue