bugfix: use existing compositor canvas pointer as the windows pointer
when doing wayland windows (internal dialogs), and in such a case don't free the window pointer on window hide/destroy. NB: This fixes the case when running wayland-only and dialogs would actually show 2 pointers. Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
1f439893f1
commit
ffe713d0df
|
@ -263,7 +263,8 @@ _e_win_hide(void *obj)
|
|||
if (cb) cb(win);
|
||||
if (!e_object_unref(E_OBJECT(win)))
|
||||
return;
|
||||
E_FREE_FUNC(win->pointer, e_object_del);
|
||||
if ((win->pointer) && (win->comp->comp_type != E_PIXMAP_TYPE_WL))
|
||||
E_FREE_FUNC(win->pointer, e_object_del);
|
||||
e_canvas_del(win->ecore_evas);
|
||||
ecore_evas_callback_move_set(win->ecore_evas, NULL);
|
||||
ecore_evas_callback_resize_set(win->ecore_evas, NULL);
|
||||
|
@ -348,7 +349,7 @@ e_win_new(E_Comp *c)
|
|||
if (c->comp_type == E_PIXMAP_TYPE_X)
|
||||
win->pointer = e_pointer_window_new(win->evas_win, EINA_TRUE);
|
||||
else if (c->comp_type == E_PIXMAP_TYPE_WL)
|
||||
win->pointer = e_pointer_canvas_new(win->ecore_evas, EINA_TRUE);
|
||||
win->pointer = c->pointer;
|
||||
|
||||
return win;
|
||||
}
|
||||
|
@ -716,7 +717,7 @@ e_win_client_icon_key_set(E_Win *win, const char *key)
|
|||
static void
|
||||
_e_win_free(E_Win *win)
|
||||
{
|
||||
if (win->pointer)
|
||||
if ((win->pointer) && (win->comp->comp_type != E_PIXMAP_TYPE_WL))
|
||||
e_object_del(E_OBJECT(win->pointer));
|
||||
|
||||
if (win->ecore_evas)
|
||||
|
|
Loading…
Reference in New Issue