return master_rpc_async_request(handle, packet, 0, key_ret_cb, NULL);
}
-static int send_mouse_event(widget_h handle, const char *event, int x, int y)
+static int send_mouse_event(widget_h handle, const char *event, int x, int y, double ratio_w, double ratio_h)
{
struct packet *packet;
double timestamp;
timestamp = util_timestamp();
- packet = packet_create_noack(event, "ssdiii", handle->common->pkgname, handle->common->id, timestamp, x, y, INPUT_EVENT_SOURCE_VIEWER);
+ packet = packet_create_noack(event, "ssdiiidd", handle->common->pkgname, handle->common->id, timestamp, x, y, INPUT_EVENT_SOURCE_VIEWER, ratio_w, ratio_h);
if (!packet) {
ErrPrint("Failed to build param\n");
return WIDGET_ERROR_FAULT;
EAPI int widget_viewer_feed_mouse_event(widget_h handle, widget_mouse_event_type_e type, widget_mouse_event_info_s info)
{
- int w = 1;
- int h = 1;
unsigned int cmd;
if (!handle || handle->state != WIDGET_STATE_CREATE) {
if (flag) {
handle->common->gbar.x = info->x;
handle->common->gbar.y = info->y;
- w = handle->common->gbar.width;
- h = handle->common->gbar.height;
}
switch ((type & ~(WIDGET_MOUSE_EVENT_GBAR_MASK | WIDGET_MOUSE_EVENT_WIDGET_MASK))) {
if (flag) {
handle->common->widget.x = info->x;
handle->common->widget.y = info->y;
- w = handle->common->widget.width;
- h = handle->common->widget.height;
}
switch ((type & ~(WIDGET_MOUSE_EVENT_GBAR_MASK | WIDGET_MOUSE_EVENT_WIDGET_MASK))) {
return WIDGET_ERROR_INVALID_PARAMETER;
}
- return send_mouse_event(handle, (const char *)&cmd, info->x * w, info->y * h);
+ return send_mouse_event(handle, (const char *)&cmd, info->x, info->y, info->ratio_w, info->ratio_h);
}
EAPI int widget_viewer_feed_key_event(widget_h handle, widget_key_event_type_e type, widget_key_event_info_s info, widget_ret_cb cb, void *data)
int widget_width;
int widget_height;
+ int fixed_width;
+ int fixed_height;
widget_size_type_e size_type;
union {
if (s_info.conf.field.auto_feed) {
minfo.x = (double)data->down.geo.x;
minfo.y = (double)data->down.geo.y;
+ minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_SET, &minfo);
} else {
- minfo.x = (double)(down->canvas.x - data->down.geo.x) / (double)data->down.geo.w;
- minfo.y = (double)(down->canvas.y - data->down.geo.y) / (double)data->down.geo.h;
+ minfo.x = (double)(down->canvas.x - data->down.geo.x);
+ minfo.y = (double)(down->canvas.y - data->down.geo.y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_ENTER, &minfo);
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_DOWN, &minfo);
}
data->y = move->cur.canvas.y;
if (data->is.field.cancel_click != CANCEL_DISABLED || !s_info.conf.field.auto_feed) {
- minfo.x = (double)(move->cur.canvas.x - x) / (double)w;
- minfo.y = (double)(move->cur.canvas.y - y) / (double)h;
+ minfo.x = (double)(move->cur.canvas.x - x);
+ minfo.y = (double)(move->cur.canvas.y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
if (data->is.field.cancel_click == CANCEL_USER) {
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_ON_HOLD, &minfo);
* UNSET will subtract object.x and object.y by master
* so we just send original touch position based on screen
*/
- minfo.x = (double)up->canvas.x / (double)w;
- minfo.y = (double)up->canvas.y / (double)h;
+ minfo.x = (double)up->canvas.x;
+ minfo.y = (double)up->canvas.y;
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_UNSET, &minfo);
} else {
- minfo.x = (double)(up->canvas.x - x) / (double)w;
- minfo.y = (double)(up->canvas.y - y) / (double)h;
+ minfo.x = (double)(up->canvas.x - x);
+ minfo.y = (double)(up->canvas.y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
if (data->down.geo.x != x || data->down.geo.y != y || data->is.field.cancel_click == CANCEL_USER) {
widget_viewer_feed_mouse_event(data->handle, WIDGET_GBAR_MOUSE_ON_HOLD, &minfo);
if (s_info.conf.field.auto_feed && data->is.field.mouse_event) {
minfo.x = (double)data->down.geo.x;
minfo.y = (double)data->down.geo.y;
+ minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_SET, &minfo);
} else {
- minfo.x = (double)(data->x - data->down.geo.x) / (double)data->down.geo.w;
- minfo.y = (double)(data->y - data->down.geo.y) / (double)data->down.geo.h;
+ minfo.x = (double)(data->x - data->down.geo.x);
+ minfo.y = (double)(data->y - data->down.geo.y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_ENTER, &minfo);
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_DOWN, &minfo);
if (data->handle && !data->is.field.faulted) {
struct widget_mouse_event_info minfo;
- minfo.x = (double)(data->x - x) / (double)w;
- minfo.y = (double)(data->y - y) / (double)h;
+ minfo.x = (double)(data->x - x);
+ minfo.y = (double)(data->y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
* UNSET will subtract object.x and object.y by master
* so we just send original touch position based on screen
*/
- _minfo.x = (double)up->canvas.x / (double)data->down.geo.w;
- _minfo.y = (double)up->canvas.y / (double)data->down.geo.h;
+ _minfo.x = (double)up->canvas.x;
+ _minfo.y = (double)up->canvas.y;
+ DbgPrint("X,Y = %lfx%lf\n", _minfo.x, _minfo.y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ _minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ _minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
+ DbgPrint("Width: %d/%d - Height: %d/%d\n", data->fixed_width, data->down.geo.w, data->fixed_height, data->down.geo.h);
+ DbgPrint("Ratio: %lfx%lf\n", _minfo.ratio_w, _minfo.ratio_h);
+ } else {
+ _minfo.ratio_w = 1.0f;
+ _minfo.ratio_h = 1.0f;
+ DbgPrint("UNKNOWN Ratio: %lfx%lf\n", minfo.ratio_w, minfo.ratio_h);
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_UNSET, &_minfo);
} else {
if (!data->is.field.mouse_event) {
/* We have to keep the first position of touch down */
- minfo.x = (double)(data->down.x - x) / (double)w;
- minfo.y = (double)(data->down.y - y) / (double)h;
+ minfo.x = (double)(data->down.x - x);
+ minfo.y = (double)(data->down.y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
+
if (data->down.geo.x != x || data->down.geo.y != y || data->is.field.scroll_x || data->is.field.scroll_y || data->is.field.cancel_click == CANCEL_USER || abs(data->x - data->down.x) > CLICK_REGION || abs(data->y - data->down.y) > CLICK_REGION) {
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_ON_HOLD, &minfo);
data->is.field.cancel_click = CANCEL_PROCESSED;
}
}
+ DbgPrint("%lfx%lf (%lfx%lf)\n", minfo.x, minfo.y, minfo.ratio_w, minfo.ratio_h);
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_UP, &minfo);
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_LEAVE, &minfo);
}
evas_object_geometry_get(obj, &x, &y, &w, &h);
- minfo.x = (double)(data->x - x) / (double)w;
- minfo.y = (double)(data->y - y) / (double)h;
+ minfo.x = (double)(data->x - x);
+ minfo.y = (double)(data->y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_ON_HOLD, &minfo);
/*
evas_object_geometry_get(obj, &x, &y, &w, &h);
- minfo.x = (double)(data->x - x) / (double)w;
- minfo.y = (double)(data->y - y) / (double)h;
+ minfo.x = (double)(data->x - x);
+ minfo.y = (double)(data->y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_MOVE, &minfo);
}
evas_object_geometry_get(data->widget, &x, &y, &w, &h);
- minfo.x = (double)(data->x - x) / (double)w;
- minfo.y = (double)(data->y - y) / (double)h;
+ minfo.x = (double)(data->x - x);
+ minfo.y = (double)(data->y - y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
data->is.field.pressed = 0;
* UNSET will subtract object.x and object.y by master
* so we just send original touch position based on screen
*/
- minfo.x = (double)data->x / (double)data->down.geo.w;
- minfo.y = (double)data->y / (double)data->down.geo.h;
+ minfo.x = (double)data->x;
+ minfo.y = (double)data->y;
+ DbgPrint("X,Y = %lfx%lf\n", minfo.x, minfo.y);
+
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)data->down.geo.w;
+ minfo.ratio_h = (double)data->fixed_height / (double)data->down.geo.h;
+ DbgPrint("Width: %d/%d - Height: %d/%d\n", data->fixed_width, data->down.geo.w, data->fixed_height, data->down.geo.h);
+ DbgPrint("Ratio: %lfx%lf\n", minfo.ratio_w, minfo.ratio_h);
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ DbgPrint("UNKNOWN Ratio: %lfx%lf\n", minfo.ratio_w, minfo.ratio_h);
+ }
+
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_UNSET, &minfo);
} else {
if (!data->is.field.mouse_event) {
/* We have to keep the first position of touch down */
- minfo.x = (double)(data->down.x - x) / (double)w;
- minfo.y = (double)(data->down.y - y) / (double)h;
+ minfo.x = (double)(data->down.x - x);
+ minfo.y = (double)(data->down.y - y);
+ if (data->size_type != WIDGET_SIZE_TYPE_UNKNOWN) {
+ minfo.ratio_w = (double)data->fixed_width / (double)w;
+ minfo.ratio_h = (double)data->fixed_height / (double)h;
+ } else {
+ minfo.ratio_w = 1.0f;
+ minfo.ratio_h = 1.0f;
+ }
}
DbgPrint("%x\n", data->is.field.cancel_click);
data->is.field.cancel_click = CANCEL_PROCESSED;
}
+ DbgPrint("%lfx%lf (%lfx%lf)\n", minfo.x, minfo.y, minfo.ratio_w, minfo.ratio_h);
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_UP, &minfo);
widget_viewer_feed_mouse_event(data->handle, WIDGET_MOUSE_LEAVE, &minfo);
}
if (widget_service_get_size(type, &w, &h) < 0) {
ErrPrint("Failed to get box size\n");
}
+ data->fixed_width = w;
+ data->fixed_height = h;
+ } else {
+ if (widget_service_get_size(type, &data->fixed_width, &data->fixed_height) < 0) {
+ ErrPrint("Failed to get box size\n");
+ } else {
+ DbgPrint("Use the given size\n");
+ data->fixed_width = w;
+ data->fixed_width = h;
+ }
}
/**