forked from enlightenment/enlightenment
add wl surface -> e_border mapping
This commit is contained in:
parent
3b539d4a0f
commit
bdd0bc624d
|
@ -1,4 +1,7 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
#ifdef HAVE_WAYLAND_CLIENTS
|
||||||
|
#include "e_comp_wl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define INOUTDEBUG_MOUSE 1
|
//#define INOUTDEBUG_MOUSE 1
|
||||||
//#define INOUTDEBUG_FOCUS 1
|
//#define INOUTDEBUG_FOCUS 1
|
||||||
|
@ -3207,6 +3210,10 @@ e_border_find_by_client_window(Ecore_X_Window win)
|
||||||
if ((bd) && (!e_object_is_del(E_OBJECT(bd))) &&
|
if ((bd) && (!e_object_is_del(E_OBJECT(bd))) &&
|
||||||
(bd->client.win == win))
|
(bd->client.win == win))
|
||||||
return bd;
|
return bd;
|
||||||
|
#ifdef HAVE_WAYLAND_CLIENTS
|
||||||
|
bd = e_comp_wl_border_surface_find(win);
|
||||||
|
if (bd && (!e_object_is_del(E_OBJECT(bd)))) return bd;
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3218,6 +3225,9 @@ e_border_find_all_by_client_window(Ecore_X_Window win)
|
||||||
bd = eina_hash_find(borders_hash, e_util_winid_str_get(win));
|
bd = eina_hash_find(borders_hash, e_util_winid_str_get(win));
|
||||||
if ((bd) && (bd->client.win == win))
|
if ((bd) && (bd->client.win == win))
|
||||||
return bd;
|
return bd;
|
||||||
|
#ifdef HAVE_WAYLAND_CLIENTS
|
||||||
|
return e_comp_wl_border_surface_find(win);
|
||||||
|
#endif
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -208,6 +208,8 @@ static const struct wl_pointer_grab_interface _e_drag_grab_interface =
|
||||||
/* local variables */
|
/* local variables */
|
||||||
static Ecore_Idler *_module_idler = NULL;
|
static Ecore_Idler *_module_idler = NULL;
|
||||||
|
|
||||||
|
static Eina_Hash *_e_wl_border_hash = NULL;
|
||||||
|
|
||||||
/* external variables */
|
/* external variables */
|
||||||
EAPI E_Wayland_Compositor *_e_wl_comp;
|
EAPI E_Wayland_Compositor *_e_wl_comp;
|
||||||
|
|
||||||
|
@ -433,6 +435,8 @@ e_comp_wl_shutdown(void)
|
||||||
E_FREE(_e_wl_comp);
|
E_FREE(_e_wl_comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
E_FREE_FUNC(_e_wl_border_hash, eina_hash_free);
|
||||||
|
|
||||||
/* disable the loaded shell module */
|
/* disable the loaded shell module */
|
||||||
/* TODO: we should have a config variable somewhere to store which
|
/* TODO: we should have a config variable somewhere to store which
|
||||||
* shell we want to unload (tablet, mobile, etc) */
|
* shell we want to unload (tablet, mobile, etc) */
|
||||||
|
@ -440,6 +444,28 @@ e_comp_wl_shutdown(void)
|
||||||
e_module_disable(mod);
|
e_module_disable(mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_comp_wl_border_surface_add(Ecore_Window win, const E_Border *bd)
|
||||||
|
{
|
||||||
|
if (!_e_wl_border_hash)
|
||||||
|
_e_wl_border_hash = eina_hash_int32_new(NULL);
|
||||||
|
eina_hash_add(_e_wl_border_hash, &win, bd);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_comp_wl_border_surface_del(Ecore_Window win)
|
||||||
|
{
|
||||||
|
if (!_e_wl_border_hash) return;
|
||||||
|
eina_hash_del_by_key(_e_wl_border_hash, &win);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI E_Border *
|
||||||
|
e_comp_wl_border_surface_find(Ecore_Window win)
|
||||||
|
{
|
||||||
|
if (!_e_wl_border_hash) return NULL;
|
||||||
|
return eina_hash_find(_e_wl_border_hash, &win);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
wl_seat_init(struct wl_seat *seat)
|
wl_seat_init(struct wl_seat *seat)
|
||||||
{
|
{
|
||||||
|
@ -1615,6 +1641,7 @@ _e_comp_wl_cb_surface_create(struct wl_client *client, struct wl_resource *resou
|
||||||
wl_resource_post_no_memory(resource);
|
wl_resource_post_no_memory(resource);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ews->id = id;
|
||||||
|
|
||||||
/* initialize the destroy signal */
|
/* initialize the destroy signal */
|
||||||
wl_signal_init(&ews->wl.destroy_signal);
|
wl_signal_init(&ews->wl.destroy_signal);
|
||||||
|
|
|
@ -279,6 +279,7 @@ struct _E_Wayland_Buffer_Reference
|
||||||
struct _E_Wayland_Surface
|
struct _E_Wayland_Surface
|
||||||
{
|
{
|
||||||
EINA_INLIST;
|
EINA_INLIST;
|
||||||
|
Ecore_Window id;
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct wl_resource *surface;
|
struct wl_resource *surface;
|
||||||
|
@ -588,6 +589,10 @@ extern EAPI E_Wayland_Compositor *_e_wl_comp;
|
||||||
EINTERN Eina_Bool e_comp_wl_init(void);
|
EINTERN Eina_Bool e_comp_wl_init(void);
|
||||||
EINTERN void e_comp_wl_shutdown(void);
|
EINTERN void e_comp_wl_shutdown(void);
|
||||||
|
|
||||||
|
EAPI void e_comp_wl_border_surface_add(Ecore_Window win, const E_Border *bd);
|
||||||
|
EAPI void e_comp_wl_border_surface_del(Ecore_Window win);
|
||||||
|
EAPI E_Border *e_comp_wl_border_surface_find(Ecore_Window win);
|
||||||
|
|
||||||
EAPI void wl_seat_init(struct wl_seat *seat);
|
EAPI void wl_seat_init(struct wl_seat *seat);
|
||||||
EAPI void wl_seat_release(struct wl_seat *seat);
|
EAPI void wl_seat_release(struct wl_seat *seat);
|
||||||
|
|
||||||
|
|
|
@ -910,6 +910,8 @@ _e_wl_shell_shell_surface_map(E_Wayland_Surface *ews, Evas_Coord x, Evas_Coord y
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (ews->bd)
|
||||||
|
e_comp_wl_border_surface_add(ews->id, ews->bd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -962,7 +964,11 @@ _e_wl_shell_shell_surface_unmap(E_Wayland_Surface *ews)
|
||||||
evas_object_del(ews->obj);
|
evas_object_del(ews->obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ews->bd) e_object_del(E_OBJECT(ews->bd));
|
if (ews->bd)
|
||||||
|
{
|
||||||
|
e_comp_wl_border_surface_del(ews->id);
|
||||||
|
e_object_del(E_OBJECT(ews->bd));
|
||||||
|
}
|
||||||
|
|
||||||
ews->mapped = EINA_FALSE;
|
ews->mapped = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue