Dnd is relative to the background evas/modules, so feed a new drag

with container, not zone.


SVN revision: 14701
This commit is contained in:
sebastid 2005-05-10 22:05:02 +00:00 committed by sebastid
parent eb907d88ac
commit 6fd2d5fe41
5 changed files with 24 additions and 30 deletions

View File

@ -2492,7 +2492,7 @@ _e_border_cb_mouse_move(void *data, int type, void *event)
E_Drag *drag;
Evas_Coord w, h;
drag = e_drag_new(bd->zone,
drag = e_drag_new(bd->zone->container,
"enlightenment/border", bd,
NULL,
a->path, "icon");

View File

@ -3,11 +3,6 @@
*/
#include "e.h"
/*
* TODO:
* - check with multiple zones!
*/
/* local subsystem functions */
static void _e_drag_free(E_Drag *drag);
@ -120,7 +115,7 @@ e_dnd_shutdown(void)
}
E_Drag*
e_drag_new(E_Zone *zone,
e_drag_new(E_Container *container,
const char *type, void *data,
void (*finished_cb)(E_Drag *drag, int dropped),
const char *icon_path, const char *icon)
@ -135,14 +130,14 @@ e_drag_new(E_Zone *zone,
drag->w = 24;
drag->h = 24;
drag->layer = 250;
drag->zone = zone;
drag->container = container;
e_object_ref(E_OBJECT(drag->container));
if (e_canvas_engine_decide(e_config->evas_engine_drag) ==
E_EVAS_ENGINE_GL_X11)
{
drag->ecore_evas = ecore_evas_gl_x11_new(NULL,
drag->zone->container->win,
drag->zone->x + drag->x,
drag->zone->y + drag->y,
drag->container->win,
drag->x, drag->y,
drag->w, drag->h);
ecore_evas_gl_x11_direct_resize_set(drag->ecore_evas, 1);
drag->evas_win = ecore_evas_gl_x11_window_get(drag->ecore_evas);
@ -150,24 +145,22 @@ e_drag_new(E_Zone *zone,
else
{
drag->ecore_evas = ecore_evas_software_x11_new(NULL,
drag->zone->container->win,
drag->zone->x + drag->x,
drag->zone->y + drag->y,
drag->container->win,
drag->x, drag->y,
drag->w, drag->h);
ecore_evas_software_x11_direct_resize_set(drag->ecore_evas, 1);
drag->evas_win = ecore_evas_software_x11_window_get(drag->ecore_evas);
}
e_canvas_add(drag->ecore_evas);
drag->shape = e_container_shape_add(drag->zone->container);
e_container_shape_move(drag->shape, drag->zone->x + drag->x, drag->zone->y + drag->y);
drag->shape = e_container_shape_add(drag->container);
e_container_shape_move(drag->shape, drag->x, drag->y);
e_container_shape_resize(drag->shape, drag->w, drag->h);
drag->evas = ecore_evas_get(drag->ecore_evas);
e_container_window_raise(drag->zone->container, drag->evas_win, drag->layer);
e_container_window_raise(drag->container, drag->evas_win, drag->layer);
ecore_x_window_shape_events_select(drag->evas_win, 1);
ecore_evas_name_class_set(drag->ecore_evas, "E", "_e_drag_window");
ecore_evas_title_set(drag->ecore_evas, "E Drag");
e_object_ref(E_OBJECT(drag->zone));
ecore_evas_shaped_set(drag->ecore_evas, 1);
@ -211,11 +204,11 @@ e_drag_move(E_Drag *drag, int x, int y)
drag->x = x;
drag->y = y;
ecore_evas_move(drag->ecore_evas,
drag->zone->x + drag->x,
drag->zone->y + drag->y);
drag->x,
drag->y);
e_container_shape_move(drag->shape,
drag->zone->x + drag->x,
drag->zone->y + drag->y);
drag->x,
drag->y);
}
void
@ -239,9 +232,9 @@ e_drag_start(E_Drag *drag)
{
Evas_List *l;
_drag_win = ecore_x_window_input_new(drag->zone->container->win,
drag->zone->container->x, drag->zone->container->y,
drag->zone->container->w, drag->zone->container->h);
_drag_win = ecore_x_window_input_new(drag->container->win,
drag->container->x, drag->container->y,
drag->container->w, drag->container->h);
ecore_x_window_show(_drag_win);
ecore_x_pointer_confine_grab(_drag_win);
ecore_x_keyboard_grab(_drag_win);
@ -405,7 +398,7 @@ _e_drag_free(E_Drag *drag)
{
_draggies = evas_list_remove(_draggies, drag);
e_object_unref(E_OBJECT(drag->zone));
e_object_unref(E_OBJECT(drag->container));
evas_object_del(drag->object);
e_canvas_del(drag->ecore_evas);
ecore_evas_free(drag->ecore_evas);

View File

@ -26,7 +26,7 @@ struct _E_Drag
struct {
void (*finished)(E_Drag *drag, int dropped);
} cb;
E_Zone *zone;
E_Container *container;
Ecore_Evas *ecore_evas;
Evas *evas;
Ecore_X_Window evas_win;
@ -85,7 +85,7 @@ EAPI int e_dnd_shutdown(void);
EAPI int e_dnd_active(void);
EAPI E_Drag* e_drag_new(E_Zone *zone, const char *type, void *data,
EAPI E_Drag* e_drag_new(E_Container *container, const char *type, void *data,
void (*finished_cb)(E_Drag *drag, int dropped),
const char *icon_path, const char *icon);
EAPI void e_drag_show(E_Drag *drag);

View File

@ -16,7 +16,8 @@ static Evas_List *_e_popup_list = NULL;
int
e_popup_init(void)
{
_e_popup_window_shape_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHAPE, _e_popup_cb_window_shape, NULL);
_e_popup_window_shape_handler = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHAPE,
_e_popup_cb_window_shape, NULL);
return 1;
}

View File

@ -1249,7 +1249,7 @@ _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info
drag = 1;
drag_start = 0;
d = e_drag_new(e_zone_current_get(ic->ibb->con),
d = e_drag_new(ic->ibb->con,
"enlightenment/eapp", ic->app, _ibar_bar_cb_finished,
ic->app->path, "icon");
e_drag_resize(d, ic->ibb->ibar->conf->iconsize, ic->ibb->ibar->conf->iconsize);