static void _il_ind_win_cb_free(Il_Ind_Win *iwin);
static void _il_ind_win_cb_resize(E_Win *ewin);
static void _il_ind_win_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event);
+static void _il_ind_win_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event);
+static void _il_ind_win_cb_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event);
static int _il_ind_win_gadcon_client_add(void *data, const E_Gadcon_Client_Class *cc);
static void _il_ind_win_gadcon_client_del(void *data, E_Gadcon_Client *gcc);
static void _il_ind_win_gadcon_min_size_request(void *data, E_Gadcon *gc, Evas_Coord w, Evas_Coord h);
evas_object_resize(iwin->o_event, zone->w, 32);
evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_DOWN,
_il_ind_win_cb_mouse_down, iwin);
+ evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_UP,
+ _il_ind_win_cb_mouse_up, iwin);
+ evas_object_event_callback_add(iwin->o_event, EVAS_CALLBACK_MOUSE_MOVE,
+ _il_ind_win_cb_mouse_move, iwin);
evas_object_show(iwin->o_event);
evas_object_layer_set(iwin->o_event, 200);
if (!(iwin = data)) return;
ev = event;
- if (ev->button == 3)
+ if (ev->button == 1)
+ {
+ iwin->drag.x = ev->output.x;
+ iwin->drag.y = ev->output.y;
+ iwin->drag.start = 1;
+ iwin->drag.dnd = 0;
+ }
+ else if (ev->button == 3)
{
E_Menu *mn;
E_Zone *zone;
}
}
+static void
+_il_ind_win_cb_mouse_up(void *data, Evas *evas, Evas_Object *obj, void *event)
+{
+ Il_Ind_Win *iwin;
+ Evas_Event_Mouse_Up *ev;
+
+ if (!(iwin = data)) return;
+ ev = event;
+ if ((ev->button == 1) && (!iwin->drag.dnd))
+ {
+ iwin->drag.start = 0;
+ iwin->drag.dnd = 0;
+ }
+}
+
+static void
+_il_ind_win_cb_mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event)
+{
+ Il_Ind_Win *iwin;
+ Evas_Event_Mouse_Move *ev;
+ int dx, dy;
+
+ if (!(iwin = data)) return;
+ ev = event;
+ if (!iwin->drag.start) return;
+ dx = ev->cur.output.x - iwin->drag.x;
+ dy = ev->cur.output.y - iwin->drag.y;
+ if (((dx * dx) + (dy * dy)) >
+ (e_config->drag_resist * e_config->drag_resist))
+ {
+ E_Drag *d;
+ Evas *evas;
+ Evas_Object *o;
+ int x, y, w, h;
+ const char *drag_types[] = { "illume/indicator" };
+
+ iwin->drag.dnd = 1;
+ iwin->drag.start = 0;
+ x = iwin->win->x;
+ y = iwin->win->y;
+ w = iwin->win->w;
+ h = iwin->win->h;
+
+ d = e_drag_new(iwin->win->container, x, y, drag_types,
+ 1, iwin->win, -1, NULL, NULL);
+
+ evas = e_drag_evas_get(d);
+ o = edje_object_add(evas);
+ if (!e_theme_edje_object_set(o, "base/theme/modules/illume-indicator",
+ "modules/illume-indicator/shelf"))
+ {
+ char buff[PATH_MAX];
+
+ snprintf(buff, sizeof(buff), "%s/e-module-illume-indicator.edj",
+ il_ind_cfg->mod_dir);
+ edje_object_file_set(o, buff, "modules/illume-indicator/shelf");
+ }
+ evas_object_show(o);
+
+ e_drag_object_set(d, o);
+ e_drag_resize(d, w, h);
+ e_drag_start(d, iwin->drag.x, iwin->drag.y);
+ }
+}
+
static void
_il_ind_win_cb_menu_post(void *data, E_Menu *m)
{