forked from enlightenment/enlightenment
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:
parent
eb907d88ac
commit
6fd2d5fe41
|
@ -2492,7 +2492,7 @@ _e_border_cb_mouse_move(void *data, int type, void *event)
|
||||||
E_Drag *drag;
|
E_Drag *drag;
|
||||||
Evas_Coord w, h;
|
Evas_Coord w, h;
|
||||||
|
|
||||||
drag = e_drag_new(bd->zone,
|
drag = e_drag_new(bd->zone->container,
|
||||||
"enlightenment/border", bd,
|
"enlightenment/border", bd,
|
||||||
NULL,
|
NULL,
|
||||||
a->path, "icon");
|
a->path, "icon");
|
||||||
|
|
|
@ -3,11 +3,6 @@
|
||||||
*/
|
*/
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* TODO:
|
|
||||||
* - check with multiple zones!
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
|
|
||||||
static void _e_drag_free(E_Drag *drag);
|
static void _e_drag_free(E_Drag *drag);
|
||||||
|
@ -120,7 +115,7 @@ e_dnd_shutdown(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
E_Drag*
|
E_Drag*
|
||||||
e_drag_new(E_Zone *zone,
|
e_drag_new(E_Container *container,
|
||||||
const char *type, void *data,
|
const char *type, void *data,
|
||||||
void (*finished_cb)(E_Drag *drag, int dropped),
|
void (*finished_cb)(E_Drag *drag, int dropped),
|
||||||
const char *icon_path, const char *icon)
|
const char *icon_path, const char *icon)
|
||||||
|
@ -135,14 +130,14 @@ e_drag_new(E_Zone *zone,
|
||||||
drag->w = 24;
|
drag->w = 24;
|
||||||
drag->h = 24;
|
drag->h = 24;
|
||||||
drag->layer = 250;
|
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) ==
|
if (e_canvas_engine_decide(e_config->evas_engine_drag) ==
|
||||||
E_EVAS_ENGINE_GL_X11)
|
E_EVAS_ENGINE_GL_X11)
|
||||||
{
|
{
|
||||||
drag->ecore_evas = ecore_evas_gl_x11_new(NULL,
|
drag->ecore_evas = ecore_evas_gl_x11_new(NULL,
|
||||||
drag->zone->container->win,
|
drag->container->win,
|
||||||
drag->zone->x + drag->x,
|
drag->x, drag->y,
|
||||||
drag->zone->y + drag->y,
|
|
||||||
drag->w, drag->h);
|
drag->w, drag->h);
|
||||||
ecore_evas_gl_x11_direct_resize_set(drag->ecore_evas, 1);
|
ecore_evas_gl_x11_direct_resize_set(drag->ecore_evas, 1);
|
||||||
drag->evas_win = ecore_evas_gl_x11_window_get(drag->ecore_evas);
|
drag->evas_win = ecore_evas_gl_x11_window_get(drag->ecore_evas);
|
||||||
|
@ -150,24 +145,22 @@ e_drag_new(E_Zone *zone,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
drag->ecore_evas = ecore_evas_software_x11_new(NULL,
|
drag->ecore_evas = ecore_evas_software_x11_new(NULL,
|
||||||
drag->zone->container->win,
|
drag->container->win,
|
||||||
drag->zone->x + drag->x,
|
drag->x, drag->y,
|
||||||
drag->zone->y + drag->y,
|
|
||||||
drag->w, drag->h);
|
drag->w, drag->h);
|
||||||
ecore_evas_software_x11_direct_resize_set(drag->ecore_evas, 1);
|
ecore_evas_software_x11_direct_resize_set(drag->ecore_evas, 1);
|
||||||
drag->evas_win = ecore_evas_software_x11_window_get(drag->ecore_evas);
|
drag->evas_win = ecore_evas_software_x11_window_get(drag->ecore_evas);
|
||||||
}
|
}
|
||||||
e_canvas_add(drag->ecore_evas);
|
e_canvas_add(drag->ecore_evas);
|
||||||
drag->shape = e_container_shape_add(drag->zone->container);
|
drag->shape = e_container_shape_add(drag->container);
|
||||||
e_container_shape_move(drag->shape, drag->zone->x + drag->x, drag->zone->y + drag->y);
|
e_container_shape_move(drag->shape, drag->x, drag->y);
|
||||||
e_container_shape_resize(drag->shape, drag->w, drag->h);
|
e_container_shape_resize(drag->shape, drag->w, drag->h);
|
||||||
|
|
||||||
drag->evas = ecore_evas_get(drag->ecore_evas);
|
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_x_window_shape_events_select(drag->evas_win, 1);
|
||||||
ecore_evas_name_class_set(drag->ecore_evas, "E", "_e_drag_window");
|
ecore_evas_name_class_set(drag->ecore_evas, "E", "_e_drag_window");
|
||||||
ecore_evas_title_set(drag->ecore_evas, "E Drag");
|
ecore_evas_title_set(drag->ecore_evas, "E Drag");
|
||||||
e_object_ref(E_OBJECT(drag->zone));
|
|
||||||
|
|
||||||
ecore_evas_shaped_set(drag->ecore_evas, 1);
|
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->x = x;
|
||||||
drag->y = y;
|
drag->y = y;
|
||||||
ecore_evas_move(drag->ecore_evas,
|
ecore_evas_move(drag->ecore_evas,
|
||||||
drag->zone->x + drag->x,
|
drag->x,
|
||||||
drag->zone->y + drag->y);
|
drag->y);
|
||||||
e_container_shape_move(drag->shape,
|
e_container_shape_move(drag->shape,
|
||||||
drag->zone->x + drag->x,
|
drag->x,
|
||||||
drag->zone->y + drag->y);
|
drag->y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -239,9 +232,9 @@ e_drag_start(E_Drag *drag)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
||||||
_drag_win = ecore_x_window_input_new(drag->zone->container->win,
|
_drag_win = ecore_x_window_input_new(drag->container->win,
|
||||||
drag->zone->container->x, drag->zone->container->y,
|
drag->container->x, drag->container->y,
|
||||||
drag->zone->container->w, drag->zone->container->h);
|
drag->container->w, drag->container->h);
|
||||||
ecore_x_window_show(_drag_win);
|
ecore_x_window_show(_drag_win);
|
||||||
ecore_x_pointer_confine_grab(_drag_win);
|
ecore_x_pointer_confine_grab(_drag_win);
|
||||||
ecore_x_keyboard_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);
|
_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);
|
evas_object_del(drag->object);
|
||||||
e_canvas_del(drag->ecore_evas);
|
e_canvas_del(drag->ecore_evas);
|
||||||
ecore_evas_free(drag->ecore_evas);
|
ecore_evas_free(drag->ecore_evas);
|
||||||
|
|
|
@ -26,7 +26,7 @@ struct _E_Drag
|
||||||
struct {
|
struct {
|
||||||
void (*finished)(E_Drag *drag, int dropped);
|
void (*finished)(E_Drag *drag, int dropped);
|
||||||
} cb;
|
} cb;
|
||||||
E_Zone *zone;
|
E_Container *container;
|
||||||
Ecore_Evas *ecore_evas;
|
Ecore_Evas *ecore_evas;
|
||||||
Evas *evas;
|
Evas *evas;
|
||||||
Ecore_X_Window evas_win;
|
Ecore_X_Window evas_win;
|
||||||
|
@ -85,7 +85,7 @@ EAPI int e_dnd_shutdown(void);
|
||||||
|
|
||||||
EAPI int e_dnd_active(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),
|
void (*finished_cb)(E_Drag *drag, int dropped),
|
||||||
const char *icon_path, const char *icon);
|
const char *icon_path, const char *icon);
|
||||||
EAPI void e_drag_show(E_Drag *drag);
|
EAPI void e_drag_show(E_Drag *drag);
|
||||||
|
|
|
@ -16,7 +16,8 @@ static Evas_List *_e_popup_list = NULL;
|
||||||
int
|
int
|
||||||
e_popup_init(void)
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1249,7 +1249,7 @@ _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info
|
||||||
drag = 1;
|
drag = 1;
|
||||||
drag_start = 0;
|
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,
|
"enlightenment/eapp", ic->app, _ibar_bar_cb_finished,
|
||||||
ic->app->path, "icon");
|
ic->app->path, "icon");
|
||||||
e_drag_resize(d, ic->ibb->ibar->conf->iconsize, ic->ibb->ibar->conf->iconsize);
|
e_drag_resize(d, ic->ibb->ibar->conf->iconsize, ic->ibb->ibar->conf->iconsize);
|
||||||
|
|
Loading…
Reference in New Issue