wayland: Remove support for "draw_frame"

draw_frame is a legacy feature that draws a very ugly window border
with a white rect and a black text as title bar. This could be
used in wayland when using only the ecore_evas APIs, rather than
elm_win.

Note that the API ecore_evas_draw_frame_set() can not possibly work
as the flag is checked when the ecore_evas is created, so changing
the flag has no effect on existing windows.
This commit is contained in:
Jean-Philippe Andre 2016-10-27 13:33:36 +09:00
parent dcb8e87478
commit eb8d9387c1
5 changed files with 16 additions and 353 deletions

View File

@ -2304,8 +2304,8 @@ EAPI void ecore_evas_screen_geometry_get(const Ecore_Evas *ee, int *x, in
*/
EAPI void ecore_evas_screen_dpi_get(const Ecore_Evas *ee, int *xdpi, int *ydpi);
EAPI void ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame);
EAPI Eina_Bool ecore_evas_draw_frame_get(const Ecore_Evas *ee);
EAPI void ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame) EINA_DEPRECATED;
EAPI Eina_Bool ecore_evas_draw_frame_get(const Ecore_Evas *ee) EINA_DEPRECATED;
/**
* @brief Associate the given object to this ecore evas.

View File

@ -2227,17 +2227,16 @@ ecore_evas_screen_dpi_get(const Ecore_Evas *ee, int *xdpi, int *ydpi)
}
EAPI void
ecore_evas_draw_frame_set(Ecore_Evas *ee, Eina_Bool draw_frame)
ecore_evas_draw_frame_set(Ecore_Evas *ee EINA_UNUSED, Eina_Bool draw_frame EINA_UNUSED)
{
ECORE_EVAS_CHECK(ee);
ee->prop.draw_frame = draw_frame;
WRN("Calling deprecated function %s (not implemented)", __FUNCTION__);
}
EAPI Eina_Bool
ecore_evas_draw_frame_get(const Ecore_Evas *ee)
ecore_evas_draw_frame_get(const Ecore_Evas *ee EINA_UNUSED)
{
ECORE_EVAS_CHECK(ee, EINA_FALSE);
return ee->prop.draw_frame;
WRN("Calling deprecated function %s (not implemented)", __FUNCTION__);
return EINA_FALSE;
}
EAPI void

View File

@ -267,7 +267,6 @@ struct _Ecore_Evas
Eina_Bool withdrawn : 1;
Eina_Bool sticky : 1;
Eina_Bool request_pos : 1;
Eina_Bool draw_frame : 1;
Eina_Bool hwsurface : 1;
Eina_Bool urgent : 1;
Eina_Bool modal : 1;

View File

@ -94,17 +94,6 @@ static const int interface_wl_version = 1;
Eina_List *ee_list;
/* local structures for the frame smart object */
typedef struct _EE_Wl_Smart_Data EE_Wl_Smart_Data;
struct _EE_Wl_Smart_Data
{
Evas_Object_Smart_Clipped_Data base;
Evas_Object *text;
Evas_Coord x, y, w, h;
Evas_Object *border[4]; // 0 = top, 1 = bottom, 2 = left, 3 = right
Evas_Coord border_size[4]; // same as border
};
/* local structure for evas devices with IDs */
typedef struct _EE_Wl_Device EE_Wl_Device;
struct _EE_Wl_Device
@ -116,15 +105,6 @@ struct _EE_Wl_Device
unsigned int id;
};
static const Evas_Smart_Cb_Description _smart_callbacks[] =
{
{NULL, NULL}
};
EVAS_SMART_SUBCLASS_NEW(_smart_frame_type, _ecore_evas_wl_frame,
Evas_Smart_Class, Evas_Smart_Class,
evas_object_smart_clipped_class_get, _smart_callbacks);
/* local variables */
static int _ecore_evas_wl_init_count = 0;
static Ecore_Event_Handler *_ecore_evas_wl_event_hdls[12];
@ -137,7 +117,6 @@ void _ecore_evas_wl_common_render_updates(void *data, Evas *evas EINA_UNUSED, vo
static void _rotation_do(Ecore_Evas *ee, int rotation, int resize);
static void _ecore_evas_wayland_alpha_do(Ecore_Evas *ee, int alpha);
static void _ecore_evas_wayland_transparent_do(Ecore_Evas *ee, int transparent);
static void _ecore_evas_wl_common_border_update(Ecore_Evas *ee);
/* local functions */
static void
@ -308,9 +287,6 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_
fw = wdata->win->geometry.w - wdata->content.w;
fh = wdata->win->geometry.h - wdata->content.h;
if (prev_full != ee->prop.fullscreen)
_ecore_evas_wl_common_border_update(ee);
if ((prev_max != ee->prop.maximized) ||
(prev_full != ee->prop.fullscreen))
{
@ -836,18 +812,6 @@ _ecore_evas_wl_common_shutdown(void)
return _ecore_evas_wl_init_count;
}
void
_ecore_evas_wl_common_pre_free(Ecore_Evas *ee)
{
Ecore_Evas_Engine_Wl_Data *wdata;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!ee) return;
wdata = ee->engine.data;
if (wdata->frame) evas_object_del(wdata->frame);
}
void
_ecore_evas_wl_common_free(Ecore_Evas *ee)
{
@ -1051,9 +1015,6 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h)
ecore_evas_avoid_damage_set(ee, pdam);
}
if (wdata->frame)
evas_object_resize(wdata->frame, w, h);
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
}
@ -1137,231 +1098,6 @@ _ecore_evas_wl_common_move(Ecore_Evas *ee, int x, int y)
}
}
/* Frame border:
*
* |------------------------------------------|
* | top border |
* |------------------------------------------|
* | | | |
* | | | |
* | | | |
* | | | |
* |left | | right |
* |border | | border |
* | | | |
* | | | |
* | | | |
* |------------------------------------------|
* | bottom border |
* |------------------------------------------|
*/
static void
_border_size_eval(Evas_Object *obj EINA_UNUSED, EE_Wl_Smart_Data *sd)
{
/* top border */
if (sd->border[0])
{
evas_object_move(sd->border[0], sd->x, sd->y);
evas_object_resize(sd->border[0], sd->w, sd->border_size[0]);
}
/* bottom border */
if (sd->border[1])
{
evas_object_move(sd->border[1], sd->x,
sd->y + sd->h - sd->border_size[1]);
evas_object_resize(sd->border[1], sd->w, sd->border_size[1]);
}
/* left border */
if (sd->border[2])
{
evas_object_move(sd->border[2], sd->x, sd->y + sd->border_size[0]);
evas_object_resize(sd->border[2], sd->border_size[2],
sd->h - sd->border_size[0] - sd->border_size[1]);
}
/* right border */
if (sd->border[3])
{
evas_object_move(sd->border[3], sd->x + sd->w - sd->border_size[3],
sd->y + sd->border_size[0]);
evas_object_resize(sd->border[3], sd->border_size[3],
sd->h - sd->border_size[0] - sd->border_size[1]);
}
}
static void
_ecore_evas_wl_common_smart_add(Evas_Object *obj)
{
EE_Wl_Smart_Data *sd;
Evas *evas;
int i;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
EVAS_SMART_DATA_ALLOC(obj, EE_Wl_Smart_Data);
_ecore_evas_wl_frame_parent_sc->add(obj);
sd = priv;
evas = evas_object_evas_get(obj);
sd->x = 0;
sd->y = 0;
sd->w = 1;
sd->h = 1;
for (i = 0; i < 4; i++)
{
sd->border[i] = NULL;
sd->border_size[i] = 0;
}
sd->text = evas_object_text_add(evas);
evas_object_color_set(sd->text, 0, 0, 0, 255);
evas_object_text_style_set(sd->text, EVAS_TEXT_STYLE_PLAIN);
evas_object_text_font_set(sd->text, "Sans", 10);
evas_object_text_text_set(sd->text, "Smart Test");
evas_object_show(sd->text);
evas_object_smart_member_add(sd->text, obj);
}
static void
_ecore_evas_wl_common_smart_del(Evas_Object *obj)
{
EE_Wl_Smart_Data *sd;
int i;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(sd = evas_object_smart_data_get(obj))) return;
evas_object_del(sd->text);
for (i = 0; i < 4; i++)
{
evas_object_del(sd->border[i]);
}
_ecore_evas_wl_frame_parent_sc->del(obj);
}
static void
_ecore_evas_wl_common_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
{
EE_Wl_Smart_Data *sd;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
_ecore_evas_wl_frame_parent_sc->move(obj, x, y);
if (!(sd = evas_object_smart_data_get(obj))) return;
if ((sd->x == x) && (sd->y == y)) return;
sd->x = x;
sd->y = y;
evas_object_smart_changed(obj);
}
static void
_ecore_evas_wl_common_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
EE_Wl_Smart_Data *sd;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(sd = evas_object_smart_data_get(obj))) return;
if ((sd->w == w) && (sd->h == h)) return;
sd->w = w;
sd->h = h;
evas_object_smart_changed(obj);
}
void
_ecore_evas_wl_common_smart_calculate(Evas_Object *obj)
{
EE_Wl_Smart_Data *sd;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(sd = evas_object_smart_data_get(obj))) return;
_border_size_eval(obj, sd);
}
static void
_ecore_evas_wl_frame_smart_set_user(Evas_Smart_Class *sc)
{
sc->add = _ecore_evas_wl_common_smart_add;
sc->del = _ecore_evas_wl_common_smart_del;
sc->move = _ecore_evas_wl_common_smart_move;
sc->resize = _ecore_evas_wl_common_smart_resize;
sc->calculate = _ecore_evas_wl_common_smart_calculate;
}
Evas_Object *
_ecore_evas_wl_common_frame_add(Evas *evas)
{
LOGFN(__FILE__, __LINE__, __FUNCTION__);
return evas_object_smart_add(evas, _ecore_evas_wl_frame_smart_class_new());
}
/*
* Size is received in the same format as it is used to set the framespace
* offset size.
*/
void
_ecore_evas_wl_common_frame_border_size_set(Evas_Object *obj, int fx, int fy, int fw, int fh)
{
EE_Wl_Smart_Data *sd;
Evas *e;
int i;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(sd = evas_object_smart_data_get(obj))) return;
e = evas_object_evas_get(obj);
sd->border_size[0] = fy;
sd->border_size[1] = fh - fy;
sd->border_size[2] = fx;
sd->border_size[3] = fw - fx;
for (i = 0; i < 4; i++)
{
if ((sd->border_size[i] <= 0) && (sd->border[i]))
{
evas_object_del(sd->border[i]);
sd->border[i] = NULL;
}
else if ((sd->border_size[i] > 0) && (!sd->border[i]))
{
sd->border[i] = evas_object_rectangle_add(e);
evas_object_color_set(sd->border[i], 249, 249, 249, 255);
evas_object_show(sd->border[i]);
evas_object_smart_member_add(sd->border[i], obj);
}
}
evas_object_raise(sd->text);
}
void
_ecore_evas_wl_common_frame_border_size_get(Evas_Object *obj, int *fx, int *fy, int *fw, int *fh)
{
EE_Wl_Smart_Data *sd;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
if (!(sd = evas_object_smart_data_get(obj))) return;
if (fx) *fx = sd->border_size[2];
if (fy) *fy = sd->border_size[0];
if (fw) *fw = sd->border_size[2] + sd->border_size[3];
if (fh) *fh = sd->border_size[0] + sd->border_size[1];
}
void
_ecore_evas_wl_common_pointer_xy_get(const Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y)
{
@ -1394,20 +1130,14 @@ _ecore_evas_wl_common_title_set(Ecore_Evas *ee, const char *title)
if (!ee) return;
if (eina_streq(ee->prop.title, title)) return;
if (ee->prop.title) free(ee->prop.title);
ee->prop.title = NULL;
if (title) ee->prop.title = strdup(title);
wdata = ee->engine.data;
if ((ee->prop.draw_frame) && (wdata->frame))
{
EE_Wl_Smart_Data *sd;
if ((sd = evas_object_smart_data_get(wdata->frame)))
evas_object_text_text_set(sd->text, ee->prop.title);
}
free(ee->prop.title);
ee->prop.title = eina_strdup(title);
if (ee->prop.title)
ecore_wl2_window_title_set(wdata->win, ee->prop.title);
{
wdata = ee->engine.data;
ecore_wl2_window_title_set(wdata->win, ee->prop.title);
}
}
void
@ -1593,30 +1323,6 @@ _ecore_evas_wl_common_iconified_set(Ecore_Evas *ee, Eina_Bool on)
ecore_wl2_window_iconified_set(wdata->win, on);
}
static void
_ecore_evas_wl_common_border_update(Ecore_Evas *ee)
{
Ecore_Evas_Engine_Wl_Data *wdata;
wdata = ee->engine.data;
if (!wdata->frame) return;
if ((ee->prop.borderless) || (ee->prop.fullscreen))
{
evas_object_hide(wdata->frame);
evas_output_framespace_set(ee->evas, 0, 0, 0, 0);
}
else
{
int fx = 0, fy = 0, fw = 0, fh = 0;
evas_object_show(wdata->frame);
_ecore_evas_wl_common_frame_border_size_get(wdata->frame,
&fx, &fy, &fw, &fh);
evas_output_framespace_set(ee->evas, fx, fy, fw, fh);
}
}
void
_ecore_evas_wl_common_borderless_set(Ecore_Evas *ee, Eina_Bool on)
{
@ -1626,7 +1332,6 @@ _ecore_evas_wl_common_borderless_set(Ecore_Evas *ee, Eina_Bool on)
if (ee->prop.borderless == on) return;
ee->prop.borderless = on;
_ecore_evas_wl_common_border_update(ee);
_ecore_evas_wl_common_state_update(ee);
}
@ -2042,12 +1747,6 @@ _ecore_evas_wl_common_show(Ecore_Evas *ee)
}
}
if (wdata->frame)
{
evas_object_show(wdata->frame);
evas_object_resize(wdata->frame, ee->w + fw, ee->h + fh);
}
ee->prop.withdrawn = EINA_FALSE;
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
@ -2287,12 +1986,6 @@ _ee_cb_sync_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
}
}
if (wdata->frame)
{
evas_object_show(wdata->frame);
evas_object_resize(wdata->frame, ee->w + fw, ee->h + fh);
}
ee->prop.withdrawn = EINA_FALSE;
if (ee->func.fn_state_change) ee->func.fn_state_change(ee);
@ -2318,7 +2011,7 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
Ecore_Evas_Interface_Wayland *iface;
Ecore_Evas *ee = NULL;
int method = 0;
int fx = 0, fy = 0, fw = 0, fh = 0;
int fw = 0, fh = 0;
LOGFN(__FILE__, __LINE__, __FUNCTION__);
@ -2354,6 +2047,8 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
goto err;
}
if (frame) WRN("draw_frame is now deprecated and will have no effect");
ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
_ecore_evas_wl_common_init();
@ -2384,7 +2079,6 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
ee->prop.layer = 4;
ee->prop.request_pos = EINA_FALSE;
ee->prop.sticky = EINA_FALSE;
ee->prop.draw_frame = frame;
ee->prop.withdrawn = EINA_TRUE;
ee->alpha = EINA_FALSE;
@ -2394,15 +2088,6 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
else
ee->can_async_render = 1;
/* frame offset and size */
if (ee->prop.draw_frame)
{
fx = 4;
fy = 18;
fw = 8;
fh = 22;
}
if (parent)
{
p = ecore_wl2_display_window_find(ewd, parent);
@ -2430,10 +2115,6 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE,
_ecore_evas_wl_common_render_flush_pre, ee);
/* FIXME: This needs to be set based on theme & scale */
if (ee->prop.draw_frame)
evas_output_framespace_set(ee->evas, fx, fy, fw, fh);
if (ewd->sync_done)
{
wdata->sync_done = EINA_TRUE;
@ -2461,16 +2142,6 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i
}
}
ecore_evas_callback_pre_free_set(ee, _ecore_evas_wl_common_pre_free);
if (ee->prop.draw_frame)
{
wdata->frame = _ecore_evas_wl_common_frame_add(ee->evas);
_ecore_evas_wl_common_frame_border_size_set(wdata->frame, fx, fy, fw, fh);
evas_object_move(wdata->frame, -fx, -fy);
evas_object_layer_set(wdata->frame, EVAS_LAYER_MAX - 1);
}
ee->engine.func->fn_render = _ecore_evas_wl_common_render;
_ecore_evas_register(ee);

