From: Mike Blumenkrantz Date: Fri, 7 Jul 2017 20:26:50 +0000 (-0400) Subject: elm_win: manually create a wl2 window for FAKE wins under wayland X-Git-Tag: upstream/1.20.0~333 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=81adac88dcaafacc171df028272ff4d3dfbb1e70;p=platform%2Fupstream%2Fefl.git elm_win: manually create a wl2 window for FAKE wins under wayland this enables elm_cnp to function using protocol --- diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index b763f21..56d9c0c 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -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) { diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo index f98e0a5..21de1d4 100644 --- a/src/lib/elementary/efl_ui_win.eo +++ b/src/lib/elementary/efl_ui_win.eo @@ -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; }