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;
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);
}
e_zone_flip_win_disable();
bd->moving = 1;
+ _e_border_pointer_move_begin(bd);
if (ev)
{
char source[256];
{
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);
GRAV_SET(bd, ECORE_X_GRAVITY_NW);
}
}
+ _e_border_pointer_resize_begin(bd);
if (ev)
{
char source[256];
{
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;
{
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);
}
{
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);
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);
}
{
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;
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)
{
}
}
}
+
+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");
+}