View File

@ -39,7 +39,6 @@ struct _Ecore_Evas_Engine_Wl_Data
Eina_List *regen_objs;
Ecore_Wl2_Window *parent, *win;
Ecore_Event_Handler *sync_handler;
Evas_Object *frame;
int fx, fy, fw, fh;
Eina_Rectangle content;
struct wl_callback *anim_callback;
@ -57,7 +56,6 @@ Ecore_Evas_Interface_Wayland *_ecore_evas_wl_interface_new(void);
int _ecore_evas_wl_common_init(void);
int _ecore_evas_wl_common_shutdown(void);
void _ecore_evas_wl_common_pre_free(Ecore_Evas *ee);
void _ecore_evas_wl_common_free(Ecore_Evas *ee);
void _ecore_evas_wl_common_callback_resize_set(Ecore_Evas *ee, void (*func)(Ecore_Evas *ee));
void _ecore_evas_wl_common_callback_move_set(Ecore_Evas *ee, void (*func)(Ecore_Evas *ee));
@ -102,10 +100,6 @@ void _ecore_evas_wl_common_alpha_set(Ecore_Evas *ee, int alpha);
void _ecore_evas_wl_common_transparent_set(Ecore_Evas *ee, int transparent);
void _ecore_evas_wl_common_frame_callback_clean(Ecore_Evas *ee);
Evas_Object * _ecore_evas_wl_common_frame_add(Evas *evas);
void _ecore_evas_wl_common_frame_border_size_set(Evas_Object *obj, int fx, int fy, int fw, int fh);
void _ecore_evas_wl_common_pointer_xy_get(const Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y);
Ecore_Evas *_ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, int x, int y, int w, int h, Eina_Bool frame, const char *engine_name);