e_service_taskbar_size_set(ec, width, height);
}
+static void
+_tzsh_srv_taskbar_cb_auto_placement_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t auto_placement)
+{
+ E_Policy_Wl_Tzsh_Srv *tzsh_srv;
+ E_Client *ec;
+
+ tzsh_srv = wl_resource_get_user_data(resource);
+ EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+ EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+ ec = tzsh_srv->ec;
+ EINA_SAFETY_ON_NULL_RETURN(ec);
+
+ e_service_taskbar_auto_placement_set(ec, auto_placement);
+}
+
static const struct tws_service_taskbar_interface _tzsh_srv_taskbar_iface =
{
_tzsh_srv_taskbar_cb_destroy,
_tzsh_srv_taskbar_cb_place_type_set,
_tzsh_srv_taskbar_cb_size_set,
+ _tzsh_srv_taskbar_cb_auto_placement_set,
};
static void
#include <wayland-server.h>
#include <tzsh_server.h>
+static void _e_service_taskbar_update(E_Service_Taskbar *taskbar_service);
+
/* private data for taskbar */
static E_Service_Taskbar *_taskbar_service = NULL;
taskbar_service->ec, taskbar_service, taskbar_service->zone, ev->zone);
taskbar_service->zone = ev->zone;
+ _e_service_taskbar_update(taskbar_service);
end:
return ECORE_CALLBACK_PASS_ON;
Eina_Bool vertical;
E_Client *ec;
- if (!taskbar_service) return;
+ if (!taskbar_service->ec) return;
+ if (!taskbar_service->zone) return;
ec = taskbar_service->ec;
vertical = EINA_TRUE;
}
- e_client_util_move_without_frame(ec, taskbar_service->x, taskbar_service->y);
+ if (taskbar_service->auto_placement == EINA_TRUE)
+ e_client_util_move_without_frame(ec, taskbar_service->x, taskbar_service->y);
+
e_zone_obstacle_update(taskbar_service->zone, ec,
&(Eina_Rectangle){taskbar_service->x, taskbar_service->y, taskbar_service->w, taskbar_service->h},
vertical);
_e_service_taskbar_update(_taskbar_service);
return EINA_TRUE;
}
+
+EINTERN Eina_Bool
+e_service_taskbar_auto_placement_set(E_Client *ec, Eina_Bool set)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(_taskbar_service, EINA_FALSE);
+
+ ELOGF("TASKBAR", "Set Auto Placement to %d", ec, set);
+
+ if (ec != _taskbar_service->ec)
+ {
+ ELOGF("TASKBAR", "ERROR... Taskbar ec is not matched...regisered(%p)..", ec, _taskbar_service->ec);
+ return EINA_FALSE;
+ }
+
+ if (set == _taskbar_service->auto_placement)
+ return EINA_TRUE;
+
+ _taskbar_service->auto_placement = set;
+ _e_service_taskbar_update(_taskbar_service);
+
+ return EINA_TRUE;
+}
int place_type;
int x, y;
unsigned int w, h;
+ Eina_Bool auto_placement;
};
EINTERN Eina_Bool e_service_taskbar_client_set(E_Client *ec);
EINTERN E_Client *e_service_taskbar_client_get(void);
EINTERN Eina_Bool e_service_taskbar_place_type_set(E_Client *ec, int type);
EINTERN Eina_Bool e_service_taskbar_size_set(E_Client *ec, unsigned int w, unsigned int h);
+EINTERN Eina_Bool e_service_taskbar_auto_placement_set(E_Client *ec, Eina_Bool set);
#endif /* E_SERVICE_TASKBAR_H */