fix xdnd again.

SVN revision: 32774
This commit is contained in:
Carsten Haitzler 2007-11-19 11:38:43 +00:00
parent a57b627c3e
commit f8fa4e0156
1 changed files with 6 additions and 3 deletions

View File

@ -196,6 +196,8 @@ e_drag_new(E_Container *container, int x, int y,
ecore_x_window_shadow_tree_flush(); ecore_x_window_shadow_tree_flush();
_drag_win_root = drag->container->manager->root;
return drag; return drag;
} }
@ -249,7 +251,7 @@ e_drag_start(E_Drag *drag, int x, int y)
_drag_win = ecore_x_window_input_new(drag->container->win, _drag_win = ecore_x_window_input_new(drag->container->win,
drag->container->x, drag->container->y, drag->container->x, drag->container->y,
drag->container->w, drag->container->h); drag->container->w, drag->container->h);
_drag_win_root = ecore_x_window_root_get(_drag_win); _drag_win_root= drag->container->manager->root;
ecore_x_window_show(_drag_win); ecore_x_window_show(_drag_win);
if (!e_grabinput_get(_drag_win, 1, _drag_win)) if (!e_grabinput_get(_drag_win, 1, _drag_win))
{ {
@ -803,7 +805,6 @@ _e_drag_end(Ecore_X_Window root, int x, int y)
ecore_x_window_del(_drag_win); ecore_x_window_del(_drag_win);
_drag_win = 0; _drag_win = 0;
} }
if (_drag_current->cb.finished) if (_drag_current->cb.finished)
_drag_current->cb.finished(_drag_current, dropped); _drag_current->cb.finished(_drag_current, dropped);
@ -1014,6 +1015,7 @@ _e_dnd_cb_mouse_move(void *data, int type, void *event)
if (ev->win != _drag_win) return 1; if (ev->win != _drag_win) return 1;
_e_drag_update(_drag_win_root, ev->x, ev->y); _e_drag_update(_drag_win_root, ev->x, ev->y);
return 1; return 1;
} }
@ -1226,7 +1228,7 @@ _e_dnd_cb_event_dnd_drop(void *data, int type, void *event)
ev = event; ev = event;
id = e_util_winid_str_get(ev->win); id = e_util_winid_str_get(ev->win);
if (!evas_hash_find(_drop_win_hash, id)) return 1; if (!evas_hash_find(_drop_win_hash, id)) return 1;
printf("Xdnd drop\n"); printf("Xdnd drop %x %s\n", ev->win, _xdnd->type);
ecore_x_selection_xdnd_request(ev->win, _xdnd->type); ecore_x_selection_xdnd_request(ev->win, _xdnd->type);
@ -1258,6 +1260,7 @@ _e_dnd_cb_event_dnd_selection(void *data, int type, void *event)
for (i = 0; i < files->num_files; i++) for (i = 0; i < files->num_files; i++)
l = evas_list_append(l, files->files[i]), printf("file: %s\n", files->files[i]); l = evas_list_append(l, files->files[i]), printf("file: %s\n", files->files[i]);
_xdnd->data = l; _xdnd->data = l;
printf("_drag_win_root = %x\n", _drag_win_root);
_e_drag_xdnd_end(_drag_win_root, _xdnd->x, _xdnd->y); _e_drag_xdnd_end(_drag_win_root, _xdnd->x, _xdnd->y);
evas_list_free(l); evas_list_free(l);
} }