SOME of the pager is fixed. not all. it may leak and more - i'm in the middle
of fixing it up and so on. bear with me on this. it's less offensive now though :) SVN revision: 13775
This commit is contained in:
parent
6cf4a2cf77
commit
ecb51e8bc0
1
TODO
1
TODO
|
@ -65,6 +65,7 @@ Also look at all the .c files - they have their own localized TODO lists
|
|||
|
||||
These are in no particular order:
|
||||
|
||||
* add cmd-line options to fake xinerama screens
|
||||
* java apps seem to have a hard time if we dont pretend to be kwin (see e_hints.c) - get this stuff upstream to sun and get things fixed in java.
|
||||
* dropshadow is not optimal and has extreme edge-case bugs
|
||||
* gadget containers (shelves)
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
images {
|
||||
image: "e17_pager_desk.png" COMP;
|
||||
image: "e17_pager_desk_sel.png" COMP;
|
||||
image: "e17_pager_window.png" COMP;
|
||||
}
|
||||
|
||||
// e17_ibar_over_h.png
|
||||
// e17_ibar_bg_h.png
|
||||
|
||||
group {
|
||||
name: "modules/pager/main";
|
||||
parts {
|
||||
|
@ -36,10 +34,10 @@ group {
|
|||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
offset: 4 4;
|
||||
offset: 5 5;
|
||||
}
|
||||
rel2 {
|
||||
offset: -5 -5;
|
||||
offset: -6 -6;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
|
@ -65,27 +63,77 @@ group {
|
|||
name: "modules/pager/desk";
|
||||
parts {
|
||||
part {
|
||||
name: "background";
|
||||
name: "clip";
|
||||
mouse_events: 0;
|
||||
type: RECT;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
visible: 0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 0 0;
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -1 -1;
|
||||
offset: -3 -3;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
color: 255 255 255 128;
|
||||
}
|
||||
description {
|
||||
state: "active" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "sel";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
visible: 0;
|
||||
rel1 {
|
||||
offset: 2 2;
|
||||
}
|
||||
rel2 {
|
||||
offset: -3 -3;
|
||||
}
|
||||
image {
|
||||
normal: "e17_pager_desk_sel.png";
|
||||
}
|
||||
color: 255 255 255 0;
|
||||
}
|
||||
description {
|
||||
state: "active" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
visible: 1;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "overlay";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
offset: 1 1;
|
||||
}
|
||||
rel2 {
|
||||
offset: -2 -2;
|
||||
}
|
||||
image {
|
||||
normal: "e17_pager_desk.png";
|
||||
border: 2 2 2 2;
|
||||
}
|
||||
color: 255 255 255 64;
|
||||
}
|
||||
description {
|
||||
state: "active" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "items";
|
||||
mouse_events: 0;
|
||||
type: SWALLOW;
|
||||
clip_to: "clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
|
@ -97,24 +145,27 @@ group {
|
|||
color: 0 0 0 0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "overlay";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 1 1;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -2 -2;
|
||||
}
|
||||
image {
|
||||
normal: "e17_pager_desk.png";
|
||||
border: 2 2 2 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
programs {
|
||||
program {
|
||||
name: "go_active";
|
||||
signal: "active";
|
||||
source: "";
|
||||
action: STATE_SET "active" 0.0;
|
||||
transition: SINUSOIDAL 0.25;
|
||||
target: "clip";
|
||||
target: "sel";
|
||||
target: "overlay";
|
||||
}
|
||||
program {
|
||||
name: "go_passive";
|
||||
signal: "passive";
|
||||
source: "";
|
||||
action: STATE_SET "default" 0.0;
|
||||
transition: SINUSOIDAL 1.0;
|
||||
target: "clip";
|
||||
target: "sel";
|
||||
target: "overlay";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -245,6 +245,7 @@ e17_battery_090.png \
|
|||
e17_battery_100.png \
|
||||
e17_battery_ac.png \
|
||||
e17_pager_desk.png \
|
||||
e17_pager_desk_sel.png \
|
||||
e17_pager_window.png \
|
||||
e17_temperature_base.png \
|
||||
e17_temperature_mid.png \
|
||||
|
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 4.3 KiB |
Binary file not shown.
|
@ -20,7 +20,7 @@ static void _pager_face_menu_new(Pager_Face *face);
|
|||
static void _pager_face_enable(Pager_Face *face);
|
||||
static void _pager_face_disable(Pager_Face *face);
|
||||
static void _pager_face_zone_set(Pager_Face *face, E_Zone *zone);
|
||||
static void _pager_face_zone_leave(Pager_Face *face);
|
||||
static void _pager_face_zone_unset(Pager_Face *face);
|
||||
|
||||
static Pager_Desk *_pager_desk_new(Pager_Face *face, E_Desk *desk, int x, int y);
|
||||
static void _pager_desk_free(Pager_Desk *desk);
|
||||
|
@ -57,6 +57,15 @@ static void _pager_face_cb_menu_size_medium(void *data, E_Menu *m, E_Menu
|
|||
static void _pager_face_cb_menu_size_large(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _pager_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _pager_desk_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _pager_desk_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _pager_desk_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _pager_desk_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _pager_desk_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
|
||||
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 int _pager_count;
|
||||
|
||||
static E_Config_DD *_conf_edd;
|
||||
|
@ -271,24 +280,10 @@ _pager_face_new(E_Zone *zone)
|
|||
face = E_NEW(Pager_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
||||
/* store what evas we live in */
|
||||
face->evas = zone->container->bg_evas;
|
||||
|
||||
o = evas_object_rectangle_add(face->evas);
|
||||
face->base = o;
|
||||
evas_object_color_set(o, 128, 128, 128, 0);
|
||||
evas_object_pass_events_set(o, 0);
|
||||
evas_object_repeat_events_set(o, 0);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _pager_face_cb_mouse_down, face);
|
||||
evas_object_show(o);
|
||||
|
||||
o = edje_object_add(face->evas);
|
||||
face->screen = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"modules/pager/screen");
|
||||
evas_object_show(o);
|
||||
|
||||
|
||||
/* set up event handles for when windows change and desktops */
|
||||
face->ev_handler_border_resize =
|
||||
ecore_event_handler_add(E_EVENT_BORDER_RESIZE,
|
||||
_pager_face_cb_event_border_resize, face);
|
||||
|
@ -323,8 +318,41 @@ _pager_face_new(E_Zone *zone)
|
|||
ecore_event_handler_add(E_EVENT_DESK_SHOW,
|
||||
_pager_face_cb_event_desk_show, face);
|
||||
|
||||
/* the bg */
|
||||
o = edje_object_add(face->evas);
|
||||
face->pager_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"modules/pager/main");
|
||||
evas_object_show(o);
|
||||
|
||||
o = e_table_add(face->evas);
|
||||
face->table_object = o;
|
||||
e_table_homogenous_set(o, 1);
|
||||
edje_object_part_swallow(face->pager_object, "items", face->table_object);
|
||||
evas_object_show(o);
|
||||
|
||||
_pager_face_zone_set(face, zone);
|
||||
|
||||
#if 0
|
||||
o = evas_object_rectangle_add(face->evas);
|
||||
face->base = o;
|
||||
evas_object_color_set(o, 128, 128, 128, 0);
|
||||
evas_object_pass_events_set(o, 0);
|
||||
evas_object_repeat_events_set(o, 0);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _pager_face_cb_mouse_down, face);
|
||||
evas_object_show(o);
|
||||
|
||||
o = edje_object_add(face->evas);
|
||||
face->screen = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"modules/pager/main");
|
||||
evas_object_show(o);
|
||||
#endif
|
||||
|
||||
face->gmc = e_gadman_client_new(face->zone->container->gadman);
|
||||
e_gadman_client_domain_set(face->gmc, "module.pager", _pager_count++);
|
||||
e_gadman_client_zone_set(face->gmc, face->zone);
|
||||
|
@ -333,9 +361,10 @@ _pager_face_new(E_Zone *zone)
|
|||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
E_GADMAN_POLICY_VSIZE |
|
||||
E_GADMAN_POLICY_FIXED_ZONE);
|
||||
e_gadman_client_min_size_set(face->gmc, 8, 8);
|
||||
e_gadman_client_max_size_set(face->gmc, 256, 256);
|
||||
e_gadman_client_max_size_set(face->gmc, 400, 400);
|
||||
e_gadman_client_auto_size_set(face->gmc, 64, 64);
|
||||
e_gadman_client_align_set(face->gmc, 0.0, 1.0);
|
||||
e_gadman_client_resize(face->gmc, 80, 60);
|
||||
|
@ -348,12 +377,12 @@ _pager_face_new(E_Zone *zone)
|
|||
void
|
||||
_pager_face_free(Pager_Face *face)
|
||||
{
|
||||
if (face->base) evas_object_del(face->base);
|
||||
if (face->screen) evas_object_del(face->screen);
|
||||
if (face->pager_object) evas_object_del(face->pager_object);
|
||||
if (face->table_object) evas_object_del(face->table_object);
|
||||
e_gadman_client_save(face->gmc);
|
||||
e_object_del(E_OBJECT(face->gmc));
|
||||
|
||||
_pager_face_zone_leave(face);
|
||||
_pager_face_zone_unset(face);
|
||||
ecore_event_handler_del(face->ev_handler_border_resize);
|
||||
ecore_event_handler_del(face->ev_handler_border_move);
|
||||
ecore_event_handler_del(face->ev_handler_border_add);
|
||||
|
@ -462,25 +491,7 @@ _pager_face_enable(Pager_Face *face)
|
|||
Pager_Win *win;
|
||||
|
||||
face->conf->enabled = 1;
|
||||
|
||||
evas_object_show(face->base);
|
||||
evas_object_show(face->screen);
|
||||
for (desks = face->desks; desks; desks = desks->next)
|
||||
{
|
||||
desk = desks->data;
|
||||
evas_object_show(desk->obj);
|
||||
|
||||
for (wins = desk->wins; wins; wins = wins->next)
|
||||
{
|
||||
win = wins->data;
|
||||
if (!win->border->iconic)
|
||||
{
|
||||
evas_object_show(win->obj);
|
||||
if (win->icon)
|
||||
evas_object_show(win->icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
evas_object_show(face->pager_object);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
|
@ -492,25 +503,7 @@ _pager_face_disable(Pager_Face *face)
|
|||
Pager_Win *win;
|
||||
|
||||
face->conf->enabled = 0;
|
||||
|
||||
evas_object_hide(face->base);
|
||||
evas_object_hide(face->screen);
|
||||
for (desks = face->desks; desks; desks = desks->next)
|
||||
{
|
||||
desk = desks->data;
|
||||
evas_object_hide(desk->obj);
|
||||
|
||||
for (wins = desk->wins; wins; wins = wins->next)
|
||||
{
|
||||
win = wins->data;
|
||||
if (!win->border->iconic)
|
||||
{
|
||||
evas_object_hide(win->obj);
|
||||
if (win->icon)
|
||||
evas_object_hide(win->icon);
|
||||
}
|
||||
}
|
||||
}
|
||||
evas_object_hide(face->pager_object);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
|
@ -528,21 +521,21 @@ _pager_face_zone_set(Pager_Face *face, E_Zone *zone)
|
|||
face->ynum = desks_y;
|
||||
|
||||
for (x = 0; x < desks_x; x++)
|
||||
for (y = 0; y < desks_y; y++)
|
||||
{
|
||||
Pager_Desk *pd;
|
||||
E_Desk *desk;
|
||||
|
||||
desk = e_desk_at_xy_get(zone, x, y);
|
||||
pd = _pager_desk_new(face, desk, x, y);
|
||||
if (pd)
|
||||
face->desks = evas_list_append(face->desks, pd);
|
||||
}
|
||||
evas_object_resize(face->base, face->fw * face->xnum, face->fh * face->ynum);
|
||||
{
|
||||
for (y = 0; y < desks_y; y++)
|
||||
{
|
||||
Pager_Desk *pd;
|
||||
E_Desk *desk;
|
||||
|
||||
desk = e_desk_at_xy_get(zone, x, y);
|
||||
pd = _pager_desk_new(face, desk, x, y);
|
||||
if (pd) face->desks = evas_list_append(face->desks, pd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_face_zone_leave(Pager_Face *face)
|
||||
_pager_face_zone_unset(Pager_Face *face)
|
||||
{
|
||||
Evas_List *list;
|
||||
e_object_unref(E_OBJECT(face->zone));
|
||||
|
@ -570,32 +563,50 @@ _pager_desk_new(Pager_Face *face, E_Desk *desk, int xpos, int ypos)
|
|||
pd->xpos = xpos;
|
||||
pd->ypos = ypos;
|
||||
|
||||
if (desk == e_desk_current_get(desk->zone))
|
||||
{
|
||||
pd->current = 1;
|
||||
evas_object_move(face->screen,
|
||||
face->fx + (face->fw * pd->xpos),
|
||||
face->fy + (face->fh * pd->ypos));
|
||||
}
|
||||
|
||||
pd->desk = desk;
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
pd->face = face;
|
||||
|
||||
o = edje_object_add(face->evas);
|
||||
pd->obj = o;
|
||||
pd->desk_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"modules/pager/desk");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
|
||||
evas_object_resize(o, face->fw, face->fh);
|
||||
evas_object_move(o, face->fx + (pd->xpos * face->fw), face->fy + (pd->ypos * face->fh));
|
||||
e_table_pack(face->table_object, o, xpos, ypos, 1, 1);
|
||||
e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1);
|
||||
evas_object_show(o);
|
||||
evas_object_raise(face->screen);
|
||||
|
||||
o = evas_object_rectangle_add(face->evas);
|
||||
pd->event_object = o;
|
||||
evas_object_layer_set(o, 2);
|
||||
evas_object_repeat_events_set(o, 1);
|
||||
evas_object_color_set(o, 0, 0, 0, 0);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, _pager_desk_cb_mouse_in, pd);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_OUT, _pager_desk_cb_mouse_out, pd);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _pager_desk_cb_mouse_down, pd);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _pager_desk_cb_mouse_up, pd);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _pager_desk_cb_mouse_move, pd);
|
||||
evas_object_show(o);
|
||||
|
||||
o = e_layout_add(face->evas);
|
||||
pd->layout_object = o;
|
||||
evas_object_intercept_move_callback_add(o, _pager_desk_cb_intercept_move, pd);
|
||||
evas_object_intercept_resize_callback_add(o, _pager_desk_cb_intercept_resize, pd);
|
||||
|
||||
e_layout_virtual_size_set(o, desk->zone->w, desk->zone->h);
|
||||
edje_object_part_swallow(pd->desk_object, "items", pd->layout_object);
|
||||
evas_object_show(o);
|
||||
|
||||
if (desk == e_desk_current_get(desk->zone))
|
||||
{
|
||||
if (!pd->current)
|
||||
{
|
||||
pd->current = 1;
|
||||
edje_object_signal_emit(pd->desk_object, "active", "");
|
||||
}
|
||||
}
|
||||
|
||||
/* Add windows to the desk */
|
||||
for (wins = desk->zone->container->clients; wins; wins = wins->next)
|
||||
{
|
||||
win = wins->data;
|
||||
|
@ -616,7 +627,9 @@ _pager_desk_free(Pager_Desk *desk)
|
|||
{
|
||||
Evas_List *list;
|
||||
|
||||
if (desk->obj) evas_object_del(desk->obj);
|
||||
if (desk->desk_object) evas_object_del(desk->desk_object);
|
||||
if (desk->layout_object) evas_object_del(desk->layout_object);
|
||||
if (desk->event_object) evas_object_del(desk->event_object);
|
||||
e_object_unref(E_OBJECT(desk->desk));
|
||||
|
||||
for (list = desk->wins; list; list = list->next)
|
||||
|
@ -651,10 +664,9 @@ _pager_window_new(Pager_Desk *desk, E_Border *border)
|
|||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"modules/pager/window");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
if (visible)
|
||||
evas_object_show(o);
|
||||
evas_object_raise(desk->face->screen);
|
||||
e_layout_pack(desk->layout_object, win->obj);
|
||||
app = e_app_window_name_class_find(border->client.icccm.name,
|
||||
border->client.icccm.class);
|
||||
if (app)
|
||||
|
@ -684,49 +696,19 @@ _pager_window_free(Pager_Win *win)
|
|||
static void
|
||||
_pager_face_draw(Pager_Face *face)
|
||||
{
|
||||
Evas_List *desks, *wins;
|
||||
Pager_Desk *desk;
|
||||
Pager_Win *win;
|
||||
|
||||
evas_object_move(face->base, face->fx, face->fy);
|
||||
evas_object_resize(face->base, face->fw * face->xnum, face->fh * face->ynum);
|
||||
evas_object_resize(face->screen, face->fw, face->fh);
|
||||
|
||||
desks = face->desks;
|
||||
while (desks)
|
||||
{
|
||||
desk = desks->data;
|
||||
evas_object_resize(desk->obj, face->fw, face->fh);
|
||||
evas_object_move(desk->obj, face->fx + (face->fw * desk->xpos),
|
||||
face->fy + (face->fh * desk->ypos));
|
||||
if (desk->current)
|
||||
evas_object_move(face->screen, face->fx + (face->fw * desk->xpos),
|
||||
face->fy + (face->fh * desk->ypos));
|
||||
|
||||
wins = desk->wins;
|
||||
while (wins)
|
||||
{
|
||||
win = wins->data;
|
||||
_pager_window_move(face, win);
|
||||
|
||||
wins = wins->next;
|
||||
}
|
||||
desks = desks->next;
|
||||
}
|
||||
evas_object_move(face->pager_object, face->fx, face->fy);
|
||||
evas_object_resize(face->pager_object, face->fw, face->fh);
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_window_move(Pager_Face *face, Pager_Win *win)
|
||||
{
|
||||
double scalex, scaley;
|
||||
|
||||
scalex = (double)face->fw / (double)face->zone->w;
|
||||
scaley = (double)face->fh / (double)face->zone->h;
|
||||
|
||||
evas_object_resize(win->obj, win->border->w * scalex, win->border->h * scaley);
|
||||
evas_object_move(win->obj,
|
||||
face->fx + (win->desk->xpos * face->fw) + ((win->border->x - face->zone->x) * scalex),
|
||||
face->fy + (win->desk->ypos * face->fh) + ((win->border->y - face->zone->y) * scaley));
|
||||
e_layout_child_move(win->obj,
|
||||
win->border->x - win->desk->desk->zone->x,
|
||||
win->border->y - win->desk->desk->zone->y);
|
||||
e_layout_child_resize(win->obj,
|
||||
win->border->w,
|
||||
win->border->h);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -737,40 +719,6 @@ _pager_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf
|
|||
|
||||
face = data;
|
||||
ev = event_info;
|
||||
if (ev->button == 3)
|
||||
{
|
||||
e_menu_activate_mouse(face->menu, face->zone,
|
||||
ev->output.x, ev->output.y, 1, 1,
|
||||
E_MENU_POP_DIRECTION_DOWN);
|
||||
e_util_container_fake_mouse_up_all_later(face->zone->container);
|
||||
}
|
||||
else if (ev->button == 1)
|
||||
{
|
||||
Evas_Coord x, y;
|
||||
int xpos, ypos;
|
||||
Evas_List *list;
|
||||
Pager_Desk *desk;
|
||||
|
||||
evas_pointer_canvas_xy_get(face->evas, &x, &y);
|
||||
|
||||
xpos = (x - face->fx) / face->fw;
|
||||
ypos = (y - face->fy) / face->fh;
|
||||
|
||||
for (list = face->desks; list; list = list->next)
|
||||
{
|
||||
desk = list->data;
|
||||
|
||||
if ((desk->xpos == xpos) && (desk->ypos == ypos))
|
||||
{
|
||||
desk->current = 1;
|
||||
e_desk_show(desk->desk);
|
||||
}
|
||||
else
|
||||
{
|
||||
desk->current = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static Pager_Desk *
|
||||
|
@ -824,7 +772,6 @@ _pager_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change chan
|
|||
Pager_Win *win;
|
||||
Pager_Desk *desk;
|
||||
Evas_Coord x, y, w, h;
|
||||
Evas_Coord deskw, deskh;
|
||||
int xcount, ycount;
|
||||
Evas_List *desks, *wins;
|
||||
|
||||
|
@ -832,45 +779,21 @@ _pager_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change chan
|
|||
e_zone_desk_count_get(face->zone, &xcount, &ycount);
|
||||
|
||||
e_gadman_client_geometry_get(face->gmc, &x, &y, &w, &h);
|
||||
deskw = w / xcount;
|
||||
deskh = h / ycount;
|
||||
|
||||
face->fx = x;
|
||||
face->fy = y;
|
||||
face->fw = deskw;
|
||||
face->fh = deskh;
|
||||
face->fw = w;
|
||||
face->fh = h;
|
||||
switch (change)
|
||||
{
|
||||
case E_GADMAN_CHANGE_MOVE_RESIZE:
|
||||
_pager_face_draw(face);
|
||||
break;
|
||||
case E_GADMAN_CHANGE_RAISE:
|
||||
evas_object_raise(face->base);
|
||||
|
||||
desks = face->desks;
|
||||
while (desks)
|
||||
{
|
||||
desk = desks->data;
|
||||
evas_object_raise(desk->obj);
|
||||
|
||||
wins = desk->wins;
|
||||
while (wins)
|
||||
{
|
||||
win = wins->data;
|
||||
evas_object_raise(win->obj);
|
||||
|
||||
wins = wins->next;
|
||||
}
|
||||
desks = desks->next;
|
||||
}
|
||||
|
||||
evas_object_raise(face->screen);
|
||||
evas_object_raise(face->pager_object);
|
||||
break;
|
||||
case E_GADMAN_CHANGE_EDGE:
|
||||
break;
|
||||
case E_GADMAN_CHANGE_ZONE:
|
||||
/* FIXME
|
||||
* Must we do something here?
|
||||
*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -899,7 +822,6 @@ _pager_face_cb_event_border_resize(void *data, int type, void *event)
|
|||
if (win->border == ev->border)
|
||||
{
|
||||
_pager_window_move(face, win);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -930,7 +852,6 @@ _pager_face_cb_event_border_move(void *data, int type, void *event)
|
|||
if (win->border == ev->border)
|
||||
{
|
||||
_pager_window_move(face, win);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1066,7 +987,6 @@ _pager_face_cb_event_border_show(void *data, int type, void *event)
|
|||
}
|
||||
}
|
||||
}
|
||||
evas_object_raise(face->screen);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1195,8 +1115,8 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
|
|||
max_x = MAX(face->xnum, desks_x);
|
||||
max_y = MAX(face->ynum, desks_y);
|
||||
|
||||
w = face->fw * face->xnum;
|
||||
h = face->fh * face->ynum;
|
||||
w = face->fw;
|
||||
h = face->fh;
|
||||
|
||||
if ((face->conf->resize == PAGER_RESIZE_HORZ)
|
||||
&& (face->ynum != desks_y))
|
||||
|
@ -1204,7 +1124,7 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
|
|||
/* fw is kept, so the pager face width will change
|
||||
* if xnum changes */
|
||||
scale = (double)face->fw / (double)face->fh;
|
||||
face->fh = (face->fh * face->ynum) / desks_y;
|
||||
// face->fh = (face->fh * face->ynum) / desks_y;
|
||||
if (face->conf->scale)
|
||||
face->fw = face->fh * scale;
|
||||
}
|
||||
|
@ -1214,14 +1134,14 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
|
|||
/* fh is kept, so the pager face height will change
|
||||
* if ynum changes */
|
||||
scale = (double)face->fh / (double)face->fw;
|
||||
face->fw = (face->fw * face->xnum) / desks_x;
|
||||
// face->fw = (face->fw * face->xnum) / desks_x;
|
||||
if (face->conf->scale)
|
||||
face->fh = face->fw * scale;
|
||||
}
|
||||
else if (face->conf->resize == PAGER_RESIZE_NONE)
|
||||
{
|
||||
face->fw = (face->fw * face->xnum) / desks_x;
|
||||
face->fh = (face->fh * face->ynum) / desks_y;
|
||||
// face->fw = (face->fw * face->xnum) / desks_x;
|
||||
// face->fh = (face->fh * face->ynum) / desks_y;
|
||||
}
|
||||
|
||||
for (x = 0; x < max_x; x++)
|
||||
|
@ -1258,13 +1178,9 @@ _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
|
|||
}
|
||||
face->xnum = desks_x;
|
||||
face->ynum = desks_y;
|
||||
nw = face->fw * face->xnum;
|
||||
nh = face->fh * face->ynum;
|
||||
|
||||
if ((nw != w) || (nh != h))
|
||||
{
|
||||
e_gadman_client_resize(face->gmc, face->fw * face->xnum, face->fh * face->ynum);
|
||||
}
|
||||
if ((face->fw != w) || (face->fh != h))
|
||||
e_gadman_client_resize(face->gmc, face->fw, face->fh);
|
||||
else
|
||||
_pager_face_draw(face);
|
||||
return 1;
|
||||
|
@ -1289,13 +1205,20 @@ _pager_face_cb_event_desk_show(void *data, int type, void *event)
|
|||
desk = desks->data;
|
||||
if (desk->desk == ev->desk)
|
||||
{
|
||||
desk->current = 1;
|
||||
evas_object_move(face->screen,
|
||||
face->fx + (face->fw * desk->xpos),
|
||||
face->fy + (face->fh * desk->ypos));
|
||||
if (!desk->current)
|
||||
{
|
||||
desk->current = 1;
|
||||
edje_object_signal_emit(desk->desk_object, "active", "");
|
||||
}
|
||||
}
|
||||
else
|
||||
desk->current = 0;
|
||||
{
|
||||
if (desk->current)
|
||||
{
|
||||
desk->current = 0;
|
||||
edje_object_signal_emit(desk->desk_object, "passive", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -1375,9 +1298,7 @@ _pager_face_cb_menu_size_small(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
Pager_Face *face;
|
||||
|
||||
face = data;
|
||||
face->fw = 40;
|
||||
face->fh = 30;
|
||||
e_gadman_client_resize(face->gmc, face->fw * face->xnum, face->fh * face->ynum);
|
||||
e_gadman_client_resize(face->gmc, face->fw, face->fh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1386,9 +1307,7 @@ _pager_face_cb_menu_size_medium(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
Pager_Face *face;
|
||||
|
||||
face = data;
|
||||
face->fw = 80;
|
||||
face->fh = 60;
|
||||
e_gadman_client_resize(face->gmc, face->fw * face->xnum, face->fh * face->ynum);
|
||||
e_gadman_client_resize(face->gmc, 80, 60);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1397,9 +1316,7 @@ _pager_face_cb_menu_size_large(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
Pager_Face *face;
|
||||
|
||||
face = data;
|
||||
face->fw = 120;
|
||||
face->fh = 90;
|
||||
e_gadman_client_resize(face->gmc, face->fw * face->xnum, face->fh * face->ynum);
|
||||
e_gadman_client_resize(face->gmc, 128, 96);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1410,3 +1327,107 @@ _pager_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
face = data;
|
||||
e_gadman_mode_set(face->gmc->gadman, E_GADMAN_MODE_EDIT);
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_In *ev;
|
||||
Pager_Desk *desk;
|
||||
|
||||
ev = event_info;
|
||||
desk = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_Out *ev;
|
||||
Pager_Desk *desk;
|
||||
|
||||
ev = event_info;
|
||||
desk = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_Down *ev;
|
||||
Pager_Desk *desk;
|
||||
|
||||
ev = event_info;
|
||||
desk = data;
|
||||
if (ev->button == 3)
|
||||
{
|
||||
e_menu_activate_mouse(desk->face->menu, desk->face->zone,
|
||||
ev->output.x, ev->output.y, 1, 1,
|
||||
E_MENU_POP_DIRECTION_DOWN);
|
||||
e_util_container_fake_mouse_up_all_later(desk->face->zone->container);
|
||||
}
|
||||
else if (ev->button == 1)
|
||||
{
|
||||
Evas_List *l;
|
||||
Pager_Desk *desk2;
|
||||
|
||||
for (l = desk->face->desks; l; l = l->next)
|
||||
{
|
||||
desk2 = l->data;
|
||||
if (desk2 == desk)
|
||||
{
|
||||
e_desk_show(desk2->desk);
|
||||
if (!desk->current)
|
||||
{
|
||||
desk->current = 1;
|
||||
edje_object_signal_emit(desk2->desk_object, "active", "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (desk->current)
|
||||
{
|
||||
desk2->current = 0;
|
||||
edje_object_signal_emit(desk2->desk_object, "passive", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_Up *ev;
|
||||
Pager_Desk *desk;
|
||||
|
||||
ev = event_info;
|
||||
desk = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||
{
|
||||
Evas_Event_Mouse_Move *ev;
|
||||
Pager_Desk *desk;
|
||||
|
||||
ev = event_info;
|
||||
desk = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y)
|
||||
{
|
||||
Pager_Desk *desk;
|
||||
|
||||
desk = data;
|
||||
evas_object_move(o, x, y);
|
||||
evas_object_move(desk->event_object, x, y);
|
||||
}
|
||||
|
||||
static void
|
||||
_pager_desk_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
Pager_Desk *desk;
|
||||
|
||||
desk = data;
|
||||
evas_object_resize(o, w, h);
|
||||
evas_object_resize(desk->event_object, w, h);
|
||||
}
|
||||
|
|
|
@ -42,15 +42,17 @@ struct _Pager
|
|||
|
||||
struct _Pager_Face
|
||||
{
|
||||
E_Zone *zone;
|
||||
Evas_List *desks;
|
||||
|
||||
E_Menu *menu;
|
||||
Evas *evas;
|
||||
Evas_Object *base, *screen;
|
||||
|
||||
Evas_Coord fx, fy, fw, fh;
|
||||
E_Gadman_Client *gmc;
|
||||
E_Menu *menu;
|
||||
Evas *evas;
|
||||
|
||||
E_Zone *zone;
|
||||
Evas_List *desks;
|
||||
|
||||
Evas_Object *pager_object;
|
||||
Evas_Object *table_object;
|
||||
|
||||
Evas_Coord fx, fy, fw, fh;
|
||||
|
||||
/* Current nr. of desktops */
|
||||
int xnum, ynum;
|
||||
|
@ -76,7 +78,9 @@ struct _Pager_Desk
|
|||
Pager_Face *face;
|
||||
Evas_List *wins;
|
||||
|
||||
Evas_Object *obj;
|
||||
Evas_Object *desk_object;
|
||||
Evas_Object *layout_object;
|
||||
Evas_Object *event_object;
|
||||
int xpos, ypos;
|
||||
|
||||
int current : 1;
|
||||
|
|
Loading…
Reference in New Issue