enlightenment/src/bin/e_wayland/e_desk.c

94 lines
1.7 KiB
C

#include "e.h"
/* local function prototypes */
static void _e_desk_cb_free(E_Desk *desk);
EINTERN int
e_desk_init(void)
{
return 1;
}
EINTERN int
e_desk_shutdown(void)
{
return 1;
}
EAPI E_Desk *
e_desk_new(E_Zone *zone, int x, int y)
{
E_Desk *desk;
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
desk = E_OBJECT_ALLOC(E_Desk, E_DESK_TYPE, _e_desk_cb_free);
if (!desk)
{
printf("FAILED TO ALLOCATE DESK\n");
return NULL;
}
printf("Created New Desktop: %d %d\n", x, y);
desk->zone = zone;
desk->x = x;
desk->y = y;
return desk;
}
EAPI void
e_desk_show(E_Desk *desk)
{
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (desk->visible) return;
desk->visible = EINA_TRUE;
e_bg_zone_update(desk->zone, E_BG_TRANSITION_START);
}
EAPI void
e_desk_hide(E_Desk *desk)
{
E_OBJECT_CHECK(desk);
E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
if (!desk->visible) return;
desk->visible = EINA_FALSE;
}
EAPI E_Desk *
e_desk_current_get(E_Zone *zone)
{
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
return e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current);
}
EAPI E_Desk *
e_desk_at_xy_get(E_Zone *zone, int x, int y)
{
E_OBJECT_CHECK_RETURN(zone, NULL);
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, NULL);
if ((x >= zone->desk_x_count) || (y >= zone->desk_y_count))
return NULL;
else if ((x < 0) || (y < 0))
return NULL;
return zone->desks[x + (y * zone->desk_x_count)];
}
/* local functions */
static void
_e_desk_cb_free(E_Desk *desk)
{
free(desk);
}