Add some trapping to gadcon for doing drags. This is needed because toolbar

gadcon does not have zone->container.


SVN revision: 32522
This commit is contained in:
Christopher Michael 2007-11-09 20:34:55 +00:00
parent 90163254fd
commit bf03226559
1 changed files with 19 additions and 13 deletions

View File

@ -1543,21 +1543,27 @@ _e_gadcon_client_drag_begin(E_Gadcon_Client *gcc, int x, int y)
if (!e_drop_inside(gcc->gadcon->drop_handler, x, y))
e_gadcon_client_hide(gcc);
drag = e_drag_new(gcc->gadcon->zone->container, gcc->drag.x, gcc->drag.y,
drag_types, 1, gcc, -1, NULL, _e_gadcon_cb_drag_finished);
o = gcc->client_class->func.icon(drag->evas);
evas_object_geometry_get(o, NULL, NULL, &w, &h);
if (!o)
if ((gcc->gadcon->zone) && (gcc->gadcon->zone->container))
{
/* FIXME: fallback icon for drag */
o = evas_object_rectangle_add(drag->evas);
evas_object_color_set(o, 255, 255, 255, 255);
drag = e_drag_new(gcc->gadcon->zone->container, gcc->drag.x, gcc->drag.y,
drag_types, 1, gcc, -1, NULL,
_e_gadcon_cb_drag_finished);
if (drag)
{
o = gcc->client_class->func.icon(drag->evas);
evas_object_geometry_get(o, NULL, NULL, &w, &h);
if (!o)
{
/* FIXME: fallback icon for drag */
o = evas_object_rectangle_add(drag->evas);
evas_object_color_set(o, 255, 255, 255, 255);
}
e_drag_object_set(drag, o);
e_drag_move(drag, gcc->drag.x - w/2, gcc->drag.y - h/2);
e_drag_resize(drag, w, h);
e_drag_start(drag, gcc->drag.x, gcc->drag.y);
}
}
e_drag_object_set(drag, o);
e_drag_move(drag, gcc->drag.x - w/2, gcc->drag.y - h/2);
e_drag_resize(drag, w, h);
e_drag_start(drag, gcc->drag.x, gcc->drag.y);
e_util_evas_fake_mouse_up_later(gcc->gadcon->evas, 1);
}