static void _e_desk_show_begin(E_Desk *desk, int dx, int dy);
static void _e_desk_hide_begin(E_Desk *desk, int dx, int dy);
static void _e_desk_event_desk_geometry_change_free(void *data, void *ev);
-static Eina_Bool _e_desk_cb_zone_move_resize(void *data, int type EINA_UNUSED, void *event);
static void _e_desk_smart_init(E_Desk *desk);
static void _e_desk_smart_add(Evas_Object *obj);
desk->y = y;
desk->id = desk_id++;
- if (!e_config->use_desk_smart_obj)
- {
- /* need to set geometry of desk even if disable the smart object,
- * because 'E_Client' can be reconfigured base on desk.geom as a member
- * of desk. the reason why this is necessary is all of 'E_Client' is not
- * members of the smart object so far.
- */
- EINA_RECTANGLE_SET(&desk->geom, zone->x, zone->y, zone->w, zone->h);
- E_LIST_HANDLER_APPEND(desk->handlers, E_EVENT_ZONE_MOVE_RESIZE, _e_desk_cb_zone_move_resize, desk);
- }
- else
- {
- /* init smart object */
- _e_desk_smart_init(desk);
- }
+ /* init smart object */
+ _e_desk_smart_init(desk);
/* Get current desktop's name */
EINA_LIST_FOREACH(e_config->desktop_names, l, cfname)
wl_signal_emit_mutable(&PRI(desk)->events.client_add, desk);
_e_desk_hook_call(E_DESK_HOOK_CLIENT_ADD, desk);
- if (!e_config->use_desk_smart_obj)
- return;
-
_e_desk_smart_client_add(desk->smart_obj, ec);
}
_e_desk_client_data_del(desk, ec);
- if (!e_config->use_desk_smart_obj)
- return;
-
_e_desk_smart_client_del(desk->smart_obj, ec);
}
int cx, cy, dx, dy;
- if (!e_config->use_desk_smart_obj)
- {
- DBG("Do nothing, Desk Smart Object is disabled");
- return;
- }
-
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
}
}
- if (e_config->use_desk_smart_obj)
- {
- E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
+ E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
- if ((sd->zoom.ratio_x != zoomx) || (sd->zoom.ratio_y != zoomy) ||
- (sd->zoom.cord_x != cx) || (sd->zoom.cord_y != cy))
- {
- sd->zoom.prev_ratio_x = sd->zoom.ratio_x;
- sd->zoom.prev_ratio_y = sd->zoom.ratio_y;
- sd->zoom.prev_cord_x = sd->zoom.cord_x;
- sd->zoom.prev_cord_y = sd->zoom.cord_y;
+ if ((sd->zoom.ratio_x != zoomx) || (sd->zoom.ratio_y != zoomy) ||
+ (sd->zoom.cord_x != cx) || (sd->zoom.cord_y != cy))
+ {
+ sd->zoom.prev_ratio_x = sd->zoom.ratio_x;
+ sd->zoom.prev_ratio_y = sd->zoom.ratio_y;
+ sd->zoom.prev_cord_x = sd->zoom.cord_x;
+ sd->zoom.prev_cord_y = sd->zoom.cord_y;
- sd->zoom.ratio_x = zoomx;
- sd->zoom.ratio_y = zoomy;
- sd->zoom.cord_x = cx;
- sd->zoom.cord_y = cy;
+ sd->zoom.ratio_x = zoomx;
+ sd->zoom.ratio_y = zoomy;
+ sd->zoom.cord_x = cx;
+ sd->zoom.cord_y = cy;
- if (e_config->desk_zoom_effect.enable)
+ if (e_config->desk_zoom_effect.enable)
+ {
+ if (sd->zoom.animator)
{
- if (sd->zoom.animator)
- {
- ecore_animator_del(sd->zoom.animator);
- sd->zoom.animator = NULL;
- }
-
- sd->zoom.animating_type = E_DESK_ZOOM_ANIMATING_TYPE_ENABLE;
- sd->zoom.animator = ecore_animator_timeline_add(e_config->desk_zoom_effect.duration,
- _e_desk_zoom_animate_cb, desk);
- _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
+ ecore_animator_del(sd->zoom.animator);
+ sd->zoom.animator = NULL;
}
- else
+
+ sd->zoom.animating_type = E_DESK_ZOOM_ANIMATING_TYPE_ENABLE;
+ sd->zoom.animator = ecore_animator_timeline_add(e_config->desk_zoom_effect.duration,
+ _e_desk_zoom_animate_cb, desk);
+ _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
+ }
+ else
+ {
+ _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
+ EINA_LIST_FOREACH(sd->clients, l, ec)
{
- _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
- EINA_LIST_FOREACH(sd->clients, l, ec)
- {
- _e_desk_client_zoom(ec, zoomx, zoomy, cx, cy);
- }
+ _e_desk_client_zoom(ec, zoomx, zoomy, cx, cy);
}
}
+ }
- if (!sd->zoom.enabled)
- {
- /* if desk_zoom_effect is enabled,
- then sd->zoom.enabled will be set after finishing effect */
- if (!e_config->desk_zoom_effect.enable)
- sd->zoom.enabled = EINA_TRUE;
-
- /*
- * NOTE: evas_object_map_enable_set is called in _e_desk_client_zoom()
- */
- /*
- * evas_object_map_enable_set(desk->smart_obj, EINA_TRUE);
- * EINA_LIST_FOREACH(sd->clients, l, ec)
- * evas_object_map_enable_set(ec->frame, EINA_TRUE);
- */
- }
+ if (!sd->zoom.enabled)
+ {
+ /* if desk_zoom_effect is enabled,
+ then sd->zoom.enabled will be set after finishing effect */
+ if (!e_config->desk_zoom_effect.enable)
+ sd->zoom.enabled = EINA_TRUE;
+
+ /*
+ * NOTE: evas_object_map_enable_set is called in _e_desk_client_zoom()
+ */
+ /*
+ * evas_object_map_enable_set(desk->smart_obj, EINA_TRUE);
+ * EINA_LIST_FOREACH(sd->clients, l, ec)
+ * evas_object_map_enable_set(ec->frame, EINA_TRUE);
+ */
}
end:
}
}
- if (e_config->use_desk_smart_obj)
- {
- E_DESK_SMART_DATA_GET(desk->smart_obj, sd);
- EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
-
- if (zoomx) *zoomx = sd->zoom.ratio_x;
- if (zoomy) *zoomy = sd->zoom.ratio_y;
- if (cx) *cx = sd->zoom.cord_x;
- if (cy) *cy = sd->zoom.cord_y;
+ E_DESK_SMART_DATA_GET(desk->smart_obj, sd);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(sd, EINA_FALSE);
- res = EINA_TRUE;
- }
+ if (zoomx) *zoomx = sd->zoom.ratio_x;
+ if (zoomy) *zoomy = sd->zoom.ratio_y;
+ if (cx) *cx = sd->zoom.cord_x;
+ if (cy) *cy = sd->zoom.cord_y;
- return res;
+ return EINA_TRUE;
}
EINTERN Eina_Bool
}
}
- if (e_config->use_desk_smart_obj)
- {
- E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
+ E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
- if (!sd->zoom.enabled)
+ if (!sd->zoom.enabled)
+ {
+ if (sd->zoom.animating_type != E_DESK_ZOOM_ANIMATING_TYPE_ENABLE)
{
- if (sd->zoom.animating_type != E_DESK_ZOOM_ANIMATING_TYPE_ENABLE)
- {
- goto end;
- }
+ goto end;
}
+ }
- sd->zoom.prev_ratio_x = sd->zoom.ratio_x;
- sd->zoom.prev_ratio_y = sd->zoom.ratio_y;
- sd->zoom.prev_cord_x = sd->zoom.cord_x;
- sd->zoom.prev_cord_y = sd->zoom.cord_y;
+ sd->zoom.prev_ratio_x = sd->zoom.ratio_x;
+ sd->zoom.prev_ratio_y = sd->zoom.ratio_y;
+ sd->zoom.prev_cord_x = sd->zoom.cord_x;
+ sd->zoom.prev_cord_y = sd->zoom.cord_y;
- sd->zoom.ratio_x = 1.0;
- sd->zoom.ratio_y = 1.0;
- sd->zoom.cord_x = 0;
- sd->zoom.cord_y = 0;
- sd->zoom.enabled = EINA_FALSE;
+ sd->zoom.ratio_x = 1.0;
+ sd->zoom.ratio_y = 1.0;
+ sd->zoom.cord_x = 0;
+ sd->zoom.cord_y = 0;
+ sd->zoom.enabled = EINA_FALSE;
- if (e_config->desk_zoom_effect.enable)
+ if (e_config->desk_zoom_effect.enable)
+ {
+ if (sd->zoom.animator)
{
- if (sd->zoom.animator)
- {
- ecore_animator_del(sd->zoom.animator);
- sd->zoom.animator = NULL;
- }
-
- sd->zoom.animating_type = E_DESK_ZOOM_ANIMATING_TYPE_DISABLE;
- sd->zoom.animator = ecore_animator_timeline_add(e_config->desk_zoom_effect.duration,
- _e_desk_zoom_animate_cb, desk);
- _e_desk_object_zoom(desk->smart_obj, sd->zoom.ratio_x, sd->zoom.ratio_y,
- sd->zoom.cord_x, sd->zoom.cord_y);
+ ecore_animator_del(sd->zoom.animator);
+ sd->zoom.animator = NULL;
}
- else
+
+ sd->zoom.animating_type = E_DESK_ZOOM_ANIMATING_TYPE_DISABLE;
+ sd->zoom.animator = ecore_animator_timeline_add(e_config->desk_zoom_effect.duration,
+ _e_desk_zoom_animate_cb, desk);
+ _e_desk_object_zoom(desk->smart_obj, sd->zoom.ratio_x, sd->zoom.ratio_y,
+ sd->zoom.cord_x, sd->zoom.cord_y);
+ }
+ else
+ {
+ _e_desk_object_zoom(desk->smart_obj, sd->zoom.ratio_x, sd->zoom.ratio_y,
+ sd->zoom.cord_x, sd->zoom.cord_y);
+ /*
+ * NOTE: evas_object_map_enable_set is called in _e_desk_client_zoom()
+ */
+ /*
+ * evas_object_map_enable_set(desk->smart_obj, EINA_FALSE);
+ */
+ EINA_LIST_FOREACH(sd->clients, l, ec)
{
- _e_desk_object_zoom(desk->smart_obj, sd->zoom.ratio_x, sd->zoom.ratio_y,
+ /* NOTE Is it really necessary?
+ * Why isn't it enough to just call evas_object_map_enable_set(false)? */
+ _e_desk_client_zoom(ec, sd->zoom.ratio_x, sd->zoom.ratio_y,
sd->zoom.cord_x, sd->zoom.cord_y);
- /*
- * NOTE: evas_object_map_enable_set is called in _e_desk_client_zoom()
- */
- /*
- * evas_object_map_enable_set(desk->smart_obj, EINA_FALSE);
- */
- EINA_LIST_FOREACH(sd->clients, l, ec)
- {
- /* NOTE Is it really necessary?
- * Why isn't it enough to just call evas_object_map_enable_set(false)? */
- _e_desk_client_zoom(ec, sd->zoom.ratio_x, sd->zoom.ratio_y,
- sd->zoom.cord_x, sd->zoom.cord_y);
- //evas_object_map_enable_set(ec->frame, EINA_FALSE);
- }
+ //evas_object_map_enable_set(ec->frame, EINA_FALSE);
}
}
E_API void
e_desk_smart_member_add(E_Desk *desk, Evas_Object *obj)
{
- if (!e_config->use_desk_smart_obj)
- return;
-
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
E_API void
e_desk_smart_member_del(Evas_Object *obj)
{
- if (!e_config->use_desk_smart_obj)
- return;
-
evas_object_smart_member_del(obj);
}
if (!e_desk_has_ec(desk, ec)) return EINA_FALSE;
- if (e_config->use_desk_smart_obj)
- _e_desk_smart_client_add(desk->smart_obj, ec);
+ _e_desk_smart_client_add(desk->smart_obj, ec);
return EINA_TRUE;
}
EINTERN void
e_desk_client_zoom_apply(E_Desk *desk, E_Client *ec)
{
- if (!e_config->use_desk_smart_obj)
- return;
-
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
EINTERN Eina_Bool
e_desk_zoom_is_animating(E_Desk *desk)
{
- if (!e_config->use_desk_smart_obj) return EINA_FALSE;
-
E_DESK_SMART_DATA_GET(desk->smart_obj, sd);
if (!sd) return EINA_FALSE;
}
static Eina_Bool
-_e_desk_cb_zone_move_resize(void *data, int type EINA_UNUSED, void *event)
-{
- E_Event_Zone_Move_Resize *ev;
- E_Desk *desk;
-
- ev = event;
- if (!ev) return ECORE_CALLBACK_PASS_ON;
-
- desk = data;
- if (!desk) return ECORE_CALLBACK_PASS_ON;
-
- if (ev->zone != desk->zone)
- return ECORE_CALLBACK_PASS_ON;
-
- EINA_RECTANGLE_SET(&desk->geom, ev->zone->x, ev->zone->y, ev->zone->w, ev->zone->h);
-
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
_e_desk_transition_setup(E_Client *ec, int dx, int dy, int state)
{
e_comp_object_effect_set(ec->frame, "none");
zone = desk->zone;
- if (!e_config->use_desk_smart_obj)
- return;
-
desk->smart_obj = evas_object_smart_add(e_comp->evas, _e_desk_smart_class_new());
e_desk_geometry_set(desk, zone->x, zone->y, zone->w, zone->h);