printf("Usage: enlightenment_info -desk\n");
}
+static void
+_e_info_client_proc_desk_group(int argc, char **argv)
+{
+ const int offset = 2, base_cmd_len = 1;
+ Eina_Bool res = EINA_FALSE;
+ int sub_cmd_len = 0;
+
+ if (argc < offset + base_cmd_len)
+ goto arg_err;
+
+ if (eina_streq(argv[offset], "info"))
+ {
+ res = _e_info_client_eldbus_message("desk_group_info", NULL);
+ }
+ else if (eina_streq(argv[offset], "enable"))
+ {
+ sub_cmd_len = 1;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ uint32_t enable;
+ enable = atoi(argv[offset+1]);
+
+ if (enable == 1 || enable == 0)
+ {
+ res = _e_info_client_eldbus_message_with_args("desk_group_enable", NULL, "i", enable);
+ }
+ }
+ else if (eina_streq(argv[offset], "make_sub1"))
+ {
+ sub_cmd_len = 5;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ int x, y, w, h, layer;
+
+ x = atoi(argv[offset + base_cmd_len]);
+ y = atoi(argv[offset + base_cmd_len + 1]);
+ w = atoi(argv[offset + base_cmd_len + 2]);
+ h = atoi(argv[offset + base_cmd_len + 3]);
+ layer = atoi(argv[offset + base_cmd_len + 4]);
+
+ res = _e_info_client_eldbus_message_with_args("desk_group_new_sub1", NULL, "iiiii", x, y, w, h, layer);
+ }
+ else if (eina_streq(argv[offset], "make_sub2"))
+ {
+ sub_cmd_len = 5;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ int x, y, w, h, layer;
+
+ x = atoi(argv[offset + base_cmd_len]);
+ y = atoi(argv[offset + base_cmd_len + 1]);
+ w = atoi(argv[offset + base_cmd_len + 2]);
+ h = atoi(argv[offset + base_cmd_len + 3]);
+ layer = atoi(argv[offset + base_cmd_len + 4]);
+
+ res = _e_info_client_eldbus_message_with_args("desk_group_new_sub2", NULL, "iiiii", x, y, w, h, layer);
+ }
+ else if (eina_streq(argv[offset], "remove_sub1"))
+ {
+ uint32_t id = 1;
+ res = _e_info_client_eldbus_message_with_args("desk_group_remove_sub", NULL, "i", id);
+ }
+ else if (eina_streq(argv[offset], "remove_sub2"))
+ {
+ uint32_t id = 2;
+ res = _e_info_client_eldbus_message_with_args("desk_group_remove_sub", NULL, "i", id);
+ }
+ else if (eina_streq(argv[offset], "raise_base"))
+ {
+ sub_cmd_len = 1;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ uint32_t raise;
+ raise = atoi(argv[offset+1]);
+
+ if (raise == 1 || raise == 0)
+ {
+ res = _e_info_client_eldbus_message_with_args("desk_group_base_raise", NULL, "i", raise);
+ }
+ }
+ else if (eina_streq(argv[offset], "raise_sub1"))
+ {
+ sub_cmd_len = 1;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ uint32_t raise;
+ raise = atoi(argv[offset+1]);
+
+ if (raise == 1 || raise == 0)
+ {
+ res = _e_info_client_eldbus_message_with_args("desk_group_sub1_raise", NULL, "i", raise);
+ }
+ }
+ else if (eina_streq(argv[offset], "raise_sub2"))
+ {
+ sub_cmd_len = 1;
+ if (argc < offset + base_cmd_len + sub_cmd_len)
+ goto arg_err;
+
+ uint32_t raise;
+ raise = atoi(argv[offset+1]);
+
+ if (raise == 1 || raise == 0)
+ {
+ res = _e_info_client_eldbus_message_with_args("desk_group_sub2_raise", NULL, "i", raise);
+ }
+ }
+ else if (eina_streq(argv[offset], "check_stack"))
+ {
+ res = _e_info_client_eldbus_message("desk_group_check_stack", NULL);
+ }
+
+ else
+ goto arg_err;
+
+ if (!res)
+ {
+ printf("_e_info_client_eldbus_message_with_args error");
+ return;
+ }
+
+ return;
+arg_err:
+ printf("Usage: enlightenment_info -desk_group -h\n");
+}
+
static void
_cb_buffer_shot(const Eldbus_Message *msg)
{
"apply filter option to windows",
_e_info_client_proc_apply_filter
},
+ {
+ "desk_group",
+ USAGE_DESK_GROUP,
+ "Get information or Enable/Disable functionality for desk group",
+ _e_info_client_proc_desk_group
+ },
};
ProcInfo procs_to_input[] =
return reply;
}
+static E_Desk_Group *_edg_sub1 = NULL;
+static E_Desk_Group *_edg_sub2 = NULL;
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_info(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ E_Zone *zone;
+ E_Desk *desk;
+
+ zone = e_zone_current_get();
+ desk = e_desk_current_get(zone);
+
+ e_desk_desk_group_info_print(desk);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_enable(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ uint32_t enable;
+
+ if (!eldbus_message_arguments_get(msg, "i", &enable))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ if (enable == 1)
+ {
+ e_desk_desk_group_enable(e_desk_current_get(e_zone_current_get()));
+ }
+ else if (enable == 0)
+ {
+ e_desk_desk_group_disable(e_desk_current_get(e_zone_current_get()));
+ }
+
+ return reply;
+}
+
+static void _desk_group_new(int sub_edg_id, int x, int y, int w, int h, int layer)
+{
+ E_Zone *zone;
+ E_Desk *desk;
+ E_Desk_Group_Layer edg_layer;
+
+ zone = e_zone_current_get();
+ desk = e_desk_current_get(zone);
+
+ switch (layer)
+ {
+ case 0: edg_layer = E_DESK_GROUP_LAYER_BACKGROUND; break;
+ case 1: edg_layer = E_DESK_GROUP_LAYER_NORMAL_BELOW; break;
+ case 2: edg_layer = E_DESK_GROUP_LAYER_NORMAL; break;
+ case 3: edg_layer = E_DESK_GROUP_LAYER_NORMAL_ABOVE; break;
+ case 4: edg_layer = E_DESK_GROUP_LAYER_NOTIFICATION_LOW; break;
+ case 5: edg_layer = E_DESK_GROUP_LAYER_NOTIFICATION_NORMAL; break;
+ case 6: edg_layer = E_DESK_GROUP_LAYER_NOTIFICATION_HIGH; break;
+ default: edg_layer = E_DESK_GROUP_LAYER_NORMAL; break;
+ }
+
+ if (sub_edg_id == 1)
+ {
+ if (!_edg_sub1)
+ _edg_sub1 = e_desk_desk_group_add(desk, x, y, w, h, edg_layer);
+ else
+ {
+ e_desk_group_geometry_set(_edg_sub1, x, y, w, h);
+ e_desk_group_layer_set(_edg_sub1, edg_layer);
+ }
+ }
+ else if (sub_edg_id == 2)
+ {
+ if (!_edg_sub2)
+ _edg_sub2 = e_desk_desk_group_add(desk, x, y, w, h, edg_layer);
+ else
+ {
+ e_desk_group_geometry_set(_edg_sub2, x, y, w, h);
+ e_desk_group_layer_set(_edg_sub2, edg_layer);
+ }
+ }
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_new_sub1(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ E_Client *ec;
+ int x, y, w, h;
+ int layer;
+ Eina_List*l;
+ Eina_List *ec_list = NULL;
+
+ if (!eldbus_message_arguments_get(msg, "iiiii", &x, &y, &w, &h, &layer))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ _desk_group_new(1, x, y, w, h, layer);
+
+ E_CLIENT_REVERSE_FOREACH(ec)
+ {
+ ec_list = eina_list_append(ec_list, ec);
+ }
+
+ EINA_LIST_REVERSE_FOREACH(ec_list, l, ec)
+ {
+ e_client_desk_group_set(ec, _edg_sub1);
+ }
+
+ //e_desk_group_all_ec_update(_edg_sub1);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_new_sub2(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ int x, y, w, h;
+ int layer;
+ E_Client *ec;
+
+ if (!eldbus_message_arguments_get(msg, "iiiii", &x, &y, &w, &h, &layer))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ _desk_group_new(2, x, y, w, h, layer);
+
+ E_CLIENT_FOREACH(ec)
+ {
+ if (e_policy_client_is_home_screen(ec))
+ e_client_desk_group_set(ec, _edg_sub2);
+ else if (e_policy_client_is_quickpanel(ec))
+ e_client_desk_group_set(ec, _edg_sub2);
+ }
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_remove_sub(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ uint32_t sub_edg_id;
+ E_Zone *zone;
+ E_Desk *desk;
+
+ if (!eldbus_message_arguments_get(msg, "i", &sub_edg_id))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ zone = e_zone_current_get();
+ desk = e_desk_current_get(zone);
+
+ if (sub_edg_id == 1)
+ {
+ e_desk_desk_group_del(desk, _edg_sub1);
+ _edg_sub1 = NULL;
+ }
+ else if (sub_edg_id == 2)
+ {
+ e_desk_desk_group_del(desk, _edg_sub2);
+ _edg_sub2 = NULL;
+ }
+
+ return reply;
+}
+
+static void
+_desk_group_raise(E_Desk_Group *edg, uint32_t raise)
+{
+ E_Zone *zone;
+ E_Desk *desk;
+
+ zone = e_zone_current_get();
+ desk = e_desk_current_get(zone);
+ if (!desk) return;
+
+ if (!edg)
+ edg = desk->desk_group.base;
+
+ if (edg)
+ {
+ if (raise == 1)
+ {
+ //e_desk_group_raise(edg);
+ e_desk_desk_group_raise(edg->desk, edg);
+ }
+ else if (raise == 0)
+ {
+ //e_desk_group_lower(edg);
+ e_desk_desk_group_lower(edg->desk, edg);
+ }
+ }
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_base_raise(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ uint32_t raise;
+
+ if (!eldbus_message_arguments_get(msg, "i", &raise))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ _desk_group_raise(NULL, raise);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_sub1_raise(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ uint32_t raise;
+
+ if (!eldbus_message_arguments_get(msg, "i", &raise))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ if (_edg_sub1)
+ _desk_group_raise(_edg_sub1, raise);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_sub2_raise(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ uint32_t raise;
+
+ if (!eldbus_message_arguments_get(msg, "i", &raise))
+ {
+ ERR("Error getting arguments.");
+ return reply;
+ }
+
+ if (_edg_sub2)
+ _desk_group_raise(_edg_sub2, raise);
+
+ return reply;
+}
+
+static Eldbus_Message *
+_e_info_server_cb_desk_group_check_stack(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+ Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+ E_Zone *zone;
+ E_Desk *desk;
+ E_Desk_Group *edg = NULL;
+ Eina_List *l;
+ Eina_List *ll;
+ Eina_List *edg_ecs_list = NULL;
+ E_Client *ec;
+ E_Client *edg_ec;
+ Evas_Object *o;
+ int i, j;
+ Eina_Bool mis_match = EINA_FALSE;
+
+ zone = e_zone_current_get();
+ desk = e_desk_current_get(zone);
+
+ if (!desk->desk_group.enable)
+ {
+ ELOGF("EDG_TEST", "Desk_Group is not enable... return", NULL);
+ return reply;
+ }
+
+ for (i=E_DESK_GROUP_LAYER_COUNT-1; i>=0; i--)
+ {
+ EINA_LIST_FOREACH(desk->desk_group.list[i], l, edg)
+ {
+ for (j=E_DESK_GROUP_CLIENT_LAYER_MAX-1; j>=0; j--)
+ {
+ EINA_LIST_FOREACH(edg->ec_lists[j], ll, edg_ec)
+ {
+ edg_ecs_list = eina_list_append(edg_ecs_list, edg_ec);
+ }
+ }
+ }
+ }
+
+ for (o = evas_object_top_get(e_comp->evas); o; o = evas_object_below_get(o))
+ {
+ ec = evas_object_data_get(o, "E_Client");
+ if (!ec) continue;
+
+ edg_ec = eina_list_nth(edg_ecs_list, 0);
+ if (edg_ec != ec)
+ {
+ ELOGF("EDG_TEST", "BAD.BAD.BAD... NOT MATCHED!!! edg_ec(win:0x%08zx, ec:%p)", ec, e_client_util_win_get(edg_ec), edg_ec);
+ mis_match = EINA_TRUE;
+ }
+ edg_ecs_list = eina_list_remove(edg_ecs_list, edg_ec);
+ }
+
+ if (!mis_match)
+ ELOGF("EDG_TEST", "No error. STACK is MATCHED!!!", NULL);
+ else
+ ELOGF("EDG_TEST", "Error. STACK is NOT MATCHED!!!", NULL);
+
+ return reply;
+}
+
static Eina_Bool
_e_info_server_cb_buffer_change(void *data, int type, void *event)
{
{ "slot_message", ELDBUS_ARGS({"iiiiii", "slot_message"}), ELDBUS_ARGS({"a(ss)", "array of ec"}), e_info_server_cb_slot_message, 0},
{ "desktop_geometry_set", ELDBUS_ARGS({"iiii", "Geometry"}), NULL, _e_info_server_cb_desktop_geometry_set, 0},
{ "desk_zoom", ELDBUS_ARGS({"ddii", "Zoom"}), NULL, _e_info_server_cb_desk_zoom, 0},
+ { "desk_group_info", NULL, NULL, _e_info_server_cb_desk_group_info, 0},
+ { "desk_group_enable", ELDBUS_ARGS({"i", "enable"}), NULL, _e_info_server_cb_desk_group_enable, 0},
+ { "desk_group_new_sub1", ELDBUS_ARGS({"iiiii", "geometry"}), NULL, _e_info_server_cb_desk_group_new_sub1, 0},
+ { "desk_group_new_sub2", ELDBUS_ARGS({"iiiii", "geometry"}), NULL, _e_info_server_cb_desk_group_new_sub2, 0},
+ { "desk_group_remove_sub", ELDBUS_ARGS({"i", "sub_id"}), NULL, _e_info_server_cb_desk_group_remove_sub, 0},
+ { "desk_group_base_raise", ELDBUS_ARGS({"i", "raise"}), NULL, _e_info_server_cb_desk_group_base_raise, 0},
+ { "desk_group_sub1_raise", ELDBUS_ARGS({"i", "raise"}), NULL, _e_info_server_cb_desk_group_sub1_raise, 0},
+ { "desk_group_sub2_raise", ELDBUS_ARGS({"i", "raise"}), NULL, _e_info_server_cb_desk_group_sub2_raise, 0},
+ { "desk_group_check_stack", NULL, NULL, _e_info_server_cb_desk_group_check_stack, 0},
{ "frender", ELDBUS_ARGS({"i", "frender"}), ELDBUS_ARGS({"s", "force_render_result"}), _e_info_server_cb_force_render, 0},
{ "screen_rotation_pre", ELDBUS_ARGS({"i", "value"}), NULL, _e_info_server_cb_screen_rotation_pre, 0},
{ "screen_rotation", ELDBUS_ARGS({"i", "value"}), NULL, _e_info_server_cb_screen_rotation, 0},