forked from enlightenment/enlightenment
Now the ibar DnD should be right. Please?
SVN revision: 15235
This commit is contained in:
parent
ba48417863
commit
b4106b7fe5
|
@ -55,6 +55,7 @@ static void _ibar_bar_follower_reset(IBar_Bar *ibb);
|
||||||
static IBar_Icon *_ibar_icon_new(IBar_Bar *ibb, E_App *a);
|
static IBar_Icon *_ibar_icon_new(IBar_Bar *ibb, E_App *a);
|
||||||
static void _ibar_icon_free(IBar_Icon *ic);
|
static void _ibar_icon_free(IBar_Icon *ic);
|
||||||
static IBar_Icon *_ibar_icon_find(IBar_Bar *ibb, E_App *a);
|
static IBar_Icon *_ibar_icon_find(IBar_Bar *ibb, E_App *a);
|
||||||
|
static IBar_Icon *_ibar_icon_pos_find(IBar_Bar *ibb, int x, int y);
|
||||||
static void _ibar_icon_reorder_after(IBar_Icon *ic, IBar_Icon *after);
|
static void _ibar_icon_reorder_after(IBar_Icon *ic, IBar_Icon *after);
|
||||||
|
|
||||||
static void _ibar_bar_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
|
static void _ibar_bar_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
|
||||||
|
@ -727,6 +728,35 @@ _ibar_icon_find(IBar_Bar *ibb, E_App *a)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static IBar_Icon *
|
||||||
|
_ibar_icon_pos_find(IBar_Bar *ibb, int x, int y)
|
||||||
|
{
|
||||||
|
IBar_Icon *ic;
|
||||||
|
double pos, iw;
|
||||||
|
int w, h;
|
||||||
|
|
||||||
|
x = x - (ibb->x + ibb->bar_inset.l);
|
||||||
|
y = y - (ibb->y + ibb->bar_inset.t);
|
||||||
|
w = ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r);
|
||||||
|
h = ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b);
|
||||||
|
|
||||||
|
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
||||||
|
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
||||||
|
{
|
||||||
|
iw = w / (double) e_box_pack_count_get(ibb->box_object);
|
||||||
|
pos = x / iw;
|
||||||
|
}
|
||||||
|
else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
|
||||||
|
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
|
||||||
|
{
|
||||||
|
iw = h / (double) e_box_pack_count_get(ibb->box_object);
|
||||||
|
pos = y / iw;
|
||||||
|
}
|
||||||
|
|
||||||
|
ic = evas_list_nth(ibb->icons, pos);
|
||||||
|
return ic;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_ibar_config_menu_new(IBar *ib)
|
_ibar_config_menu_new(IBar *ib)
|
||||||
{
|
{
|
||||||
|
@ -1416,9 +1446,7 @@ _ibar_bar_cb_enter(void *data, const char *type, void *event)
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
IBar_Bar *ibb;
|
IBar_Bar *ibb;
|
||||||
IBar_Icon *ic;
|
IBar_Icon *ic;
|
||||||
Evas_Coord x, y, w, h;
|
int w, h;
|
||||||
double iw;
|
|
||||||
int pos;
|
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
ibb = data;
|
ibb = data;
|
||||||
|
@ -1428,24 +1456,10 @@ _ibar_bar_cb_enter(void *data, const char *type, void *event)
|
||||||
evas_object_color_set(o, 255, 0, 0, 255);
|
evas_object_color_set(o, 255, 0, 0, 255);
|
||||||
evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
|
evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
|
||||||
|
|
||||||
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
ic = _ibar_icon_pos_find(ibb, ev->x, ev->y);
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
|
||||||
{
|
|
||||||
iw = w / (double) e_box_pack_count_get(ibb->box_object);
|
|
||||||
pos = x / iw;
|
|
||||||
}
|
|
||||||
else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
|
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
|
|
||||||
{
|
|
||||||
iw = h / (double) e_box_pack_count_get(ibb->box_object);
|
|
||||||
pos = y / iw;
|
|
||||||
}
|
|
||||||
|
|
||||||
ic = evas_list_nth(ibb->icons, pos);
|
|
||||||
|
|
||||||
e_box_freeze(ibb->box_object);
|
e_box_freeze(ibb->box_object);
|
||||||
evas_object_show(ibb->drag_object);
|
evas_object_show(ibb->drag_object);
|
||||||
e_box_unpack(ibb->drag_object);
|
|
||||||
if (ic)
|
if (ic)
|
||||||
{
|
{
|
||||||
/* Add new eapp before this icon */
|
/* Add new eapp before this icon */
|
||||||
|
@ -1476,32 +1490,12 @@ _ibar_bar_cb_move(void *data, const char *type, void *event)
|
||||||
E_Event_Dnd_Move *ev;
|
E_Event_Dnd_Move *ev;
|
||||||
IBar_Bar *ibb;
|
IBar_Bar *ibb;
|
||||||
IBar_Icon *ic;
|
IBar_Icon *ic;
|
||||||
Evas_Coord x, y, w, h;
|
int w, h;
|
||||||
double iw;
|
|
||||||
int pos;
|
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
ibb = data;
|
ibb = data;
|
||||||
|
|
||||||
x = ev->x - (ibb->x + ibb->bar_inset.l);
|
ic = _ibar_icon_pos_find(ibb, ev->x, ev->y);
|
||||||
y = ev->y - (ibb->y + ibb->bar_inset.t);
|
|
||||||
w = ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r);
|
|
||||||
h = ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b);
|
|
||||||
|
|
||||||
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
|
||||||
{
|
|
||||||
iw = w / (double) e_box_pack_count_get(ibb->box_object);
|
|
||||||
pos = x / iw;
|
|
||||||
}
|
|
||||||
else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
|
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
|
|
||||||
{
|
|
||||||
iw = h / (double) e_box_pack_count_get(ibb->box_object);
|
|
||||||
pos = y / iw;
|
|
||||||
}
|
|
||||||
|
|
||||||
ic = evas_list_nth(ibb->icons, pos);
|
|
||||||
|
|
||||||
e_box_freeze(ibb->box_object);
|
e_box_freeze(ibb->box_object);
|
||||||
evas_object_show(ibb->drag_object);
|
evas_object_show(ibb->drag_object);
|
||||||
|
@ -1554,14 +1548,14 @@ _ibar_bar_cb_drop(void *data, const char *type, void *event)
|
||||||
E_App *app;
|
E_App *app;
|
||||||
IBar_Bar *ibb;
|
IBar_Bar *ibb;
|
||||||
IBar_Icon *ic;
|
IBar_Icon *ic;
|
||||||
Evas_Coord x, y, w, h;
|
|
||||||
double iw;
|
|
||||||
int pos;
|
|
||||||
|
|
||||||
ev = event;
|
ev = event;
|
||||||
ibb = data;
|
ibb = data;
|
||||||
app = ev->data;
|
app = ev->data;
|
||||||
|
|
||||||
|
/* add dropped element */
|
||||||
|
ic = _ibar_icon_pos_find(ibb, ev->x, ev->y);
|
||||||
|
|
||||||
/* remove drag marker */
|
/* remove drag marker */
|
||||||
e_box_freeze(ibb->box_object);
|
e_box_freeze(ibb->box_object);
|
||||||
e_box_unpack(ibb->drag_object);
|
e_box_unpack(ibb->drag_object);
|
||||||
|
@ -1570,26 +1564,6 @@ _ibar_bar_cb_drop(void *data, const char *type, void *event)
|
||||||
|
|
||||||
_ibar_bar_frame_resize(ibb);
|
_ibar_bar_frame_resize(ibb);
|
||||||
|
|
||||||
/* add dropped element */
|
|
||||||
x = ev->x - (ibb->x + ibb->bar_inset.l);
|
|
||||||
y = ev->y - (ibb->y + ibb->bar_inset.t);
|
|
||||||
w = ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r);
|
|
||||||
h = ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b);
|
|
||||||
|
|
||||||
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
|
||||||
{
|
|
||||||
iw = w / (double) evas_list_count(ibb->icons);
|
|
||||||
pos = x / iw;
|
|
||||||
}
|
|
||||||
else if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_LEFT) ||
|
|
||||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_RIGHT))
|
|
||||||
{
|
|
||||||
iw = h / (double) evas_list_count(ibb->icons);
|
|
||||||
pos = y / iw;
|
|
||||||
}
|
|
||||||
|
|
||||||
ic = evas_list_nth(ibb->icons, pos);
|
|
||||||
if (ic)
|
if (ic)
|
||||||
{
|
{
|
||||||
/* Add new eapp before this icon */
|
/* Add new eapp before this icon */
|
||||||
|
|
Loading…
Reference in New Issue