Example #1
0
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);
}
Example #2
0
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);
     }
}
Example #3
0
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;
}
Example #5
0
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;
}
Example #6
0
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));
     }
}
Example #7
0
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;
}
Example #8
0
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);
}