static void _e_shell_surface_mouse_down_helper(E_Client *ec, E_Binding_Event_Mouse_Button *ev, Eina_Bool move) { if (move) { /* tell E to start moving the client */ e_client_act_move_begin(ec, ev); /* we have to get a reference to the window_move action here, or else * when e_client stops the move we will never get notified */ ec->cur_mouse_action = e_action_find("window_move"); if (ec->cur_mouse_action) e_object_ref(E_OBJECT(ec->cur_mouse_action)); } else { /* tell E to start resizing the client */ e_client_act_resize_begin(ec, ev); /* we have to get a reference to the window_resize action here, * or else when e_client stops the resize we will never get notified */ ec->cur_mouse_action = e_action_find("window_resize"); if (ec->cur_mouse_action) e_object_ref(E_OBJECT(ec->cur_mouse_action)); } e_focus_event_mouse_down(ec); }
static void _e_int_menus_apps_drag(void *data, E_Menu *m, E_Menu_Item *mi) { E_Border *bd; bd = data; /* start drag! */ if (mi->icon_object) { E_Drag *drag; Evas_Object *o = NULL; Evas_Coord x, y, w, h; const char *drag_types[] = { "enlightenment/border" }; evas_object_geometry_get(mi->icon_object, &x, &y, &w, &h); drag = e_drag_new(m->zone->container, x, y, drag_types, 1, bd, -1, NULL, _itask_menu_cb_item_drag_finished); o = e_border_icon_add(bd, e_drag_evas_get(drag)); e_drag_object_set(drag, o); e_drag_resize(drag, w, h); e_object_ref(E_OBJECT(bd)); e_drag_start(drag, mi->drag.x + w, mi->drag.y + h); } }
EAPI void e_msg_send(const char *name, const char *info, int val, E_Object *obj, void *msgdata, void (*afterfunc)(void *data, E_Object *obj, void *msgdata), void *afterdata) { unsigned int size, pos, name_len, info_len; E_Msg_Event *ev; name_len = info_len = 0; size = sizeof(E_Msg_Event); if (name) name_len = strlen(name) + 1; if (info) info_len = strlen(info) + 1; ev = malloc(size + name_len + info_len); if (!ev) return; pos = size; if (name) { ev->name = ((char *)ev) + pos; pos += name_len; strcpy(ev->name, name); } if (info) { ev->info = ((char *)ev) + pos; strcpy(ev->info, info); } ev->val = val; ev->obj = obj; ev->msgdata = msgdata; ev->afterfunc = afterfunc; ev->afterdata = afterdata; if (ev->obj) e_object_ref(ev->obj); ecore_event_add(E_EVENT_MSG, ev, _e_msg_event_free, NULL); }
static int _client_item_add(Plugin *p, E_Client *ec) { Client_Item *bi; char buf[1024]; if (ec->netwm.state.skip_taskbar) return 0; if (ec->netwm.state.skip_pager) return 0; if (e_client_util_ignored_get(ec)) return 0; bi = EVRY_ITEM_NEW(Client_Item, p, e_client_util_name_get(ec), _icon_get, _client_item_free); snprintf(buf, sizeof(buf), "%d:%d %s", ec->desk->x, ec->desk->y, (ec->desktop ? ec->desktop->name : "")); EVRY_ITEM_DETAIL_SET(bi, buf); bi->client = ec; e_object_ref(E_OBJECT(ec)); p->clients = eina_list_append(p->clients, bi); return 1; }
static int _border_item_add(Plugin *p, E_Border *bd) { Border_Item *bi; char buf[1024]; if (bd->client.netwm.state.skip_taskbar) return 0; if (bd->client.netwm.state.skip_pager) return 0; bi = EVRY_ITEM_NEW(Border_Item, p, e_border_name_get(bd), _icon_get, _border_item_free); snprintf(buf, sizeof(buf), "%d:%d %s", bd->desk->x, bd->desk->y, (bd->desktop ? bd->desktop->name : "")); EVRY_ITEM_DETAIL_SET(bi, buf); bi->border = bd; e_object_ref(E_OBJECT(bd)); p->borders = eina_list_append(p->borders, bi); return 1; }
static void _itask_item_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info) { Evas_Event_Mouse_Move *ev; Itask_Item *ic; int dx, dy; ev = event_info; ic = data; if (!ic->drag.start) return; dx = ev->cur.output.x - ic->drag.x; dy = ev->cur.output.y - ic->drag.y; if (((dx * dx) + (dy * dy)) > (e_config->drag_resist * e_config->drag_resist)) { E_Drag *d; Evas_Object *o; Evas_Coord x, y, w, h; const char *drag_types[] = { "enlightenment/border" }; ic->drag.dnd = 1; ic->drag.start = 0; evas_object_geometry_get(ic->o_icon, &x, &y, &w, &h); d = e_drag_new(ic->itask->gcc->gadcon->zone->container, x, y, drag_types, 1, ic->border, -1, NULL, _itask_item_cb_drag_finished); o = e_border_icon_add(ic->border, e_drag_evas_get(d)); e_drag_object_set(d, o); e_drag_resize(d, w, h); e_drag_start(d, ic->drag.x, ic->drag.y); evas_event_feed_mouse_up(ic->itask->gcc->gadcon->evas, 1, EVAS_BUTTON_NONE, ecore_x_current_time_get(), NULL); e_object_ref(E_OBJECT(ic->border)); } }
EAPI E_Popup * e_popup_new(E_Zone *zone, int x, int y, int w, int h) { E_Popup *pop; pop = E_OBJECT_ALLOC(E_Popup, E_POPUP_TYPE, _e_popup_free); if (!pop) return NULL; pop->zone = zone; pop->x = x; pop->y = y; pop->w = w; pop->h = h; pop->layer = 250; pop->ecore_evas = e_canvas_new(pop->zone->container->win, pop->zone->x + pop->x, pop->zone->y + pop->y, pop->w, pop->h, 1, 1, &(pop->evas_win)); if (!pop->ecore_evas) { free(pop); return NULL; } /* avoid excess exposes when shaped - set damage avoid to 1 */ // ecore_evas_avoid_damage_set(pop->ecore_evas, 1); e_canvas_add(pop->ecore_evas); pop->shape = e_container_shape_add(pop->zone->container); e_container_shape_move(pop->shape, pop->zone->x + pop->x, pop->zone->y + pop->y); e_container_shape_resize(pop->shape, pop->w, pop->h); pop->evas = ecore_evas_get(pop->ecore_evas); e_container_window_raise(pop->zone->container, pop->evas_win, pop->layer); ecore_x_window_shape_events_select(pop->evas_win, 1); ecore_evas_name_class_set(pop->ecore_evas, "E", "_e_popup_window"); ecore_evas_title_set(pop->ecore_evas, "E Popup"); e_object_ref(E_OBJECT(pop->zone)); pop->zone->popups = eina_list_append(pop->zone->popups, pop); _e_popup_list = eina_list_append(_e_popup_list, pop); eina_hash_add(_e_popup_hash, e_util_winid_str_get(pop->evas_win), pop); return pop; }
void itask_item_new(Itask *it, E_Border *bd) { Itask_Item *ic; if (!itask_item_add_check(it, bd)) return; if (itask_item_find(it, bd)) return; e_object_ref(E_OBJECT(bd)); ic = E_NEW(Itask_Item, 1); ic->itask = it; ic->border = bd; ic->o_holder = edje_object_add(evas_object_evas_get(it->o_box)); if (!e_theme_edje_object_set(ic->o_holder, "base/theme/modules/itask", "e/modules/itask/button")) edje_object_file_set(ic->o_holder, itask_theme_path, "e/modules/itask/button"); if (it->ci->ibox_style) edje_object_signal_emit(ic->o_holder, "e,state,icon", "e"); else edje_object_signal_emit(ic->o_holder, "e,state,combo", "e"); itask_item_set_icon(ic); itask_item_set_label(ic); evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_DOWN, _itask_item_cb_mouse_down, ic); evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_UP, _itask_item_cb_mouse_up, ic); evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_MOVE, _itask_item_cb_mouse_move, ic); it->items = eina_list_append(it->items, ic); itask_update(ic->itask); }