int landscape_x;
int landscape_y;
} start_position;
+
+ struct
+ {
+ int x;
+ int y;
+ } pending_position;
};
static E_Input_Panel *g_input_panel = NULL;
_e_input_panel_convert_floating_position(ec, sx, sy, &nx, &ny, E_INPUT_PANEL_COORDINATE_TYPE_LOGICAL);
}
+ LOGI("nx : %d, ny : %d", nx, ny);
e_client_util_move_without_frame(ec, nx, ny);
}
}
}
- if (!floating_ec || !floating_ips || !g_floating_info) return;
+ if (!floating_ec || !floating_ips)
+ {
+ LOGE("Failed to get floating client");
+ if (g_floating_info && e_text_input_activation_state_get())
+ {
+ g_floating_info->pending_position.x = x;
+ g_floating_info->pending_position.y = y;
+ }
+ return;
+ }
if (floating_ips->showing)
cur_angle = floating_ec->e.state.rot.ang.curr;
if (ips->ec->vkbd.floating == state) continue;
ips->ec->vkbd.floating = state;
if (ips->ec->vkbd.floating)
- e_policy_conformant_part_del(ips->ec);
+ {
+ e_policy_conformant_part_del(ips->ec);
+
+ if (e_text_input_activation_state_get() && g_floating_info &&
+ g_floating_info->pending_position.x >= 0 && g_floating_info->pending_position.y >= 0)
+ {
+ e_input_panel_floating_position_set(g_floating_info->pending_position.x, g_floating_info->pending_position.y);
+ }
+
+ e_input_panel_pending_position_reset();
+ }
else
- e_policy_conformant_part_add(ips->ec);
+ {
+ e_policy_conformant_part_add(ips->ec);
+ e_input_panel_pending_position_reset();
+ }
}
}
}
return ret;
}
+
+void e_input_panel_pending_position_reset(void)
+{
+ if (g_floating_info)
+ {
+ g_floating_info->pending_position.x = -1;
+ g_floating_info->pending_position.y = -1;
+ }
+}
\ No newline at end of file