int angle = 0;
char geometry[128];
int new_x = x;
+ int new_y = y;
+ int new_w = w;
+ int new_h = h;
+
+ E_Client *ips_ec = NULL;
+ Eina_List *l;
if (client_surface_ec)
{
client_surface_ec->e.state.rot.ang.curr :
client_surface_ec->e.state.rot.ang.next;
+ // find input panel
+ EINA_LIST_FOREACH(client_surface_ec->transients, l, ips_ec)
+ {
+ if (e_input_panel_client_find(ips_ec)) break;
+ }
+
LOGI("curr : %d, next : %d, angle : %d\n", client_surface_ec->e.state.rot.ang.curr,
- client_surface_ec->e.state.rot.ang.next, angle);
+ client_surface_ec->e.state.rot.ang.next, angle);
- if (!(e_input_panel_floating_mode_get()))
+ if (ips_ec && !(e_input_panel_floating_mode_get()))
{
- int client_y, client_w, client_h;
- e_client_base_output_resolution_desk_useful_geometry_get(client_surface_ec, &new_x, &client_y, &client_w, &client_h, EINA_TRUE);
+ if (e_client_transform_core_enable_get(ips_ec))
+ {
+ e_client_transform_core_input_inv_transform(ips_ec, x, y, &new_x, &new_y);
+ e_client_transform_core_input_inv_transform(ips_ec, w, h, &new_w, &new_h);
+ LOGI("input panel using transform. (%d, %d, %dx%d) -> (%d, %d, %dx%d)", x, y, w, h, new_x, new_y, new_w, new_h);
- if (angle == 0 || angle == 180)
- new_x = (client_w - w) / 2;
- else
- new_x = (client_h - w) / 2;
+ if (e_client_transform_core_enable_get(client_surface_ec))
+ {
+ e_client_transform_core_input_transform(client_surface_ec, new_x, new_y, &new_x, &new_y);
+ e_client_transform_core_input_transform(client_surface_ec, new_w, new_h, &new_w, &new_h);
+ LOGI("client_surface_ec using transform. (%d, %d, %dx%d) -> (%d, %d, %dx%d)", x, y, w, h, new_x, new_y, new_w, new_h);
+ }
+ }
}
+ else if (!ips_ec)
+ LOGI("couldn't find input panel client");
}
snprintf(geometry, sizeof(geometry), "%d,%d,%d,%d", new_x, y, w, h);