if (eina_list_count(target_list) > 0)
{
Eina_Bool res;
+ int i, ang;
if (top_win_angle == -1)
{
- DBG("Set top_win_angle: %d", angle);
- top_win_angle = cur_angle;
+ EINA_LIST_FOREACH_SAFE(target_list, l, ll, ec)
+ {
+ DBG("Find top most window angle");
+ // 1. check preferred
+ if (ec->e.state.rot.preferred_rot != -1)
+ {
+ EDBG(ec, "Set top_win_angle(preferred angle): %d", ec->e.state.rot.preferred_rot);
+ top_win_angle = ec->e.state.rot.preferred_rot;
+ break;
+ }
+
+ // 2. check available angle
+ for (i = 0; i < 4; i++)
+ {
+ ang = (cur_angle + (i * 90)) % 360;
+ if (e_client_rotation_is_available(ec, ang))
+ {
+ EDBG(ec, "Set top_win_angle: %d", ang);
+ top_win_angle = ang;
+ break;
+ }
+ }
+
+ if (top_win_angle == -1)
+ {
+ // 3. couldn't find available angle
+ EDBG(ec, "Cannot find any available angle. Set top_win_angle to 0");
+ top_win_angle = 0;
+ }
+
+ break;
+ }
}
angle = top_win_angle;