Change pointer on begin/end move/resize.

SVN revision: 17412
This commit is contained in:
sebastid 2005-10-10 22:08:51 +00:00 committed by sebastid
parent 6d1ac231bf
commit 0a8ea88d99
1 changed files with 92 additions and 0 deletions

View File

@ -111,6 +111,11 @@ static int _e_border_cb_kill_timer(void *data);
static char *_e_border_winid_str_get(Ecore_X_Window win);
static void _e_border_app_change(void *data, E_App *app, E_App_Change change);
static void _e_border_pointer_resize_begin(E_Border *bd);
static void _e_border_pointer_resize_end(E_Border *bd);
static void _e_border_pointer_move_begin(E_Border *bd);
static void _e_border_pointer_move_end(E_Border *bd);
/* local subsystem globals */
static Evas_List *handlers = NULL;
@ -566,6 +571,7 @@ e_border_hide(E_Border *bd, int manage)
e_border_unfullscreen(bd);
if (bd->resize_mode != RESIZE_NONE)
{
_e_border_pointer_resize_end(bd);
bd->resize_mode = RESIZE_NONE;
_e_border_resize_end(bd);
}
@ -1936,6 +1942,7 @@ e_border_act_move_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev)
e_zone_flip_win_disable();
bd->moving = 1;
_e_border_pointer_move_begin(bd);
if (ev)
{
char source[256];
@ -1951,6 +1958,7 @@ e_border_act_move_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev)
{
if (!bd->moving) return;
bd->moving = 0;
_e_border_pointer_move_end(bd);
e_zone_flip_win_restore();
_e_border_move_end(bd);
e_zone_flip_coords_handle(bd->zone, -1, -1);
@ -1990,6 +1998,7 @@ e_border_act_resize_begin(E_Border *bd, Ecore_X_Event_Mouse_Button_Down *ev)
GRAV_SET(bd, ECORE_X_GRAVITY_NW);
}
}
_e_border_pointer_resize_begin(bd);
if (ev)
{
char source[256];
@ -2005,6 +2014,7 @@ e_border_act_resize_end(E_Border *bd, Ecore_X_Event_Mouse_Button_Up *ev)
{
if (bd->resize_mode != RESIZE_NONE)
{
_e_border_pointer_resize_end(bd);
bd->resize_mode = RESIZE_NONE;
_e_border_resize_end(bd);
bd->changes.reset_gravity = 1;
@ -2317,6 +2327,7 @@ e_border_signal_move_begin(E_Border *bd, char *sig, char *src)
{
if (!_e_border_move_begin(bd)) return;
bd->moving = 1;
_e_border_pointer_move_begin(bd);
e_zone_flip_win_disable();
_e_border_moveinfo_gather(bd, sig);
}
@ -2326,6 +2337,7 @@ e_border_signal_move_end(E_Border *bd, char *sig, char *src)
{
if (!bd->moving) return;
bd->moving = 0;
_e_border_pointer_move_end(bd);
e_zone_flip_win_restore();
_e_border_move_end(bd);
e_zone_flip_coords_handle(bd->zone, -1, -1);
@ -2387,6 +2399,7 @@ e_border_signal_resize_begin(E_Border *bd, char *dir, char *sig, char *src)
grav = ECORE_X_GRAVITY_E;
}
bd->resize_mode = resize_mode;
_e_border_pointer_resize_begin(bd);
_e_border_moveinfo_gather(bd, sig);
GRAV_SET(bd, grav);
}
@ -2396,6 +2409,7 @@ e_border_signal_resize_end(E_Border *bd, char *dir, char *sig, char *src)
{
if (bd->resize_mode == RESIZE_NONE) return;
_e_border_resize_handle(bd);
_e_border_pointer_resize_end(bd);
bd->resize_mode = RESIZE_NONE;
_e_border_resize_end(bd);
bd->changes.reset_gravity = 1;
@ -2653,6 +2667,8 @@ _e_border_del(E_Border *bd)
ecore_event_add(E_EVENT_BORDER_REMOVE, ev, _e_border_event_border_remove_free, NULL);
}
/* remove all pointers for this win. */
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, NULL);
e_container_border_remove(bd);
if (bd->parent)
{
@ -7180,3 +7196,79 @@ _e_border_app_change(void *data, E_App *app, E_App_Change change)
}
}
}
static void
_e_border_pointer_resize_begin(E_Border *bd)
{
switch (bd->resize_mode)
{
case RESIZE_TL:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_tl");
break;
case RESIZE_T:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_t");
break;
case RESIZE_TR:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_tr");
break;
case RESIZE_R:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_r");
break;
case RESIZE_BR:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_br");
break;
case RESIZE_B:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_b");
break;
case RESIZE_BL:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_bl");
break;
case RESIZE_L:
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "resize_l");
break;
}
}
static void
_e_border_pointer_resize_end(E_Border *bd)
{
switch (bd->resize_mode)
{
case RESIZE_TL:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_tl");
break;
case RESIZE_T:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_t");
break;
case RESIZE_TR:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_tr");
break;
case RESIZE_R:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_r");
break;
case RESIZE_BR:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_br");
break;
case RESIZE_B:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_b");
break;
case RESIZE_BL:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_bl");
break;
case RESIZE_L:
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "resize_l");
break;
}
}
static void
_e_border_pointer_move_begin(E_Border *bd)
{
e_pointer_type_push(bd->zone->container->manager->pointer, bd, "move");
}
static void
_e_border_pointer_move_end(E_Border *bd)
{
e_pointer_type_pop(bd->zone->container->manager->pointer, bd, "move");
}