}
static void
-_e_hwc_window_below_transparent_obj_cb_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+_e_hwc_window_below_transparent_obj_cb_show(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
E_Hwc_Window *hwc_window;
if (!(hwc_window = data)) return;
- EINA_SAFETY_ON_NULL_RETURN(hwc_window->ec);
+ evas_object_show(hwc_window->below_transparent_obj);
+}
+
+static void
+_e_hwc_window_below_transparent_obj_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ E_Hwc_Window *hwc_window;
+
+ if (!(hwc_window = data)) return;
+
+ evas_object_hide(hwc_window->below_transparent_obj);
+}
+
+static void
+_e_hwc_window_below_transparent_obj_cb_move(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ E_Hwc_Window *hwc_window;
+
+ if (!(hwc_window = data)) return;
+
+ evas_object_move(hwc_window->below_transparent_obj, hwc_window->ec->x, hwc_window->ec->y);
_e_hwc_window_below_transparent_obj_map_apply(hwc_window);
}
+static void
+_e_hwc_window_below_transparent_obj_cb_resize(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ E_Hwc_Window *hwc_window;
+
+ if (!(hwc_window = data)) return;
+
+ _e_hwc_window_below_transparent_obj_map_apply(hwc_window);
+}
+
+static void
+_e_hwc_window_below_transparent_obj_cb_restack(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
+{
+ E_Hwc_Window *hwc_window;
+
+ if (!(hwc_window = data)) return;
+
+ evas_object_layer_set(hwc_window->below_transparent_obj, evas_object_layer_get(hwc_window->ec->frame));
+ evas_object_stack_below(hwc_window->below_transparent_obj, hwc_window->ec->frame);
+}
+
EINTERN void
e_hwc_window_below_transparent_obj_set(E_Hwc_Window *hwc_window, Eina_Bool set)
{
evas_object_pass_events_set(below_transparent_obj, EINA_TRUE);
evas_object_layer_set(below_transparent_obj, evas_object_layer_get(hwc_window->ec->frame));
+ evas_object_stack_below(below_transparent_obj, hwc_window->ec->frame);
evas_object_render_op_set(below_transparent_obj, EVAS_RENDER_COPY);
evas_object_color_set(below_transparent_obj, 0, 0, 0, 0);
_e_hwc_window_below_transparent_obj_map_apply(hwc_window);
- evas_object_smart_member_add(hwc_window->below_transparent_obj, hwc_window->ec->frame);
- evas_object_lower(hwc_window->below_transparent_obj);
- evas_object_show(hwc_window->below_transparent_obj);
+ if (evas_object_visible_get(hwc_window->ec->frame))
+ evas_object_show(hwc_window->below_transparent_obj);
+ evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
+ _e_hwc_window_below_transparent_obj_cb_show,
+ hwc_window);
+ evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
+ _e_hwc_window_below_transparent_obj_cb_hide,
+ hwc_window);
+ evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
+ _e_hwc_window_below_transparent_obj_cb_move,
+ hwc_window);
evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
_e_hwc_window_below_transparent_obj_cb_resize,
hwc_window);
+ evas_object_event_callback_add(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
+ _e_hwc_window_below_transparent_obj_cb_restack,
+ hwc_window);
EHWINF("Set below_transparent_obj", hwc_window->ec, hwc_window->hwc, hwc_window);
}
{
if (!hwc_window->below_transparent_obj) return;
- evas_object_smart_member_del(hwc_window->below_transparent_obj);
E_FREE_FUNC(hwc_window->below_transparent_obj, evas_object_del);
if (hwc_window->ec)
- evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
- _e_hwc_window_below_transparent_obj_cb_resize,
- hwc_window);
+ {
+ evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_SHOW,
+ _e_hwc_window_below_transparent_obj_cb_show,
+ hwc_window);
+ evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_HIDE,
+ _e_hwc_window_below_transparent_obj_cb_hide,
+ hwc_window);
+ evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_MOVE,
+ _e_hwc_window_below_transparent_obj_cb_move,
+ hwc_window);
+ evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESIZE,
+ _e_hwc_window_below_transparent_obj_cb_resize,
+ hwc_window);
+ evas_object_event_callback_del_full(hwc_window->ec->frame, EVAS_CALLBACK_RESTACK,
+ _e_hwc_window_below_transparent_obj_cb_restack,
+ hwc_window);
+ }
EHWINF("Unset below_transparent_obj", hwc_window->ec, hwc_window->hwc, hwc_window);
}