forked from enlightenment/enlightenment
remove contact module
this is dead. dead code does not belong in master. see devs/discomfitor/e_module-contact.git
This commit is contained in:
parent
471dcb24cb
commit
88af43001e
|
@ -960,7 +960,6 @@ AC_E_OPTIONAL_MODULE([tiling], true)
|
|||
#AC_E_OPTIONAL_MODULE([access], false, $ecore_x)
|
||||
AC_E_OPTIONAL_MODULE([music_control], true, [CHECK_MODULE_MUSIC_CONTROL])
|
||||
AC_E_OPTIONAL_MODULE([packagekit], true)
|
||||
AC_E_OPTIONAL_MODULE([contact], false)
|
||||
AC_E_OPTIONAL_MODULE([wl_desktop_shell], $have_wayland, [CHECK_MODULE_WL_DESKTOP_SHELL])
|
||||
AC_E_OPTIONAL_MODULE([wl_x11], $have_wayland, $wl_x11)
|
||||
AC_E_OPTIONAL_MODULE([wl_fb], $have_wayland, [CHECK_MODULE_WL_FB])
|
||||
|
@ -1094,7 +1093,6 @@ src/modules/xkbswitch/module.desktop
|
|||
src/modules/tiling/module.desktop
|
||||
src/modules/music-control/module.desktop
|
||||
src/modules/packagekit/module.desktop
|
||||
src/modules/contact/module.desktop
|
||||
src/modules/wl_desktop_shell/module.desktop
|
||||
src/modules/wl_screenshot/module.desktop
|
||||
data/xsession/enlightenment.desktop
|
||||
|
|
|
@ -119,8 +119,6 @@ include src/modules/Makefile_music_control.mk
|
|||
|
||||
include src/modules/Makefile_packagekit.mk
|
||||
|
||||
include src/modules/Makefile_contact.mk
|
||||
|
||||
include src/modules/Makefile_wl_drm.mk
|
||||
|
||||
include src/modules/Makefile_wl_desktop_shell.mk
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
EXTRA_DIST += src/modules/contact/module.desktop.in \
|
||||
src/modules/contact/e-module-contact.edj
|
||||
if USE_MODULE_CONTACT
|
||||
contactdir = $(MDIR)/contact
|
||||
contact_DATA = src/modules/contact/e-module-contact.edj \
|
||||
src/modules/contact/module.desktop
|
||||
|
||||
contactpkgdir = $(MDIR)/contact/$(MODULE_ARCH)
|
||||
contactpkg_LTLIBRARIES = src/modules/contact/module.la
|
||||
|
||||
src_modules_contact_module_la_LIBADD = $(MOD_LIBS)
|
||||
src_modules_contact_module_la_CPPFLAGS = $(MOD_CPPFLAGS) -DNEED_X
|
||||
src_modules_contact_module_la_LDFLAGS = $(MOD_LDFLAGS)
|
||||
src_modules_contact_module_la_SOURCES = src/modules/contact/e_mod_main.c \
|
||||
src/modules/contact/e_mod_main.h \
|
||||
src/modules/contact/e_policy.c \
|
||||
src/modules/contact/e_policy.h \
|
||||
src/modules/contact/e_edges.c \
|
||||
src/modules/contact/e_edges.h
|
||||
|
||||
# TODO: incomplete
|
||||
PHONIES += contact install-contact
|
||||
contact: $(contactpkg_LTLIBRARIES) $(contact_DATA)
|
||||
install-contact: install-contactDATA install-contactpkgLTLIBRARIES
|
||||
endif
|
Binary file not shown.
|
@ -1,241 +0,0 @@
|
|||
#include "e_mod_main.h"
|
||||
|
||||
typedef struct _Edgeset Edgeset;
|
||||
typedef struct _Edgehandler Edgehandler;
|
||||
|
||||
struct _Edgeset
|
||||
{
|
||||
E_Zone *zone;
|
||||
struct {
|
||||
Evas_Object *obj;
|
||||
} l, r, t, b;
|
||||
struct {
|
||||
int button, x, y;
|
||||
Eina_Bool recognized : 1;
|
||||
} down;
|
||||
};
|
||||
|
||||
struct _Edgehandler
|
||||
{
|
||||
E_Edges_Event event;
|
||||
void (*func) (void *data, int d, double v);
|
||||
void *data;
|
||||
};
|
||||
|
||||
static Edgehandler *_handler_find(E_Edges_Event event);
|
||||
static Evas_Object *_input_obj(Edgeset *es, int x, int y, int w, int h);
|
||||
static Edgeset *_edgeset_new(E_Zone *zone);
|
||||
static void _edgeset_free(Edgeset *es);
|
||||
static void _cb_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event);
|
||||
static void _cb_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event);
|
||||
static void _cb_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event);
|
||||
|
||||
static Eina_List *edges = NULL;
|
||||
static Eina_List *handlers = NULL;
|
||||
|
||||
void
|
||||
e_edges_init(void)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Zone *zone;
|
||||
|
||||
EINA_LIST_FOREACH(e_comp->zones, l, zone)
|
||||
{
|
||||
Edgeset *es = _edgeset_new(zone);
|
||||
|
||||
if (es) edges = eina_list_append(edges, es);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
e_edges_shutdown(void)
|
||||
{
|
||||
Edgeset *es;
|
||||
Edgehandler *eh;
|
||||
|
||||
EINA_LIST_FREE(edges, es) _edgeset_free(es);
|
||||
EINA_LIST_FREE(handlers, eh) free(eh);
|
||||
}
|
||||
|
||||
void
|
||||
e_edges_handler_set(E_Edges_Event event, void (*func) (void *data, int d, double v), void *data)
|
||||
{
|
||||
Edgehandler *eh;
|
||||
|
||||
eh = _handler_find(event);
|
||||
if (!eh)
|
||||
{
|
||||
eh = calloc(1, sizeof(*eh));
|
||||
if (!eh) return;
|
||||
handlers = eina_list_append(handlers, eh);
|
||||
}
|
||||
eh->event = event;
|
||||
eh->func = func;
|
||||
eh->data = data;
|
||||
}
|
||||
|
||||
static Edgehandler *
|
||||
_handler_find(E_Edges_Event event)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edgehandler *eh;
|
||||
|
||||
EINA_LIST_FOREACH(handlers, l, eh)
|
||||
{
|
||||
if (eh->event == event)
|
||||
{
|
||||
handlers = eina_list_promote_list(handlers, l);
|
||||
return eh;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_handler_call(E_Edges_Event event, int d, double v)
|
||||
{
|
||||
Edgehandler *eh = _handler_find(event);
|
||||
|
||||
if (!eh) return;
|
||||
if (!eh->func) return;
|
||||
eh->func(eh->data, d, v);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_input_obj(Edgeset *es, int x, int y, int w, int h)
|
||||
{
|
||||
Evas_Object *o = evas_object_rectangle_add(e_comp->evas);
|
||||
evas_object_color_set(o, 0, 0, 0, 0);
|
||||
evas_object_move(o, x, y);
|
||||
evas_object_resize(o, w, h);
|
||||
evas_object_layer_set(o, 999);
|
||||
evas_object_show(o);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _cb_down, es);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _cb_up, es);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _cb_move, es);
|
||||
return o;
|
||||
}
|
||||
|
||||
static Edgeset *
|
||||
_edgeset_new(E_Zone *zone)
|
||||
{
|
||||
Edgeset *es = calloc(1, sizeof(*es));
|
||||
|
||||
if (!es) return NULL;
|
||||
es->zone = zone;
|
||||
|
||||
es->t.obj = _input_obj(es, zone->x, zone->y, zone->w, 8);
|
||||
es->b.obj = _input_obj(es, zone->x, zone->y + zone->h - 8, zone->w, 8);
|
||||
es->l.obj = _input_obj(es, zone->x, zone->y, 8, zone->h);
|
||||
es->r.obj = _input_obj(es, zone->x + zone->w - 8, zone->y, 8, zone->h);
|
||||
return es;
|
||||
}
|
||||
|
||||
static void
|
||||
_edgeset_free(Edgeset *es)
|
||||
{
|
||||
evas_object_del(es->t.obj);
|
||||
evas_object_del(es->b.obj);
|
||||
evas_object_del(es->l.obj);
|
||||
evas_object_del(es->r.obj);
|
||||
free(es);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
|
||||
{
|
||||
Edgeset *es = data;
|
||||
Evas_Event_Mouse_Down *ev = event;
|
||||
if (ev->button != 1) return;
|
||||
es->down.button = ev->button;
|
||||
es->down.x = ev->canvas.x;
|
||||
es->down.y = ev->canvas.y;
|
||||
es->down.recognized = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event)
|
||||
{
|
||||
Edgeset *es = data;
|
||||
Evas_Event_Mouse_Up *ev = event;
|
||||
if (ev->button != 1) return;
|
||||
es->down.button = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event)
|
||||
{
|
||||
Edgeset *es = data;
|
||||
Evas_Event_Mouse_Move *ev = event;
|
||||
int dx, dy, d;
|
||||
double v;
|
||||
|
||||
if (!es->down.button) return;
|
||||
dx = ev->cur.canvas.x - es->down.x;
|
||||
dy = ev->cur.canvas.y - es->down.y;
|
||||
d = 40;
|
||||
if (obj == es->l.obj)
|
||||
{
|
||||
if ((!es->down.recognized) && (dx > d) && (abs(dy) < d))
|
||||
{
|
||||
es->down.recognized = EINA_TRUE;
|
||||
_handler_call(E_EDGES_LEFT_IN_BEGIN, 0, 0);
|
||||
}
|
||||
if (es->down.recognized)
|
||||
{
|
||||
d = (dx - d);
|
||||
if (d < 0) d = 0;
|
||||
if (es->zone->w > 1) v = (double)d / (es->zone->w / 2);
|
||||
else v = 1.0;
|
||||
_handler_call(E_EDGES_LEFT_IN_SLIDE, d, v);
|
||||
}
|
||||
}
|
||||
else if (obj == es->r.obj)
|
||||
{
|
||||
if ((!es->down.recognized) && (-dx > d) && (abs(dy) < d))
|
||||
{
|
||||
es->down.recognized = EINA_TRUE;
|
||||
_handler_call(E_EDGES_RIGHT_IN_BEGIN, 0, 0);
|
||||
}
|
||||
if (es->down.recognized)
|
||||
{
|
||||
d = (-dx - d);
|
||||
if (d < 0) d = 0;
|
||||
if (es->zone->w > 1) v = (double)d / (es->zone->w / 2);
|
||||
else v = 1.0;
|
||||
_handler_call(E_EDGES_RIGHT_IN_SLIDE, d, v);
|
||||
}
|
||||
}
|
||||
else if (obj == es->t.obj)
|
||||
{
|
||||
if ((!es->down.recognized) && (dy > d) && (abs(dx) < d))
|
||||
{
|
||||
es->down.recognized = EINA_TRUE;
|
||||
_handler_call(E_EDGES_TOP_IN_BEGIN, 0, 0);
|
||||
}
|
||||
if (es->down.recognized)
|
||||
{
|
||||
d = (dy - d);
|
||||
if (d < 0) d = 0;
|
||||
if (es->zone->h > 1) v = (double)d / (es->zone->h / 2);
|
||||
else v = 1.0;
|
||||
_handler_call(E_EDGES_TOP_IN_SLIDE, d, v);
|
||||
}
|
||||
}
|
||||
else if (obj == es->b.obj)
|
||||
{
|
||||
if ((!es->down.recognized) && (-dy > d) && (abs(dx) < d))
|
||||
{
|
||||
es->down.recognized = EINA_TRUE;
|
||||
_handler_call(E_EDGES_BOTTOM_IN_BEGIN, 0, 0);
|
||||
}
|
||||
if (es->down.recognized)
|
||||
{
|
||||
d = (-dy - d);
|
||||
if (d < 0) d = 0;
|
||||
if (es->zone->h > 1) v = (double)d / (es->zone->h / 2);
|
||||
else v = 1.0;
|
||||
_handler_call(E_EDGES_BOTTOM_IN_SLIDE, d, v);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef E_EDGES_H
|
||||
# define E_EDGES_H
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_EDGES_LEFT_IN_BEGIN,
|
||||
E_EDGES_RIGHT_IN_BEGIN,
|
||||
E_EDGES_TOP_IN_BEGIN,
|
||||
E_EDGES_BOTTOM_IN_BEGIN,
|
||||
E_EDGES_LEFT_IN_SLIDE,
|
||||
E_EDGES_RIGHT_IN_SLIDE,
|
||||
E_EDGES_TOP_IN_SLIDE,
|
||||
E_EDGES_BOTTOM_IN_SLIDE
|
||||
} E_Edges_Event;
|
||||
|
||||
void e_edges_init(void);
|
||||
void e_edges_shutdown(void);
|
||||
void e_edges_handler_set(E_Edges_Event event, void (*func) (void *data, int d, double v), void *data);
|
||||
|
||||
#endif
|
|
@ -1,133 +0,0 @@
|
|||
#include "e_mod_main.h"
|
||||
|
||||
EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Contact" };
|
||||
|
||||
static void
|
||||
_cb_in_left(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// show PREV window in list from urrent focused window on top of current
|
||||
// window but in an inital "off to the right" state in comp
|
||||
Eina_List *clients = (Eina_List *)e_policy_clients_get();
|
||||
E_Client *ec_active = (E_Client *)e_policy_client_active_get();
|
||||
E_Client *ec = NULL;
|
||||
Eina_List *ec_active_l = NULL;
|
||||
if (!ec_active)
|
||||
{
|
||||
if (!clients) return;
|
||||
ec = eina_list_last(clients)->data;
|
||||
}
|
||||
if (!ec)
|
||||
{
|
||||
if (ec_active)
|
||||
ec_active_l = eina_list_data_find_list(clients, ec_active);
|
||||
if ((ec_active_l) && (ec_active_l->prev)) ec = ec_active_l->prev->data;
|
||||
}
|
||||
if ((!ec) && (ec_active))
|
||||
{
|
||||
e_client_iconify(ec_active);
|
||||
return;
|
||||
}
|
||||
if (!ec) return;
|
||||
e_client_activate(ec, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_left_go(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// as v > 0 (and heads towards 1.0) flip/slide new window in unbtil v > 1.0
|
||||
// and once over 1.0 just do transition until end
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_right(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// show NEXT window in list from urrent focused window on top of current
|
||||
// window but in an inital "off to the right" state in comp
|
||||
Eina_List *clients = (Eina_List *)e_policy_clients_get();
|
||||
E_Client *ec_active = (E_Client *)e_policy_client_active_get();
|
||||
E_Client *ec = NULL;
|
||||
Eina_List *ec_active_l = NULL;
|
||||
if (!ec_active)
|
||||
{
|
||||
if (!clients) return;
|
||||
ec = clients->data;
|
||||
}
|
||||
if (!ec)
|
||||
{
|
||||
if (ec_active)
|
||||
ec_active_l = eina_list_data_find_list(clients, ec_active);
|
||||
if ((ec_active_l) && (ec_active_l->next)) ec = ec_active_l->next->data;
|
||||
}
|
||||
if ((!ec) && (ec_active))
|
||||
{
|
||||
e_client_iconify(ec_active);
|
||||
return;
|
||||
}
|
||||
if (!ec) return;
|
||||
e_client_activate(ec, EINA_TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_right_go(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// as v > 0 (and heads towards 1.0) flip/slide new window in unbtil v > 1.0
|
||||
// and once over 1.0 just do transition until end
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_top(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// show/populate top controls if not already there and start in offscreen
|
||||
// state and beign slide in anim and place controls at final spot
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_top_go(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// for now nothing - but animation would be nice for top controls
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_bottom(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// force kbd activation if no kbd
|
||||
e_policy_kbd_override_set(EINA_TRUE);
|
||||
// if kbd already up... hmmm show app menu?
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_in_bottom_go(void *data EINA_UNUSED, int d EINA_UNUSED, double v EINA_UNUSED)
|
||||
{
|
||||
// for now nothing - but slide animation is nice
|
||||
}
|
||||
|
||||
EAPI void *
|
||||
e_modapi_init(E_Module *m EINA_UNUSED)
|
||||
{
|
||||
e_policy_init();
|
||||
e_edges_init();
|
||||
|
||||
e_edges_handler_set(E_EDGES_LEFT_IN_BEGIN, _cb_in_left, NULL);
|
||||
e_edges_handler_set(E_EDGES_LEFT_IN_SLIDE, _cb_in_left_go, NULL);
|
||||
e_edges_handler_set(E_EDGES_RIGHT_IN_BEGIN, _cb_in_right, NULL);
|
||||
e_edges_handler_set(E_EDGES_RIGHT_IN_SLIDE, _cb_in_right_go, NULL);
|
||||
e_edges_handler_set(E_EDGES_TOP_IN_BEGIN, _cb_in_top, NULL);
|
||||
e_edges_handler_set(E_EDGES_TOP_IN_SLIDE, _cb_in_top_go, NULL);
|
||||
e_edges_handler_set(E_EDGES_BOTTOM_IN_BEGIN, _cb_in_bottom, NULL);
|
||||
e_edges_handler_set(E_EDGES_BOTTOM_IN_SLIDE, _cb_in_bottom_go, NULL);
|
||||
return m;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
||||
{
|
||||
e_edges_shutdown();
|
||||
e_policy_shutdown();
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_save(E_Module *m EINA_UNUSED)
|
||||
{
|
||||
return 1;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
#ifndef E_MOD_MAIN_H
|
||||
# define E_MOD_MAIN_H
|
||||
|
||||
# include "e.h"
|
||||
# include "e_policy.h"
|
||||
# include "e_edges.h"
|
||||
|
||||
#endif
|
|
@ -1,285 +0,0 @@
|
|||
#define E_COMP_X
|
||||
|
||||
#include "e_mod_main.h"
|
||||
|
||||
static Eina_Bool _cb_event_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
|
||||
static Eina_Bool _cb_event_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
|
||||
static Eina_Bool _cb_event_focus_in(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
|
||||
static Eina_Bool _cb_event_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, void *event);
|
||||
static void _cb_hook_post_fetch(void *data EINA_UNUSED, E_Client *ec);
|
||||
static void _cb_hook_post_assign(void *data EINA_UNUSED, E_Client *ec);
|
||||
static void _cb_hook_layout(void);
|
||||
|
||||
static Eina_List *hooks = NULL;
|
||||
static Eina_List *handlers = NULL;
|
||||
|
||||
static Eina_Bool kbd_on = EINA_FALSE;
|
||||
static Eina_Bool kbd_override = EINA_FALSE;
|
||||
static Eina_List *clients = NULL;
|
||||
static E_Client *ec_active = NULL;
|
||||
|
||||
#define LADD(l, f) l = eina_list_append(l, f)
|
||||
|
||||
void
|
||||
e_policy_init(void)
|
||||
{
|
||||
LADD(hooks, e_client_hook_add(E_CLIENT_HOOK_EVAL_POST_FETCH,
|
||||
_cb_hook_post_fetch, NULL));
|
||||
LADD(hooks, e_client_hook_add(E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN,
|
||||
_cb_hook_post_assign, NULL));
|
||||
LADD(handlers, ecore_event_handler_add(E_EVENT_CLIENT_ADD,
|
||||
_cb_event_add, NULL));
|
||||
LADD(handlers, ecore_event_handler_add(E_EVENT_CLIENT_REMOVE,
|
||||
_cb_event_del, NULL));
|
||||
LADD(handlers, ecore_event_handler_add(E_EVENT_CLIENT_FOCUS_IN,
|
||||
_cb_event_focus_in, NULL));
|
||||
LADD(handlers, ecore_event_handler_add(E_EVENT_CLIENT_FOCUS_OUT,
|
||||
_cb_event_focus_out, NULL));
|
||||
e_client_layout_cb_set((E_Client_Layout_Cb)_cb_hook_layout);
|
||||
}
|
||||
|
||||
void
|
||||
e_policy_shutdown(void)
|
||||
{
|
||||
E_Client_Hook *bh;
|
||||
Ecore_Event_Handler *eh;
|
||||
|
||||
EINA_LIST_FREE(hooks, bh) e_client_hook_del(bh);
|
||||
EINA_LIST_FREE(handlers, eh) ecore_event_handler_del(eh);
|
||||
e_client_layout_cb_set(NULL);
|
||||
}
|
||||
|
||||
void
|
||||
e_policy_kbd_override_set(Eina_Bool override)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Client *ec, *kbd = NULL;;
|
||||
|
||||
if (kbd_override == override) return;
|
||||
kbd_override = override;
|
||||
EINA_LIST_FOREACH(e_comp->clients, l, ec)
|
||||
{
|
||||
if (ec->vkbd.vkbd)
|
||||
{
|
||||
kbd = ec;
|
||||
}
|
||||
}
|
||||
if (kbd)
|
||||
{
|
||||
ec = kbd;
|
||||
e_client_uniconify(ec);
|
||||
evas_object_raise(ec->frame);
|
||||
evas_object_show(ec->frame);
|
||||
}
|
||||
}
|
||||
|
||||
const Eina_List *
|
||||
e_policy_clients_get(void)
|
||||
{
|
||||
return clients;
|
||||
}
|
||||
|
||||
const E_Client *
|
||||
e_policy_client_active_get(void)
|
||||
{
|
||||
return ec_active;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_cb_event_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||
{
|
||||
E_Event_Client *ev = event;
|
||||
E_Client *ec = ev->ec;
|
||||
|
||||
if (ec_active) clients = eina_list_append_relative(clients, ec, ec_active);
|
||||
else clients = eina_list_prepend(clients, ec);
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_cb_event_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||
{
|
||||
E_Event_Client *ev = event;
|
||||
E_Client *ec = ev->ec;
|
||||
|
||||
clients = eina_list_remove(clients, ec);
|
||||
if (ec_active == ec) ec_active = NULL;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_cb_event_focus_in(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||
{
|
||||
E_Event_Client *ev = event;
|
||||
E_Client *ec = ev->ec;
|
||||
|
||||
ec_active = ec;
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_cb_event_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
|
||||
{
|
||||
E_Event_Client *ev = event;
|
||||
E_Client *ec = ev->ec;
|
||||
|
||||
if (ec_active == ec) ec_active = NULL;
|
||||
if (kbd_on) e_policy_kbd_override_set(EINA_FALSE);
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_hook_post_fetch(void *data EINA_UNUSED, E_Client *ec)
|
||||
{
|
||||
/* NB: for this policy we disable all remembers set on a client */
|
||||
if (ec->remember) e_remember_del(ec->remember);
|
||||
ec->remember = NULL;
|
||||
|
||||
/* set this client to borderless */
|
||||
ec->borderless = 1;
|
||||
EC_CHANGED(ec);
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_hook_post_assign(void *data EINA_UNUSED, E_Client *ec)
|
||||
{
|
||||
ec->internal_no_remember = 1;
|
||||
|
||||
/* do not allow client to change these properties */
|
||||
ec->lock_client_size = 1;
|
||||
ec->lock_client_shade = 1;
|
||||
ec->lock_client_maximize = 1;
|
||||
ec->lock_client_location = 1;
|
||||
ec->lock_client_stacking = 1;
|
||||
|
||||
/* do not allow the user to change these properties */
|
||||
ec->lock_user_location = 1;
|
||||
ec->lock_user_size = 1;
|
||||
ec->lock_user_shade = 1;
|
||||
|
||||
/* clear any centered states */
|
||||
/* NB: this is mainly needed for E's main config dialog */
|
||||
ec->e.state.centered = 0;
|
||||
|
||||
/* lock the border type so user/client cannot change */
|
||||
ec->lock_border = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
_cb_hook_layout(void)
|
||||
{
|
||||
Eina_List *l;
|
||||
E_Client *ec, *kbd = NULL;;
|
||||
Eina_Bool want_kbd = EINA_FALSE;
|
||||
Eina_Bool have_focused = EINA_FALSE;
|
||||
int kx = 0, ky = 0, kw = 0, kh = 0;
|
||||
|
||||
EINA_LIST_FOREACH(e_comp->clients, l, ec)
|
||||
{
|
||||
if (e_client_util_ignored_get(ec)) continue;
|
||||
if (ec->focused) have_focused = EINA_TRUE;
|
||||
#ifndef HAVE_WAYLAND_ONLY
|
||||
if ((ec->focused) &&
|
||||
(ec->vkbd.state > ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF))
|
||||
want_kbd = EINA_TRUE;
|
||||
if (ec->vkbd.vkbd) kbd = ec;
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((have_focused) && (kbd_override)) want_kbd = EINA_TRUE;
|
||||
|
||||
if (kbd)
|
||||
{
|
||||
kw = kbd->zone->w;
|
||||
kh = kbd->icccm.min_h;
|
||||
kx = kbd->zone->x;
|
||||
ky = kbd->zone->y + kbd->zone->h - kh;
|
||||
}
|
||||
EINA_LIST_FOREACH(e_comp->clients, l, ec)
|
||||
{
|
||||
int x, y, w, h;
|
||||
|
||||
if (!ec->zone) continue;
|
||||
if (e_client_util_ignored_get(ec)) continue;
|
||||
|
||||
w = ec->zone->w;
|
||||
h = ec->zone->h;
|
||||
x = ec->zone->x;
|
||||
y = ec->zone->y;
|
||||
|
||||
if (ec->vkbd.vkbd)
|
||||
{
|
||||
x = kx; y = ky; w = kw; h = kh;
|
||||
if (want_kbd)
|
||||
{
|
||||
e_client_uniconify(ec);
|
||||
evas_object_raise(ec->frame);
|
||||
evas_object_show(ec->frame);
|
||||
}
|
||||
else
|
||||
{
|
||||
e_client_iconify(ec);
|
||||
}
|
||||
}
|
||||
else if (((ec->netwm.type == E_WINDOW_TYPE_DIALOG) ||
|
||||
(ec->icccm.transient_for != 0)) &&
|
||||
((ec->icccm.min_w == ec->icccm.max_w) &&
|
||||
(ec->icccm.min_h == ec->icccm.max_h)))
|
||||
{
|
||||
// center dialog at min size
|
||||
w = ec->icccm.min_w;
|
||||
h = ec->icccm.min_h;
|
||||
if (w > (ec->zone->w)) w = ec->zone->w;
|
||||
if (h > (ec->zone->h - kh)) h = (ec->zone->h - kh);
|
||||
x = ec->zone->x + ((ec->zone->w - w) / 2);
|
||||
y = ec->zone->y + ((ec->zone->h - kh - h) / 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
#warning X ONLY! SPANK! SPANK! SPANK!!!
|
||||
if (ec->comp_data->illume.conformant.conformant)
|
||||
{
|
||||
if (kbd_on != want_kbd)
|
||||
{
|
||||
if (want_kbd)
|
||||
ecore_x_e_illume_keyboard_geometry_set(e_client_util_win_get(ec),
|
||||
kx, ky, kw, kh);
|
||||
else
|
||||
ecore_x_e_illume_keyboard_geometry_set(e_client_util_win_get(ec),
|
||||
0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// just make all windows fill the zone...
|
||||
if (want_kbd)
|
||||
{
|
||||
w = ec->zone->w;
|
||||
h = ec->zone->h - kh;
|
||||
x = ec->zone->x;
|
||||
y = ec->zone->y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// implement the positioning/sizing
|
||||
if ((ec->x != x) || (ec->y != y))
|
||||
{
|
||||
ec->placed = 1;
|
||||
ec->x = x;
|
||||
ec->y = y;
|
||||
ec->changes.pos = 1;
|
||||
EC_CHANGED(ec);
|
||||
}
|
||||
if ((ec->w != w) || (ec->h != h))
|
||||
{
|
||||
ec->w = w;
|
||||
ec->h = h;
|
||||
e_comp_object_frame_wh_unadjust(ec->frame, ec->w, ec->h, &ec->client.w, &ec->client.h);
|
||||
ec->changes.size = 1;
|
||||
EC_CHANGED(ec);
|
||||
}
|
||||
}
|
||||
|
||||
kbd_on = want_kbd;
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef E_POLICY_H
|
||||
# define E_POLICY_H
|
||||
|
||||
void e_policy_init(void);
|
||||
void e_policy_shutdown(void);
|
||||
void e_policy_kbd_override_set(Eina_Bool override);
|
||||
const Eina_List *e_policy_clients_get(void);
|
||||
const E_Client *e_policy_client_active_get(void);
|
||||
|
||||
#endif
|
|
@ -1,17 +0,0 @@
|
|||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Link
|
||||
Name=Contact
|
||||
Name[ca]=Contacteu
|
||||
Name[de]=Kontakt
|
||||
Name[eo]=Kontakto
|
||||
Name[fr]=Contact
|
||||
Name[gl]=Contacto
|
||||
Name[ja]=コンタクト
|
||||
Name[ms]=Kenalan
|
||||
Name[pl]=Kontakt
|
||||
Name[sr]=Веза
|
||||
Name[tr]=Kişiler
|
||||
Comment=
|
||||
Icon=e-module-contact
|
||||
X-Enlightenment-ModuleType=mobile
|
Loading…
Reference in New Issue