forked from enlightenment/enlightenment
The pager shows which desk a drop is over.
SVN revision: 14792
This commit is contained in:
parent
66ed370104
commit
418d943044
|
@ -62,6 +62,12 @@ group {
|
||||||
|
|
||||||
group {
|
group {
|
||||||
name: "modules/pager/desk";
|
name: "modules/pager/desk";
|
||||||
|
data {
|
||||||
|
item: "drag" "0";
|
||||||
|
}
|
||||||
|
script {
|
||||||
|
public active;
|
||||||
|
}
|
||||||
parts {
|
parts {
|
||||||
part {
|
part {
|
||||||
name: "clip";
|
name: "clip";
|
||||||
|
@ -133,6 +139,11 @@ group {
|
||||||
inherit: "default" 0.0;
|
inherit: "default" 0.0;
|
||||||
color: 255 255 255 255;
|
color: 255 255 255 255;
|
||||||
}
|
}
|
||||||
|
description {
|
||||||
|
state: "drag" 0.0;
|
||||||
|
inherit: "default" 0.0;
|
||||||
|
color: 255 255 255 164;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
part {
|
part {
|
||||||
name: "items";
|
name: "items";
|
||||||
|
@ -382,6 +393,48 @@ group {
|
||||||
target: "sel";
|
target: "sel";
|
||||||
target: "overlay";
|
target: "overlay";
|
||||||
}
|
}
|
||||||
|
program {
|
||||||
|
name: "set_active";
|
||||||
|
signal: "active";
|
||||||
|
source: "";
|
||||||
|
script {
|
||||||
|
set_int(active, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "set_passive";
|
||||||
|
signal: "passive";
|
||||||
|
source: "";
|
||||||
|
script {
|
||||||
|
set_int(active, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "drag_in";
|
||||||
|
signal: "drag";
|
||||||
|
source: "in";
|
||||||
|
action: STATE_SET "drag" 0.0;
|
||||||
|
target: "overlay";
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "drag_out";
|
||||||
|
signal: "drag";
|
||||||
|
source: "out";
|
||||||
|
script {
|
||||||
|
if (get_int(active) == 1)
|
||||||
|
set_state(PART:"overlay", "active", 0.0);
|
||||||
|
else
|
||||||
|
set_state(PART:"overlay", "default", 0.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
program {
|
||||||
|
name: "init";
|
||||||
|
signal: "load";
|
||||||
|
source: "";
|
||||||
|
script {
|
||||||
|
set_int(active, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,10 @@ static void _pager_desk_cb_mouse_move(void *data, Evas *e, Evas_Object *o
|
||||||
static void _pager_desk_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
|
static void _pager_desk_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
|
||||||
static void _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
|
static void _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
|
||||||
|
|
||||||
static void _pager_cb_drop(void *data, const char *type, void *drop);
|
static void _pager_face_cb_enter(void *data, const char *type, void *drop);
|
||||||
|
static void _pager_face_cb_move(void *data, const char *type, void *drop);
|
||||||
|
static void _pager_face_cb_leave(void *data, const char *type, void *drop);
|
||||||
|
static void _pager_face_cb_drop(void *data, const char *type, void *drop);
|
||||||
|
|
||||||
static int _pager_count;
|
static int _pager_count;
|
||||||
|
|
||||||
|
@ -274,6 +277,7 @@ _pager_face_new(E_Zone *zone)
|
||||||
{
|
{
|
||||||
Pager_Face *face;
|
Pager_Face *face;
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
face = E_NEW(Pager_Face, 1);
|
face = E_NEW(Pager_Face, 1);
|
||||||
if (!face) return NULL;
|
if (!face) return NULL;
|
||||||
|
@ -341,8 +345,17 @@ _pager_face_new(E_Zone *zone)
|
||||||
edje_object_part_swallow(face->pager_object, "items", face->table_object);
|
edje_object_part_swallow(face->pager_object, "items", face->table_object);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
|
|
||||||
|
evas_object_resize(face->pager_object, 1000, 1000);
|
||||||
|
edje_object_calc_force(face->pager_object);
|
||||||
|
edje_object_part_geometry_get(face->pager_object, "items", &x, &y, &w, &h);
|
||||||
|
face->inset.l = x;
|
||||||
|
face->inset.r = 1000 - (x + w);
|
||||||
|
face->inset.t = y;
|
||||||
|
face->inset.b = 1000 - (y + h);
|
||||||
|
|
||||||
face->drop_handler = e_drop_handler_add(face,
|
face->drop_handler = e_drop_handler_add(face,
|
||||||
NULL, NULL, NULL, _pager_cb_drop,
|
_pager_face_cb_enter, _pager_face_cb_move,
|
||||||
|
_pager_face_cb_leave, _pager_face_cb_drop,
|
||||||
"enlightenment/border",
|
"enlightenment/border",
|
||||||
face->fx, face->fy, face->fw, face->fh);
|
face->fx, face->fy, face->fw, face->fh);
|
||||||
|
|
||||||
|
@ -1367,12 +1380,10 @@ _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_C
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_pager_cb_drop(void *data, const char *type, void *event_info)
|
_pager_face_cb_enter(void *data, const char *type, void *event_info)
|
||||||
{
|
{
|
||||||
E_Event_Dnd_Drop *ev;
|
E_Event_Dnd_Enter *ev;
|
||||||
Pager_Face *face;
|
Pager_Face *face;
|
||||||
E_Desk *desk;
|
|
||||||
E_Border *bd;
|
|
||||||
int x, y;
|
int x, y;
|
||||||
double w, h;
|
double w, h;
|
||||||
|
|
||||||
|
@ -1385,6 +1396,73 @@ _pager_cb_drop(void *data, const char *type, void *event_info)
|
||||||
|
|
||||||
x = (ev->x - face->fx) / w;
|
x = (ev->x - face->fx) / w;
|
||||||
y = (ev->y - face->fy) / h;
|
y = (ev->y - face->fy) / h;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_pager_face_cb_move(void *data, const char *type, void *event_info)
|
||||||
|
{
|
||||||
|
E_Event_Dnd_Move *ev;
|
||||||
|
Pager_Face *face;
|
||||||
|
Pager_Desk *pd;
|
||||||
|
int x, y;
|
||||||
|
double w, h;
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
ev = event_info;
|
||||||
|
face = data;
|
||||||
|
|
||||||
|
w = (face->fw - (face->inset.l + face->inset.r)) / (double) face->xnum;
|
||||||
|
h = (face->fh - (face->inset.t + face->inset.b)) / (double) face->ynum;
|
||||||
|
|
||||||
|
x = (ev->x - (face->fx + face->inset.l)) / w;
|
||||||
|
y = (ev->y - (face->fy + face->inset.t)) / h;
|
||||||
|
|
||||||
|
for (l = face->desks; l; l = l->next)
|
||||||
|
{
|
||||||
|
pd = l->data;
|
||||||
|
if ((pd->xpos == x) && (pd->ypos == y))
|
||||||
|
edje_object_signal_emit(pd->desk_object, "drag", "in");
|
||||||
|
else
|
||||||
|
edje_object_signal_emit(pd->desk_object, "drag", "out");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_pager_face_cb_leave(void *data, const char *type, void *event_info)
|
||||||
|
{
|
||||||
|
E_Event_Dnd_Leave *ev;
|
||||||
|
Pager_Face *face;
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
ev = event_info;
|
||||||
|
face = data;
|
||||||
|
|
||||||
|
for (l = face->desks; l; l = l->next)
|
||||||
|
{
|
||||||
|
Pager_Desk *pd;
|
||||||
|
pd = l->data;
|
||||||
|
edje_object_signal_emit(pd->desk_object, "drag", "out");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_pager_face_cb_drop(void *data, const char *type, void *event_info)
|
||||||
|
{
|
||||||
|
E_Event_Dnd_Drop *ev;
|
||||||
|
Pager_Face *face;
|
||||||
|
E_Desk *desk;
|
||||||
|
E_Border *bd;
|
||||||
|
int x, y;
|
||||||
|
double w, h;
|
||||||
|
|
||||||
|
ev = event_info;
|
||||||
|
face = data;
|
||||||
|
|
||||||
|
w = (face->fw - (face->inset.l + face->inset.r)) / (double) face->xnum;
|
||||||
|
h = (face->fh - (face->inset.t + face->inset.b)) / (double) face->ynum;
|
||||||
|
|
||||||
|
x = (ev->x - (face->fx + face->inset.l)) / w;
|
||||||
|
y = (ev->y - (face->fy + face->inset.t)) / h;
|
||||||
|
|
||||||
desk = e_desk_at_xy_get(face->zone, x, y);
|
desk = e_desk_at_xy_get(face->zone, x, y);
|
||||||
bd = ev->data;
|
bd = ev->data;
|
||||||
|
|
|
@ -53,6 +53,9 @@ struct _Pager_Face
|
||||||
Evas_Object *table_object;
|
Evas_Object *table_object;
|
||||||
|
|
||||||
Evas_Coord fx, fy, fw, fh;
|
Evas_Coord fx, fy, fw, fh;
|
||||||
|
struct {
|
||||||
|
Evas_Coord l, r, t, b;
|
||||||
|
} inset;
|
||||||
|
|
||||||
/* Current nr. of desktops */
|
/* Current nr. of desktops */
|
||||||
int xnum, ynum;
|
int xnum, ynum;
|
||||||
|
@ -87,6 +90,7 @@ struct _Pager_Desk
|
||||||
Evas_Object *desk_object;
|
Evas_Object *desk_object;
|
||||||
Evas_Object *layout_object;
|
Evas_Object *layout_object;
|
||||||
Evas_Object *event_object;
|
Evas_Object *event_object;
|
||||||
|
|
||||||
int xpos, ypos;
|
int xpos, ypos;
|
||||||
|
|
||||||
int current : 1;
|
int current : 1;
|
||||||
|
|
Loading…
Reference in New Issue