Hook in a few callbacks, putting them in slowly but surely - just testing the water this time

SVN revision: 12873
This commit is contained in:
handyande 2005-01-10 22:24:23 +00:00 committed by handyande
parent 3ded7141ba
commit d93e8d14bb
2 changed files with 58 additions and 0 deletions

View File

@ -70,11 +70,17 @@ static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_border_event_border_resize_free(void *data, void *ev);
static void _e_border_event_border_move_free(void *data, void *ev);
/* local subsystem globals */
static Evas_List *handlers = NULL;
static Evas_List *borders = NULL;
static E_Border *focused = NULL;
int E_EVENT_BORDER_RESIZE = 0;
int E_EVENT_BORDER_MOVE = 0;
#define GRAV_SET(bd, grav) \
printf("GRAV TO %i\n", grav); \
ecore_x_window_gravity_set(bd->bg_win, grav); \
@ -102,6 +108,10 @@ e_border_init(void)
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _e_border_cb_window_focus_out, NULL));
handlers = evas_list_append(handlers, ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _e_border_cb_client_message, NULL));
ecore_x_passive_grab_replay_func_set(_e_border_cb_grab_replay, NULL);
E_EVENT_BORDER_RESIZE = ecore_event_type_new();
E_EVENT_BORDER_MOVE = ecore_event_type_new();
return 1;
}
@ -1594,6 +1604,7 @@ _e_border_cb_mouse_move(void *data, int type, void *event)
bd->mouse.current.my = ev->root.y;
if (bd->moving)
{
E_Event_Border_Move *pass;
int x, y, new_x, new_y;
Evas_List *skiplist = NULL;
@ -1620,10 +1631,20 @@ _e_border_cb_mouse_move(void *data, int type, void *event)
&new_x, &new_y);
evas_list_free(skiplist);
e_border_move(bd, new_x, new_y);
pass = calloc(1, sizeof(E_Event_Border_Move));
pass->border = bd;
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_MOVE, pass, _e_border_event_border_move_free, NULL);
}
else if (bd->resize_mode != RESIZE_NONE)
{
E_Event_Border_Resize *pass;
_e_border_resize_handle(bd);
pass = calloc(1, sizeof(E_Event_Border_Resize));
pass->border = bd;
e_object_ref(E_OBJECT(bd));
ecore_event_add(E_EVENT_BORDER_RESIZE, pass, _e_border_event_border_resize_free, NULL);
}
else
{
@ -2629,3 +2650,24 @@ _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi)
if (bd->sticky) e_border_unstick(bd);
else e_border_stick(bd);
}
static void
_e_border_event_border_resize_free(void *data, void *ev)
{
E_Event_Border_Resize *e;
e = ev;
e_object_unref(E_OBJECT(e->border));
free(e);
}
static void
_e_border_event_border_move_free(void *data, void *ev)
{
E_Event_Border_Resize *e;
e = ev;
e_object_unref(E_OBJECT(e->border));
free(e);
}

View File

@ -21,6 +21,9 @@ enum _E_Transition
};
typedef enum _E_Transition E_Transition;
typedef struct _E_Event_Border_Resize E_Event_Border_Resize;
typedef struct _E_Event_Border_Move E_Event_Border_Move;
struct _E_Border
{
E_Object e_obj_inherit;
@ -183,6 +186,16 @@ struct _E_Border
} changes;
};
struct _E_Event_Border_Resize
{
E_Border *border;
};
struct _E_Event_Border_Move
{
E_Border *border;
};
EAPI int e_border_init(void);
EAPI int e_border_shutdown(void);
@ -216,4 +229,7 @@ EAPI void e_border_idler_before(void);
EAPI void e_border_iconified_list(void);
extern EAPI int E_EVENT_BORDER_RESIZE;
extern EAPI int E_EVENT_BORDER_MOVE;
#endif