pager gadget now autocorrects its orientation to vertical when trying to display a pager for a screen with NUMx1 vdesks with gadcon orient: vertical
this makes it look/work differently, but at least the gadget is usable SVN revision: 75207
This commit is contained in:
parent
15bd052693
commit
ea5cfeba4a
|
@ -48,6 +48,7 @@ struct _Pager
|
|||
unsigned char just_dragged : 1;
|
||||
Evas_Coord dnd_x, dnd_y;
|
||||
Pager_Desk *active_drop_pd;
|
||||
Eina_Bool invert : 1;
|
||||
};
|
||||
|
||||
struct _Pager_Desk
|
||||
|
@ -140,11 +141,11 @@ static void _pager_desk_cb_mouse_move(void *data, Evas *e __UNUSED__
|
|||
static void _pager_desk_cb_drag_finished(E_Drag *drag, int dropped);
|
||||
static void _pager_desk_cb_mouse_wheel(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info);
|
||||
static Eina_Bool _pager_popup_cb_timeout(void *data);
|
||||
static Pager *_pager_new(Evas *evas, E_Zone *zone);
|
||||
static Pager *_pager_new(Evas *evas, E_Zone *zone, E_Gadcon *gc);
|
||||
static void _pager_free(Pager *p);
|
||||
static void _pager_fill(Pager *p);
|
||||
static void _pager_fill(Pager *p, E_Gadcon *gc);
|
||||
static void _pager_empty(Pager *p);
|
||||
static Pager_Desk *_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos);
|
||||
static Pager_Desk *_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos, Eina_Bool invert);
|
||||
static void _pager_desk_free(Pager_Desk *pd);
|
||||
static Pager_Desk *_pager_desk_at_coord(Pager *p, Evas_Coord x, Evas_Coord y);
|
||||
static void _pager_desk_select(Pager_Desk *pd);
|
||||
|
@ -204,7 +205,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style)
|
|||
|
||||
inst = E_NEW(Instance, 1);
|
||||
|
||||
p = _pager_new(gc->evas, gc->zone);
|
||||
p = _pager_new(gc->evas, gc->zone, gc);
|
||||
p->inst = inst;
|
||||
inst->pager = p;
|
||||
o = p->o_table;
|
||||
|
@ -248,9 +249,14 @@ _gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient __UNUSED__)
|
|||
Instance *inst;
|
||||
|
||||
inst = gcc->data;
|
||||
e_gadcon_client_aspect_set(gcc,
|
||||
inst->pager->xnum * inst->pager->zone->w,
|
||||
inst->pager->ynum * inst->pager->zone->h);
|
||||
if (inst->pager->invert)
|
||||
e_gadcon_client_aspect_set(gcc,
|
||||
inst->pager->ynum * inst->pager->zone->w,
|
||||
inst->pager->xnum * inst->pager->zone->h);
|
||||
else
|
||||
e_gadcon_client_aspect_set(gcc,
|
||||
inst->pager->xnum * inst->pager->zone->w,
|
||||
inst->pager->ynum * inst->pager->zone->h);
|
||||
e_gadcon_client_min_size_set(gcc, 16, 16);
|
||||
}
|
||||
|
||||
|
@ -284,7 +290,7 @@ _gc_id_new(const E_Gadcon_Client_Class *client_class)
|
|||
}
|
||||
|
||||
static Pager *
|
||||
_pager_new(Evas *evas, E_Zone *zone)
|
||||
_pager_new(Evas *evas, E_Zone *zone, E_Gadcon *gc)
|
||||
{
|
||||
Pager *p;
|
||||
|
||||
|
@ -294,7 +300,7 @@ _pager_new(Evas *evas, E_Zone *zone)
|
|||
p->o_table = e_table_add(evas);
|
||||
e_table_homogenous_set(p->o_table, 1);
|
||||
p->zone = zone;
|
||||
_pager_fill(p);
|
||||
_pager_fill(p, gc);
|
||||
pagers = eina_list_append(pagers, p);
|
||||
return p;
|
||||
}
|
||||
|
@ -309,11 +315,38 @@ _pager_free(Pager *p)
|
|||
}
|
||||
|
||||
static void
|
||||
_pager_fill(Pager *p)
|
||||
_pager_fill(Pager *p, E_Gadcon *gc)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (gc)
|
||||
{
|
||||
switch (gc->orient)
|
||||
{
|
||||
|
||||
case E_GADCON_ORIENT_TOP:
|
||||
case E_GADCON_ORIENT_BOTTOM:
|
||||
case E_GADCON_ORIENT_CORNER_TL:
|
||||
case E_GADCON_ORIENT_CORNER_TR:
|
||||
case E_GADCON_ORIENT_CORNER_BL:
|
||||
case E_GADCON_ORIENT_CORNER_BR:
|
||||
case E_GADCON_ORIENT_HORIZ:
|
||||
p->invert = EINA_FALSE;
|
||||
break;
|
||||
case E_GADCON_ORIENT_FLOAT:
|
||||
case E_GADCON_ORIENT_VERT:
|
||||
case E_GADCON_ORIENT_LEFT:
|
||||
case E_GADCON_ORIENT_RIGHT:
|
||||
case E_GADCON_ORIENT_CORNER_LT:
|
||||
case E_GADCON_ORIENT_CORNER_RT:
|
||||
case E_GADCON_ORIENT_CORNER_LB:
|
||||
case E_GADCON_ORIENT_CORNER_RB:
|
||||
default:
|
||||
p->invert = EINA_TRUE;
|
||||
}
|
||||
}
|
||||
e_zone_desk_count_get(p->zone, &(p->xnum), &(p->ynum));
|
||||
if (p->ynum != 1) p->invert = EINA_FALSE;
|
||||
e_table_freeze(p->o_table);
|
||||
for (x = 0; x < p->xnum; x++)
|
||||
{
|
||||
|
@ -323,7 +356,7 @@ _pager_fill(Pager *p)
|
|||
E_Desk *desk;
|
||||
|
||||
desk = e_desk_at_xy_get(p->zone, x, y);
|
||||
pd = _pager_desk_new(p, desk, x, y);
|
||||
pd = _pager_desk_new(p, desk, x, y, p->invert);
|
||||
if (pd)
|
||||
{
|
||||
p->desks = eina_list_append(p->desks, pd);
|
||||
|
@ -371,7 +404,7 @@ _pager_desk_livethumb_setup(Pager_Desk *pd)
|
|||
}
|
||||
|
||||
static Pager_Desk *
|
||||
_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos)
|
||||
_pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos, Eina_Bool invert)
|
||||
{
|
||||
Pager_Desk *pd;
|
||||
Evas_Object *o, *evo;
|
||||
|
@ -408,7 +441,10 @@ _pager_desk_new(Pager *p, E_Desk *desk, int xpos, int ypos)
|
|||
}
|
||||
|
||||
edje_object_size_min_calc(o, &w, &h);
|
||||
e_table_pack(p->o_table, o, xpos, ypos, 1, 1);
|
||||
if (invert)
|
||||
e_table_pack(p->o_table, o, ypos, xpos, 1, 1);
|
||||
else
|
||||
e_table_pack(p->o_table, o, xpos, ypos, 1, 1);
|
||||
e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, w, h, -1, -1);
|
||||
|
||||
evo = (Evas_Object *)edje_object_part_object_get(o, "e.eventarea");
|
||||
|
@ -737,7 +773,7 @@ _pager_popup_new(E_Zone *zone, int keyaction)
|
|||
}
|
||||
e_popup_layer_set(pp->popup, 255);
|
||||
|
||||
pp->pager = _pager_new(pp->popup->evas, zone);
|
||||
pp->pager = _pager_new(pp->popup->evas, zone, NULL);
|
||||
pp->pager->popup = pp;
|
||||
pp->urgent = 0;
|
||||
|
||||
|
@ -1650,7 +1686,7 @@ _pager_cb_event_zone_desk_count_set(void *data __UNUSED__, int type __UNUSED__,
|
|||
EINA_LIST_FOREACH(pagers, l, p)
|
||||
{
|
||||
_pager_empty(p);
|
||||
_pager_fill(p);
|
||||
_pager_fill(p, p->inst->gcc->gadcon);
|
||||
if (p->inst) _gc_orient(p->inst->gcc, p->inst->gcc->gadcon->orient);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue