twm resize--

This commit is contained in:
Mike Blumenkrantz 2013-10-16 13:27:46 +01:00
parent 2ae2b042a2
commit a3e5eedd5c
1 changed files with 86 additions and 43 deletions

View File

@ -160,49 +160,61 @@ resize_text_update(E_Client *ec)
} }
evas_object_move(resize_text, x, y); evas_object_move(resize_text, x, y);
zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y); if (resize_rect[0])
if (!zone1) zone1 = ec->zone; {
zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y); zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y);
if (!zone2) zone2 = ec->zone; if (!zone1) zone1 = ec->zone;
if (zone1 == zone2) zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y);
x = zone1->x + zone1->w; if (!zone2) zone2 = ec->zone;
else if (zone1 == zone2)
x = zone2->x + zone2->w; x = zone1->x + zone1->w;
/* top */ else
evas_object_line_xy_set(resize_rect[0], zone1->x, ec->y, x, ec->y); x = zone2->x + zone2->w;
/* top */
evas_object_line_xy_set(resize_rect[0], zone1->x, ec->y, x, ec->y);
}
zone1 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y); if (resize_rect[1])
if (!zone1) zone1 = ec->zone; {
zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y + ec->h); zone1 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y);
if (!zone2) zone2 = ec->zone; if (!zone1) zone1 = ec->zone;
if (zone1 == zone2) zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y + ec->h);
y = zone1->y + zone1->h; if (!zone2) zone2 = ec->zone;
else if (zone1 == zone2)
y = zone2->y + zone2->h; y = zone1->y + zone1->h;
/* right */ else
evas_object_line_xy_set(resize_rect[1], ec->x + ec->w, zone1->y, ec->x + ec->w, y); y = zone2->y + zone2->h;
/* right */
evas_object_line_xy_set(resize_rect[1], ec->x + ec->w, zone1->y, ec->x + ec->w, y);
}
zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y + ec->h); if (resize_rect[2])
if (!zone1) zone1 = ec->zone; {
zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y + ec->h); zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y + ec->h);
if (!zone2) zone2 = ec->zone; if (!zone1) zone1 = ec->zone;
if (zone1 == zone2) zone2 = e_comp_zone_xy_get(ec->comp, ec->x + ec->w, ec->y + ec->h);
x = zone1->x + zone1->w; if (!zone2) zone2 = ec->zone;
else if (zone1 == zone2)
x = zone2->x + zone2->w; x = zone1->x + zone1->w;
/* bottom */ else
evas_object_line_xy_set(resize_rect[2], zone1->x, ec->y + ec->h, x, ec->y + ec->h); x = zone2->x + zone2->w;
/* bottom */
evas_object_line_xy_set(resize_rect[2], zone1->x, ec->y + ec->h, x, ec->y + ec->h);
}
zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y); if (resize_rect[3])
if (!zone1) zone1 = ec->zone; {
zone2 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y + ec->h); zone1 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y);
if (!zone2) zone2 = ec->zone; if (!zone1) zone1 = ec->zone;
if (zone1 == zone2) zone2 = e_comp_zone_xy_get(ec->comp, ec->x, ec->y + ec->h);
y = zone1->y + zone1->h; if (!zone2) zone2 = ec->zone;
else if (zone1 == zone2)
y = zone2->y + zone2->h; y = zone1->y + zone1->h;
/* left */ else
evas_object_line_xy_set(resize_rect[3], ec->x, zone1->y, ec->x, y); y = zone2->y + zone2->h;
/* left */
evas_object_line_xy_set(resize_rect[3], ec->x, zone1->y, ec->x, y);
}
} }
static Evas_Object * static Evas_Object *
@ -309,11 +321,41 @@ resize_begin(void *d EINA_UNUSED, E_Client *ec)
ec->layer_block = 1; ec->layer_block = 1;
evas_object_layer_set(ec->frame, E_LAYER_MENU + 1); evas_object_layer_set(ec->frame, E_LAYER_MENU + 1);
for (x = 0; x < 4; x++) switch (ec->resize_mode)
{ {
resize_rect[x] = line_add(ec->comp->evas); case E_POINTER_RESIZE_TL:
pulse(NULL, NULL, resize_rect[x]); resize_rect[0] = line_add(ec->comp->evas);
resize_rect[3] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_T:
resize_rect[0] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_TR:
resize_rect[0] = line_add(ec->comp->evas);
resize_rect[1] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_R:
resize_rect[1] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_BR:
resize_rect[1] = line_add(ec->comp->evas);
resize_rect[2] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_B:
resize_rect[2] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_BL:
resize_rect[2] = line_add(ec->comp->evas);
resize_rect[3] = line_add(ec->comp->evas);
break;
case E_POINTER_RESIZE_L:
resize_rect[3] = line_add(ec->comp->evas);
break;
default: break;
} }
for (x = 0; x < 4; x++)
if (resize_rect[x])
pulse(NULL, NULL, resize_rect[x]);
resize_text = text_add(ec->comp->evas); resize_text = text_add(ec->comp->evas);
resize_text_update(ec); resize_text_update(ec);
@ -333,6 +375,7 @@ resize_end(void *d EINA_UNUSED, E_Client *ec EINA_UNUSED)
efx_fade(resize_text, EFX_EFFECT_SPEED_DECELERATE, EFX_COLOR(0, 0, 0), 0, 0.3, NULL, NULL); efx_fade(resize_text, EFX_EFFECT_SPEED_DECELERATE, EFX_COLOR(0, 0, 0), 0, 0.3, NULL, NULL);
for (x = 0; x < 4; x++) for (x = 0; x < 4; x++)
{ {
if (!resize_rect[x]) continue;
efx_fade(resize_rect[x], EFX_EFFECT_SPEED_DECELERATE, EFX_COLOR(0, 0, 0), 0, 0.3, NULL, NULL); efx_fade(resize_rect[x], EFX_EFFECT_SPEED_DECELERATE, EFX_COLOR(0, 0, 0), 0, 0.3, NULL, NULL);
efx_queue_clear(resize_rect[x]); efx_queue_clear(resize_rect[x]);
} }