elm_win: manually create a wl2 window for FAKE wins under wayland

this enables elm_cnp to function using protocol
This commit is contained in:
Mike Blumenkrantz 2017-07-07 16:26:50 -04:00
parent 38d18e559d
commit 81adac88dc
2 changed files with 21 additions and 0 deletions

View File

@ -5048,6 +5048,16 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Elm_W
}
ecore_wl2_window_type_set(sd->wl.win, wtype);
}
else if (sd->type == ELM_WIN_FAKE)
{
const char *env = getenv("WAYLAND_DISPLAY");
if (env)
{
Ecore_Wl2_Display *d = ecore_wl2_display_connect(env);
sd->wl.win = ecore_wl2_window_new(d, NULL, 0, 0, 1, 1);
ecore_wl2_display_disconnect(d);
}
}
#endif
#ifdef HAVE_ELEMENTARY_COCOA
@ -5328,6 +5338,16 @@ _efl_ui_win_elm_widget_focus_manager_factory(Eo *obj EINA_UNUSED, Efl_Ui_Win_Dat
return manager;
}
EOLIAN static void
_efl_ui_win_efl_object_destructor(Eo *obj EINA_UNUSED, Efl_Ui_Win_Data *pd)
{
#ifdef HAVE_ELEMENTARY_WL2
if (pd->type == ELM_WIN_FAKE)
ecore_wl2_window_free(pd->wl.win);
#endif
efl_destructor(efl_super(obj, MY_CLASS));
}
EOLIAN static Eo *
_efl_ui_win_efl_object_constructor(Eo *obj, Efl_Ui_Win_Data *pd)
{

View File

@ -926,6 +926,7 @@ class Efl.Ui.Win (Elm.Widget, Efl.Canvas, Elm.Interface.Atspi.Window,
implements {
class.constructor;
Efl.Object.constructor;
Efl.Object.destructor;
Efl.Object.finalize;
Efl.Gfx.visible { set; }
Efl.Gfx.position { set; }